zoukankan      html  css  js  c++  java
  • servlet的调用流程

    假设在login页面有一个form表单,表单的action="login"。则表单会提交到login路径。

     在xml映射中,/login对应的servlet类是LoginServlet,tomcat定位到loginservle后,发现并没有servlet实例存在,于是就调用Loginservlet的构造函数进行实例化对象。根据login.html提交对信息时带的method="post"来调用doPost方法

     运用request把对应信息提取后,设置了response对象。tomcat拿到被servlet修改过的response,根据这个response生成html字符串,然后返回给浏览器。

    在dopost和doget方法执行之前会先调用service()方法来判断接下来是调用dopost还是doget,



    转发response.sendRedirect("fail.html");

    重定向request.getRequestDispatcher("success.html").forward(request, response);

    的区别

    其中重定向地址栏改变并且请求两次并不保留第一次的数据

    而转发则地址栏改变请求一次保留第一次的数据



    有时候会需要tomcat'启动的时候就要执行一些初始化代码,比如校验数据库的完整性等,但是servlet的生命周期是在用户浏览器对应的路径开始的,但是如果没有用户的第一次访问就无法执行相关代码。这时候就需要servlet实现自启动,即伴随着tomcat的启动,自动启动初始化,在初始化方法init()中就可以进行一些代码的工作。

    import java.io.IOException;
    import java.util.Date;
    import javax.servlet.ServletConfig;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    public class HelloServlet extends HttpServlet{
    	
    	public void init(ServletConfig config){
    		System.out.println("init of Hello Servlet");
    	}
    
    	public void doGet(HttpServletRequest request, HttpServletResponse response){
    		
    		try {
    			response.getWriter().println("<h1>Hello Servlet!</h1>");
    			response.getWriter().println(new Date().toLocaleString());
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
    	
    }
    

      但是其xml映射中需要设置一行<load-on-startup>10</load-on-startup>,其中的10代表优先级。数字越小则优先级越高。

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app>
    
    	<servlet>
    		<servlet-name>HelloServlet</servlet-name>
    		<servlet-class>HelloServlet</servlet-class>
    		<load-on-startup>10</load-on-startup>
    	</servlet>
    
    	<servlet-mapping>
    		<servlet-name>HelloServlet</servlet-name>
    		<url-pattern>/hello</url-pattern>
    	</servlet-mapping>
    	
    	<servlet>
    		<servlet-name>LoginServlet</servlet-name>
    		<servlet-class>LoginServlet</servlet-class>
    	</servlet>
    
    	<servlet-mapping>
    		<servlet-name>LoginServlet</servlet-name>
    		<url-pattern>/login</url-pattern>
    	</servlet-mapping>	
    
    </web-app>
    

      



  • 相关阅读:
    【转】Math.Atan2 方法
    【转】Excel快捷键大全
    Tricks(四十七)—— 布尔矩阵(0-1矩阵)取反
    Tricks(四十七)—— 布尔矩阵(0-1矩阵)取反
    tensorflow 函数接口的理解
    tensorflow 函数接口的理解
    TensorFlow 学习(十一)—— 正则(regularizer)
    TensorFlow 学习(十一)—— 正则(regularizer)
    TensorFlow 需注意的细节问题
    TensorFlow 需注意的细节问题
  • 原文地址:https://www.cnblogs.com/tao7/p/12260226.html
Copyright © 2011-2022 走看看