您的位置:首页 > 编程语言 > Java开发

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);
}

}


测试结果

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  servlet java tomacat