映射细节
同一个Servlet,可以配置多个url-pattern.
资源通配符配置: *(任意个数的任意字符)
- /* 或则/system/*
/:随便一个字符,都可以访问当前Servlet.
/system/:所以以 /system/ 打头的资源名才可以访问该Servlet.(登陆验证) -
*.拓展名
*.itsource:资源名必须以.itsource结尾才可以访问当前Servlet.
配置Servlet的时候,不能起名为default.
在Tomcat中,主web.xml文件,规定了,访问静态资源都得通过default的Servlet.
Servlet对象的生命周期:
第一次访问的:
构造器--->init--->service
第N次:
service
在框架中,我们习惯给Servlet配置:
学习Struts1/SpringMVC的时候,优先启动该Servlet(该Servlet主要负责加载资源和初始化操作.)
Servlet3.0新特性-注解配置
从JavaEE6(Tomcat7,Servlet3.0)开始,可以使用注解来取代部分web.xml配置.
- 将web.xml文件的metadata-complete="true"修改为false.意思是扫描类上的WebServlet注解。(为true时不会扫描WebServlet)
-
在需要部署的类的声明的上面贴上@WebServlet()
-
Servlet的线程安全问题
每对应一个请求,服务器就会产生一个线程。然而servlet是单例的,只存在一个对象,多线程并发访问同一个资源时就会出现线程安全问题。
解决方案:
- 让Servlet实现javax.servlet.SingleThreadModel接口,这样同时就只能一个线程来访问(影响性能,不推荐)。
- 在servlet中不要使用成员变量(变量在方法体内,是局部变量。每一个线程来访问时都有与其对应的局部变量,就避免了线程安全问题)。
Comments | NOTHING