首页 > 代码库 > J2EE 13规范(3)-Java Servlet

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=http://www.mamicode.com/"查询学生">>     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存入服务器。

J2EE 13规范(3)-Java Servlet