Servlet
来源:互联网 发布:阿里云 dns服务器地址 编辑:程序博客网 时间:2024/06/17 13:07
配置环境
除了JDK、Tomcat安装外,还要将Tomcat的lib中的servlet-api.jar配置到CLASSPATH中。
Servlet介绍
Servlet通常称为服务器端的小程序,运行在服务器端,用于处理及响应客户端的请求。
其为特殊的java类,必须继承HttpServlet。Servlet提供不同的方法用于响应客户端的请求,如doGet、doPost、doPut、doDelete等,大部分情况下,Servlet对所有请求的响应都是完全一样的,故只需重写service()方法即可。
另外,HttpServlet还包括两个方法(确切的说,HttpServlet的父类GenericServlet的两个方法)
- init(ServletConfig config) :创建Servlet实例时,初始化Servlet资源。
- destroy():销毁Servlet实例,自动调用该方法的回收资源。
一般无需重写这两个方法,除非需要在初始化Servlet时,完成某些资源初始化的方法,或者在Web启动时立即创建Servlet实例,即load-on-startup Servlet,可以重写init方法,注意应在第一行调用super.init(config)。如果需要在销毁Servlet之前,先完成某些资源的回收,比如关闭数据库连接等,才需要重写destroy方法。如下列实例,其与JSP编译完得到的源码基本一致,效果也相同。
package lee;import javax.servlet.http.*;import javax.servlet.*;import java.io.*;public class FirstServlet extends HttpServlet{ public void service(HttpServletRequest request,HttpServletResponse response) throws ServletException,java.io.IOException{ request.setCharacterEncoding("gb2312"); String name=request.getParameter("name"); String gender=request.getParameter("gender"); String[] color=request.getParameterValues("color"); String national=request.getParameter("country"); PrintStream out=new PrintStream(response.getOutputStream()); out.println("<html>"); out.println("<head>"); out.println("<title>Servlet测试</title>"); out.println("</head>"); out.println("<body>"); out.println("\t您的名字:"); out.print(name); out.println("<hr>"); out.println("\t您的性别:"); out.print(gender); out.println("<hr>"); out.println("\t您喜欢的颜色:"); for(String c:color) {out.println(c+" ");} out.println("<hr>"); out.println("\t您来自的国家:"); out.print(national); out.println("<hr>"); out.println("</body>"); out.println("</html>"); }}
Servlet的配置
将class文件放入classes文件夹中,然后配置web.xml,至少包括两部分:
- 配置Servlet的名字:
<servlet/>
- 配置Servlet的URL:
<servlet-mapping/>
如:
<servlet> <servlet-name>firstServlet</servlet-name> <servlet-class>lee.FirstServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>firstServlet</servlet-name> <url-pattern>/firstServlet</url-pattern> </servlet-mapping>
Servlet的生命周期
Servlet在容器中运行,其实例的创建和销毁都是由容器控制,创建Servlet实例的两个时机:
- 客户端第一次请求时,大部分都是该情况;
Web应用启动时创建,即 load-on-startup Servlet
每个Servlet都遵循如下生命周期,与JSP一致:
1、创建Servlet实例
2、Web容器调用init方法,对Servlet实例化
3、初始化后,一直存在于容器中,用于客户端的请求
4、Web容器决定销毁Servlet时,调用destroy方法,通常在关闭Web应用之时销毁Servlet
load-on-startup Servlet
应用启动时就创建Servlet,通常用于某后台服务。如:
package lee;import javax.servlet.http.*;import javax.servlet.*;import java.io.*;import java.util.Timer;import java.util.Date;import java.util.TimerTask;public class TimerServlet extends HttpServlet{ public void init(ServletConfig config) throws ServletException{ super.init(config); Timer timer = new Timer(); timer.schedule(new Task(), 1000,500); } private class Task extends TimerTask { public void run() { System.out.println("现在时间:"); System.out.println(new Date()); } }}
该servlet没有提供service方法,只是对init方法进行重写,表明其不响应用户的请求,故无需配置URL映射。web.xml的配置如:
<servlet> <servlet-name>timerServlet</servlet-name> <servlet-class>lee.TimerServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet>
整型值越小,优先实例化级别越高,1是最高级。
访问Servlet的配置参数
与JSP中的内置对象config一样,采用ServletConfig的getInitParameter(“paramName”),访问web.xml中配置的参数。Servlet配置参数使用init-param元素,如
<init-param> <param-name>user</param-name> <param-value>root</param-value> </init-param>
Servlet与JSP的区别
- Servlet中没有内置对象,必须由程序显示创建
- 对于静态HTML标签,Servlet必须使用页面输出流逐行输出。
总结:JSP是Servlet的一种简化,使用JSP只需要完成输出到客户端的内容,至于JSP脚本如何嵌入一个类中,由JSP容器完成。而Servlet则是完整的Java类,其中service用于生成对客户端的响应。
- Servlet
- servlet
- Servlet
- servlet
- Servlet
- servlet
- servlet
- Servlet
- Servlet
- servlet
- Servlet
- servlet
- servlet
- servlet
- Servlet
- servlet
- servlet
- servlet
- Ubuntu下如何找回 /var/log/messages
- 初学Kruskal——Prime
- iOS 使用MJRefresh刷新
- java基础
- springmvc 集成apache cxf 开发webservice 示例
- Servlet
- 【计蒜客】难题题库 003 判断质数
- 离队后的杂念
- OC语言-NSMutableArray为什么要用strong来修饰
- 212 Word Search II [Leetcode]
- python内建函数——类型转化函数
- 几种常见模式识别算法整理和总结
- hdu 2243(ac自动机+矩阵快速幂)
- js返回上一页并刷新的多种实现方法