当前位置: 代码迷 >> J2EE >> J2EE 13轨范(3)-Java Servlet
  详细解决方案

J2EE 13轨范(3)-Java Servlet

热度:70   发布时间:2016-04-17 23:28:10.0
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存入服务器。

2楼ZHOUCHAOQIANG昨天 15:55
Tomcat类似于一个中间组件,有点类似于目前MVC中的路由机制,tomcat也是根据url来截取项目的
1楼u010168160昨天 14:08
java中的一个重要的类
  相关解决方案