Servlet的执行原理(XML)、生命周期和注解配置
ServletServlet 概念:运行在服务器端的小程序Servlet就是一个接口,定义了Java类被浏览器访问到(tomcat识别)的规则。将来我们自定义一个类,实现Servlet接口,复写方法。一、XML执行原理当服务器接受到客户端浏览器的请求后,会解析请求URL路径,获取访问的Servlet的资源路径 (图中的 /demo1 就是资源路径)查找web.xml文件,是否有对应的标签体内容。如
·
Servlet
- Servlet 概念:运行在服务器端的小程序
- Servlet就是一个接口,定义了Java类被浏览器访问到(tomcat识别)的规则。
- 将来我们自定义一个类,实现Servlet接口,复写方法。
一、XML执行原理
-
当服务器接受到客户端浏览器的请求后,会解析请求URL路径,获取访问的Servlet的资源路径 (图中的 /demo1 就是资源路径)
-
查找web.xml文件,是否有对应的标签体内容。
-
如果有,则在找到对应的全类名 (图中的demo1)
-
tomcat会将字节码文件加载进内存,并且创建其对象
-
调用service其方法
二、生命周期
Servlet 需要实现5个方法
- 1 初始化:servlet 被创建时候执行, 执行一次
@Override
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println("init....");
}
-
2 在XML中的 init :Servlet什么时候创建 :
① 下边负数代表访问servlet时候创建(默认)
②.正数代表服务器启动时创建
<load-on-startup>-5</load-on-startup>
- 获取的是servlet的配置对象
@Override
public ServletConfig getServletConfig() {
return null;
}
- 提供服务的方法,servlet被访问时候执行,访问一次执行一次,比如页面刷新一次就执行一次
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("service......");
}
- 获取servlet的信息如:版本、作者…
@Override
public String getServletInfo(){
return null;
}
- 服务器被关闭时候执行,也是执行一次
@Override
public void destroy() {
System.out.println("destroy....");
}
注:如果服务器不是正常关闭,这个方法不会执行,并且在Servlet销毁之前执行,毕竟要是Servlet被销毁了,这个方法也就执行不了了。
三、注解配置
- WebServlet 内容
@Target({ElementType.TYPE}) //允许类使用
@Retention(RetentionPolicy.RUNTIME) //类加载中
@Documented //可以制作文档
public @interface WebServlet {
String name() default "";//相当于<Servlet-name>
String[] value() default {};//代表urlPatterns()属性配置
String[] urlPatterns() default {};//相当于<url-pattern>
int loadOnStartup() default -1;//相当于<load-on-startup>
WebInitParam[] initParams() default {};
boolean asyncSupported() default false;
String smallIcon() default "";
String largeIcon() default "";
String description() default "";
String displayName() default "";
}
- 实现
直接放到类上,传入的参数 相当于 value = “/demo” ,value省略,传的 /demo 就是资源路径。
@WebServlet("/demo")
public class demo implements Servlet {}
- 好处就是省略了一堆XML配置,但是JavaEE项目,要选择Servlet的版本3.0以上的才行。
更多推荐
所有评论(0)