目录
- Servlet映射细节
- Servlet3.0新特性-注解配置
- Servlet线程不安全问题
跳转到目录
- 一个Servlet可以有多个
(可以使用多个资源名称找到当前的Servlet), 也可以有多个
- 配置Servlet可以使用通配符( * ) * : 表示任意字符 /* :可以使用任意的字符访问当前的Servlet /xxx/* : xxx表示一个模块,/system/* (登陆验证) *.拓展名: 请求的资源必须以.zy结尾才能访问Servlet
- 自定义的Servlet的<servlet-name>不能够为default,使用它会造成项目下面的静态资源找不到;在Tomcat/conf/web.xml文件中配置一个名字为default的Servlet,该Servlet在负责访问项目下的静态资源
跳转到目录 一、传统的使用XML做Servlet配置
secondServlet
com.sunny._01_servlet.MyServlet2
encoding
UTF-8
secondServlet
/MyServlet2
问题: 在一个应用中存在很多Servlet,那么配置文件就会非常臃肿,开发效率低,不便于后期的维护. 解决方案: 在Tomcat7开始, 可以使用 注解(WebServlet) 来取代XML配置.
二、使用注解(WebServlet)做Servlet配置
- 使用注解配置Servlet的步骤:
- 在Servlet类上贴
@WebServlet
注解// m1就表示资源名称 @WebServlet("/m1")
- 在web.xml文件中进行如下的配置 metadata-complete=“true”:表示是否忽略Servlet上面的注解 metadata-complete="false"表示是否不忽略Servlet上面的注解, 缺省值
- 如何在注解中配置Servlet参数
@WebServlet(value = "/m1", initParams = { @WebInitParam(name = "encoding", value = "UTF-8"), @WebInitParam(name = "name", value = "gzy") } )
三、Web.xml和配置注解的选择
- 配置Web.xml
- 优点: 配置清晰直观,因为和Java代码分离,维护性高.
- 缺点: 在Web.xml中配置很多Servlet造成文件臃肿,维护性低
- 注解
- 优点: 开发效率高,方便快速定位
- 缺点: 与Java代码耦合在一起,维护性低.
- 如何选择:
- 在开发中, XML文件用于做通用配置,个别配置使用注解.
重点
)
跳转到目录
- Servlet的线程不安全问题 根本原因: Servlet是单例的, Servlet中的非static的成员变量只有一份,多个客户端好比是多个线程,都访问的是同一空间.
- 解决方案
- 在Servlet中不要使用成员变量, 使用局部变量,每一个用户,每次请求都会调用service方法,而局部变量在service方法中,每一次访问都是新的空间.