Servlet详解

简介: Servlet的全称server applet  servlet是一种动态资源.1.servlet干什么用的?   处理请求,生成响应.2.我们如何创建一个Servlet呢?实现servlet接口即可.

Servlet的全称server applet

  servlet是一种动态资源.

1.servlet干什么用的?
  处理请求,生成响应.

2.我们如何创建一个Servlet呢?

  • 实现servlet接口即可.
  • 继承javax.servlet.GenericServlet
  • 继承javax.servlet.http.HttpServlet

3.Servlet中的其他方法.

  • getServletInfo     获得servlet的信息(版本,作者,版权..),没用.
  • getServletConfig   返回servletConfig对象.

4.ServletConfig对象是什么?
封装了servlet在web.xml中的配置.
方法:

  • getServletName    获得配置文件中 <servlet-name> 元素的内容
  • getInitParameter    根据 <init-param>中的 <param-name> 获得 </param-value>
1 <init-param>
2   <param-name>name</param-name>
3   <param-value>tom</param-value>
4 </init-param>
  • getInitParameterNames 返回所有<param-name> .
  • getServletContext 返回一个ServletContext

5.其他实现server的方式
GenericServlet:

  • 保管ServletConfig对象
  • 实现了ServletConfig接口    为调用方便

  注意: 不要重写servlet接口中的 init方法. 不然第一步优化就白做了. 我们要做初始化的动作,需要去重写GenericServlet提供的空参init方法.

HTTPServlet:
  1.因为我们web项目基于HTTP协议,所以Service方法中传过来的request,response对象都是基于HTTP协议的. 也就是HttpServletReueqst,也就是HttpServletResponse. 它帮我们进行了强转.
  2.我们有可能在不同的请求方式时做不同的事情. 根据请求方式不同,调用不同的方法
     例如GET请求会调用doGet()方法,POST请求会调用doPost()方法;

6.Servlet中的其他细节

  • 关于Servlet线程安全问题!

  因为在servlet运行期间只有一个servlet实例存在.可能会同时处理多个请求.那么我们在servlet中声明成员变量来存储用户数据是有线程安全问题的.我们应该如何解决呢?

第一中是实现SigleThreadModel (不推荐了!),第二种是使用局部变量保存用户数据.(推荐使用!)

  • 关于servlet随着项目的启动而创建

      使用<load-on-startup>配置来实现.
  例如:

1 <servlet>
2     <servlet-name>AServlet</servlet-name>
3     <servlet-class>cn.itcast.servlet.hello.AServlet</servlet-class>
4     <load-on-startup>3</load-on-startup>
5 </servlet>

填写一个整数,整数越小优先级越高.如果优先级一样,启动顺序按照配置顺序.

  • 关于Servlet路径配置问题详解

      <url-pattern>
        路径匹配:
        /AServlet            http://localhost:8080/Day07-servlet/AServlet
        /ABC/AServlet         http://localhost:8080/Day07-servlet/ABC/AServlet
        /ABC/ABC/AServlet     http://localhost:8080/Day07-servlet/ABC/ABC/AServlet
        /ABC/ABC/*        http://localhost:8080/Day07-servlet/ABC/ABC/oasdojasdjioasd
        /*               http://localhost:8080/Day07-servlet/asdiojoiajsidojoasd
        /                 /*
后缀名匹配:
*.do ==> struts
*.action ==> struts2
*.html ==>
注意:1.关于路径,配置的路径匹配范围越大优先级越低. 2.两种匹配模式不能混用. 例如错误的例子: /*.do

目录
相关文章
|
Java 应用服务中间件 Maven
Servlet初识—编写hello world+使用smart Tomcat插件部署(二)
Servlet初识—编写hello world+使用smart Tomcat插件部署
1055 0
Servlet初识—编写hello world+使用smart Tomcat插件部署(二)
|
SQL 算法 关系型数据库
Mysql关键字执行顺序-深入解析
Mysql关键字执行顺序-深入解析
1933 0
Mysql关键字执行顺序-深入解析
|
Java
SpringBoot实现文件上传接口
文件上传是很多业务场景需要实现的功能,今天就简单以Springboot框架为基础实现文件上传的接口。
2597 0
SpringBoot实现文件上传接口
|
5月前
|
机器学习/深度学习 人工智能 编解码
AI-Compass LLM合集-多模态模块:30+前沿大模型技术生态,涵盖GPT-4V、Gemini Vision等国际领先与通义千问VL等国产优秀模型
AI-Compass LLM合集-多模态模块:30+前沿大模型技术生态,涵盖GPT-4V、Gemini Vision等国际领先与通义千问VL等国产优秀模型
AI-Compass LLM合集-多模态模块:30+前沿大模型技术生态,涵盖GPT-4V、Gemini Vision等国际领先与通义千问VL等国产优秀模型
|
12月前
|
人工智能 小程序 UED
【一步步开发AI运动小程序】十六、AI运动识别中,如何判断人体站位?
【云智AI运动识别小程序插件】提供人体、运动及姿态检测的AI能力,本地引擎无需后台支持,具备快速、体验好、易集成等优势。本文介绍如何利用插件的`camera-view`功能,通过检测人体站位视角(前、后、左、右),确保运动时的最佳识别率和用户体验。代码示例展示了如何实现视角检查,确保用户正或背对摄像头,为后续运动检测打下基础。
|
存储 安全 Java
SpringBoot异步任务获取HttpServletRequest
通过上述方法,我们可以在Spring Boot应用中的异步任务获取 `HttpServletRequest`,从而实现更为灵活和高效的异步处理逻辑。
777 64
|
安全 测试技术 API
API接口知识小结
本文介绍了应用程序接口(API)的基础知识,包括不同类型及其应用场景。首先概述了常见的HTTP请求方法,如GET用于查询信息,POST用于提交数据等。接着解释了同步与异步接口响应机制的区别,前者需等待响应,后者可立即处理下一个请求。此外,文中还探讨了API触发形式,例如分发接口用于主动推送更新,订阅接口则允许系统按需拉取数据。最后,文章列举了API的组成要素,如应用场景、参数定义及错误码,并强调了接口安全性和性能测试的重要性,确保API的稳定与安全运行。
|
安全 Java Spring
Spring Authorization Server 快速入门
Spring Authorization Server 快速入门
985 0
Spring Authorization Server 快速入门
|
算法 Java C++
branch and price求解VRPTW问题代码详解
branch and price求解VRPTW问题代码详解
874 0
branch and price求解VRPTW问题代码详解
|
IDE 定位技术 开发工具
Mac中IntelliJ IDEA每次打开立刻“意外退出”的解决方法
Mac中IntelliJ IDEA每次打开立刻“意外退出”的解决方法
673 1