drp——servlet
来源:互联网 发布:台湾人逛淘宝吗 编辑:程序博客网 时间:2024/05/02 01:30
一、Servlet容器、Servlet接口、Servlet实现类
客户端通过浏览器,以可以交互的Html页面,对Web服务器发送请求。Web应用程序发布、运行在服务器上。Web服务器通过调用Web应用中的服务(方法),实现客户请求。并通过Web服务器,返回响应结果。过程如下:
在.net,确实将应用程序发布在了IIS中。得以让用户进行访问。同样JavaWeb中也一样,Drp中Web服务器是Tomcat。以下针对JavaWeb应用进行讨论。
那Web服务器是如何调用Web应用程序的呢?——中介方Servlet接口。Servlet接口是一组标准,它规定了:
1.Web服务器可以访问任意一个Web应用中实现Servlet接口的类。
2.Web应用中被Web服务器调用的程序代码在Servlet接口的实现类中。
此时把发布、运行JavaWeb应用的Web服务器称为Servlet容器。以Tomcat作为Servlet容器为例:
二、Servlet接口
在Servlet中定义了5个方法。其中3个方法都由Servlet容器来调用。容器在Servlet的生命周期的不同阶段调用特定的方法。
1.init(ServletConfigconfig):负责初始化Servlet对象。容器在创建Servlet对象后,就会调用该方法。
2.service(ServletRequestreq,ServletResponse res):负责响应客户的请求,为客户提供响应服务。当容器接收到客户端要求访问特定Servlet对象的请求时,就会调用该Servlet对象的service()方法。
3.destory():负责释放Servlet对象占用的资源。当Servlet对象结束生命周期时,容器会调用此方法。
三、Servlet的生命周期
Servlet的生命周期也由Servlet容器来控制。Servlet的生命周期可以分为3个阶段。
1.初始化阶段
(1)加载Servlet类
(2)创建ServletConfig对象
(3)创建Servlet对象
(4)调用Servlet对象的init(ServletConfig config)方法。
2.运行阶段
这个阶段,Servlet随时响应客户端的请求。当Servlet容器接收到要求访问特定Servlet的客户请求时,Servlet容器会创建针对于这个请求的ServeltRequest,ServletResponse对象。然后调用响应Servlet对象的service()方法。Service()方法从ServletRequst对象中获得客户请求信息并处理该请求,在通过ServletResponse对象生成响应结果。当Servlet容器把Servlet生成的响应结果发送给客户,Servlet容器就会销毁ServletRequest对象和ServletResponse对象。
3.销毁阶段
当Web应用程序被终止时,Servlet容器会先调用Web应用中所有Servlet对象的Destory()方法。然后再销毁这些Servlet对象。
四、实例应用——根据日期范围查询学生
1.UML图分析
2.查询页面——query_student_con.jsp:
<%@ page language="java" contentType="text/html;charset=GBK"%><html><head><title>学生信息</title></head><body><form action="SearchStudentServlet" method="post">出生日期:<input type="text" name="beginDate">至<input type="text" name="endDate"><input type="submit" value="查询学生"></form></body></html>
结果页面——student_list.jsp:
<%@ page language="java" contentType="text/html;charset=GBK"%><%@ page import="java.util.*"%><%@ page import="java.text.*"%><%@ page import="com.bjpowernode.exam.model.*"%><%@ page import="com.bjpowernode.exam.manager.*"%><html><head><title>学生信息</title><style type="text/css"> /*表格宽度为1px,实线,黑色*/ table{ border:1px solid black; border-collapse:collapse; } td { border:1px solid black; border-collapse:collapse; } </style></head><body><table border="1"><tr><td>学生代码</td><td>姓名</td><td>性别</td><td>出生日期</td><td>联系电话</td><td>家庭住址</td><td>班级名称</td><td>年龄</td></tr><%//List<Student> studentList = (List)request.getAttribute("student_list");List<Student> studentList = (List)session.getAttribute("student_list");for (Iterator<Student> iter=studentList.iterator(); iter.hasNext();) {Student student = iter.next();%><tr><td><%=student.getStudentId()%></td><td><%=student.getStudentName()%></td><td><%=student.getSex()%></td><td><%=new SimpleDateFormat("yyyy-MM-dd").format(student.getBirthday())%></td><td><%=student.getContactTel()%></td><td><%=student.getAddress()%></td><td><%=student.getClasses().getClassesName()%></td><%long b = 1000L*60L*60L*24L*365L;long a = System.currentTimeMillis() - student.getBirthday().getTime();%><td><%=a/b%></td></tr><%}%></table></body></html>
3.Web.xml配置
<?xml version="1.0" encoding="ISO-8859-1"?><web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"><servlet><servlet-name>SearchStudentServlet</servlet-name><servlet-class>SearchStudentServlet</servlet-class></servlet><servlet-mapping><servlet-name>SearchStudentServlet</servlet-name><url-pattern>/SearchStudentServlet</url-pattern></servlet-mapping></web-app>
4.servlet代码
import java.text.*;import java.util.*;import java.io.*;import javax.servlet.http.*;import javax.servlet.*;import com.bjpowernode.exam.model.*;import com.bjpowernode.exam.manager.*;public class SearchStudentServlet 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 {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(); } StudentManager studentManager = new StudentManagerImpl();List<Student> studentList = studentManager.findStudentList(beginDate, endDate);//将studentList放到session中HttpSession session = request.getSession();session.setAttribute("student_list", studentList);//重定向,不会共享requestresponse.sendRedirect(request.getContextPath() + "/student_list.jsp");}}
总结:
通过以上介绍、实例,明白了Servlet容器、Servlet接口、Servlet之间的关系。它们更像是餐馆招聘服务员。餐馆就是Servlet容器,Servlet接口就是中介,Servlet就是等待上岗的钟点工。餐馆需要钟点工上菜、布菜、刷盘子。钟点工在中介登记了可以做什么样的工作,这样餐馆只需要告诉中介自己需要什么样的人就可以了。
- drp——servlet
- 【DRP】——servlet
- 【DRP】——JSP+servlet
- DRP——Servlet(一)
- Java Drp项目实战——Servlet
- Java Drp项目实战——Servlet
- DRP(一)——servlet小例子
- DRP(二)——Servlet解析
- 【DRP学习总结】——初探servlet
- 【DRP分销资源计划】——servlet
- DRP之旅(1)——Servlet初探
- DRP(三)——Servlet请求转发
- DRP(四)——线程安全的Servlet
- DRP总结—JSP+Servlet+JSTL简单介绍
- 【DRP】servlet
- drp—包含
- DRP之Servlet
- 【drp 9】Servlet生命周期
- 程序员的出路之一
- Association Rules--Apriori Algorithm
- 常用资源整理
- 对象外道道指令程序实例
- uva 1076 - Password Suspects(AC自动机+记忆化搜索)
- drp——servlet
- 【14/9/5】与运行环境交互
- objcpy,objdump,readelf,nm
- Python模块:生成随机数模块random
- 浴火重生!1799元魅族MX4全面评测
- 面对对象4【抽象abstract】【接口interface】【多态】【instanceof关键字】【Object类】
- Stone(博弈)
- Hdu 4969 Just a Joke (简单积分)
- PAT 1078. Hashing