Servlet生命周期,Servlet3.0使用注解自动加载
2016-04-23 17:06
666 查看
servlet生命周期
servlet生命周期
0,调用构造方法
构造方法获得一个Servlet实例。
1,调用初始化方法init();
整个生命周期中,init()方法只被调用一次。
2,调用service决定使用doGet()还是doPost()
3,调用销毁destroy()方法
关闭服务器时执行销毁方法。
举个栗子
1,jsp文件
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head> <body> <h1>Servlet生命周期œŸ</h1> <hr> <a href="YourServlet">以Get方式调用‚</a> </body> </html>
2,servlet文件
package Servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class YourServlet */ @WebServlet("/YourServlet") public class YourServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public YourServlet() { System.out.println("调用构造方法"); } /** * @see Servlet#init(ServletConfig) */ public void init(ServletConfig config) throws ServletException { System.out.println("调用初始化方法"); } /** * @see Servlet#destroy() */ public void destroy() { System.out.println("调用销毁方法"); } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out=response.getWriter(); out.print("hello servlet"); System.out.println("调用Get方法"); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
3,run on server
点击超链接,以Get方式请求服务器
控制台输出
停止服务器
Servlet3.0使用注解实现自动加载
Servlet3.0 不再需要web.xml文件,可以利用注解代替web.xml的注册功能。Tomcat7及以上支持Servlet3.0。(1)YourServlet.java
设置其自动加载顺序为为1
@WebServlet(name="YourServlet",urlPatterns = "/YourServlet",loadOnStartup=1)
package Servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class YourServlet */ @WebServlet(name="YourServlet",urlPatterns = "/YourServlet",loadOnStartup=1) public class YourServlet extends HttpServlet { /** * @see HttpServlet#HttpServlet() */ public YourServlet() { System.out.println("调用构造方法1"); } /** * @see Servlet#init(ServletConfig) */ public void init(ServletConfig config) throws ServletException { System.out.println("调用初始化方法1"); } /** * @see Servlet#destroy() */ public void destroy() { System.out.println("调用销毁方法1"); } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out=response.getWriter(); out.print("hello servlet"); System.out.println("调用Get方法"); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
(2)MyServlet.java
设置其自动加载顺序为为2
@WebServlet(name="MyServlet",urlPatterns="/MyServlet",loadOnStartup=2)
package Servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class MyServlet */ @WebServlet(name="MyServlet",urlPatterns="/MyServlet",loadOnStartup=2) public class MyServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public MyServlet() { System.out.println("调用构造方法2"); } @Override public void init() throws ServletException { System.out.println("调用初始化方法2"); } @Override public void destroy() { System.out.println("调用销毁方法2"); } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse * response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub response.getWriter().append("Served at: ").append(request.getContextPath()); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse * response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } }
测试结果
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序