zoukankan      html  css  js  c++  java
  • J2EE 13规范(3)-Java Servlet

       Servlet简介

       一个servlet就是Java编程语言中的一个类,它被用来扩展服务器的性能,服务器上驻留着可以通过“请求-响应”编程模型来访问的应用程序。虽然servlet可以对任何类型的请求产生响应,但通常只用来扩展Web服务器的应用程序。Java Servlet技术为这些应用程序定义了一个特定于HTTP的 servlet类。
       javax.servlet和javax.servlet.http包为编写servlet提供了接口和类。所有的servlet都必须实现Servlet接口,该接口定义了生命周期方法。
    当实现一个通用的服务时,您可以使用或扩展由Java Servlet API提供的GenericServlet类。HttpServlet类提供了一些方法,诸如doGet和doPost,以用于处理特定于HTTP的服务。

       Servlet工作流程

       

        在Web容器(这里的容器我们使用的是TomCat服务器)加载和实例化servlet类之后、servlet实例传递来自客户端的请求之前,TomCat容器对servlet进行初始化。用户可以自定义这个初始化过程,以允许servlet读持久的配置数据、初始化资源,并且忽略Servlet接口的init方法以执行任何其它的一次性的活动。servlet必须使用UnavailableException来完成初始化过程。请看Java代码:  

    import java.text.*;
    import java.util.*;
    import java.io.*;
    import javax.servlet.http.*;
    import javax.servlet.*;
    
    
    public class StudentServlet extends HttpServlet{
    	
    	public void doGet(HttpServletRequest request,HttpServletResponse response)
    	throws ServletException,IOException{
    		doPost(request,response);
    		}
    		public void doPost(HttpServletRequest request,HttpServletResponse response)
    	throws ServletException,IOException{
    		doGet(request,response);
    		
    		    String sBeginDate = request.getParameter("beginDate");
    	      String sEndDate = request.getParameter("endDate");
    	      
    	      
    	      Date beginDate =  new Date();
    	      Date endDate =  new Date();
    	      try{
    	      beginDate = new SimpleDateFormat("yyyy-MM-dd").parse(sBeginDate);
            endDate =  new SimpleDateFormat("yyyy-MM-dd").parse(sEndDate);
          }catch(Exception e){
          	e.printStackTrace();
          	}
            
            System.out.println("sBeginDate=" + sBeginDate);
            System.out.println("sEndDate=" + sEndDate);
    		}
    		
    	}
        实例解析:

       HTML代码:

    <html>
    	<head>
    		<title>学生管理</title>
    		</head>
    	<body>
    		<h1>根据出生日期段查询</h1>
    		<form action="queryStudentServlet">
    		出生日期:<input type="text" name="beginDate">至<input type="text" name="endDate">
    		<input type="submit" value="查询学生">
    		</form>
    		</body>
    	</html>
         web.xml

    <?xml version="1.0" encoding="ISO-8859-1"?>
    
    <web-app xmlns="http://java.sun.com/xml/ns/javaee"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                          http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
      version="3.0">
    
        <servlet>
    		<servlet-name>StudentMgrServlet</servlet-name>
    		<servlet-class>StudentServlet</servlet-class>
    		
    	</servlet>
    	<servlet-mapping>
    		<servlet-name>StudentMgrServlet</servlet-name>
    		<url-pattern>/queryStudentServlet</url-pattern>
    	</servlet-mapping>
    </web-app>
    
        Servlet生命周期

        生命的全过程,加载Servlet并实例化,初始化init,处理请求,退出服务。

        

       注意:Servlet只实例化一次,init方法也只执行一次,Servlet不是线程安全的。

       最后还有一点关于Cookies和Session的说明: Cookies存到自身客户端中,但是Session存入服务器。

  • 相关阅读:
    使用RecyclerView打造Gallery
    Retrofit简介与使用方法(翻译)
    迷宫实现递归版本C++
    牛客笔试题
    牛客笔试题---求最长重复词长度之和
    C++句柄解析
    C++双向循环链表实现
    String C++完整实现。
    String写时拷贝实现
    顺序表操作补充(查找方法增加)
  • 原文地址:https://www.cnblogs.com/xzpblog/p/5117955.html
Copyright © 2011-2022 走看看