【j2ee】Servlet的总结和实践
来源:互联网 发布:淘宝返利最高的软件 编辑:程序博客网 时间:2024/05/16 10:04
一、摘要
1、servlet的基本情况介绍(与JSP对比)。
2、servlet的用途。
3、servlet的生命周期(面试常考)。
4、servlet实例(例1——构建servlet类,获取JSP页面的请求并把响应返回到客户端。例2——load-on-startup Servlet例子,实现每隔5秒显示系统时间的功能)
二、什么是servlet?
Servlet是java编写的服务器端程序,用于动态扩展服务器端的程序,采用请求——响应模式提供web服务。(百度百科上说的比较简洁:servlet是在服务器上运行的小程序。)
三、servlet的用途
主要作用:用来处理客户端的请求。(采用的模式是:客户端请求——服务器接收请求并转至servlet——servlet根据客户端请求,生成响应并传给服务器——服务器将响应返回给客户端)
自从MVC规范出现以后,servlet的职责慢慢确定:仅仅作为控制器,不在扮演视图层的角色。
四、Servlet和JSP的区别
本质方面:JSP的本质就是servlet,开发人员把写好的JSP置于web容器,web容器最终会将JSP转换为servlet。
用途方面:在J2EE中,servlet作为一个java类,在java代码中输出HTML的美容,主要用于业务逻辑层,用于实现业务逻辑;JSP在HTML中嵌入java脚本,是为了实现表现层而设计的。(用途方面)
五、servlet生命周期
首先:servlet的生命周期不是由程序员控制,而是由web容器(如tomcat)控制的。
1、 创建机制
(1)客户第一次请求某个servlet时:系统创建servlet实例。
(2)web应用启动时:立即创建servlet实例(load-on-startup Servlet)。
2、生命周期
(1)创建servlet实例。
(2)web容器调用servlet的init()方法,对servlet进行初始化。
(3)servlet初始化之后,将一直存在,供客户端请求使用。
(4)关闭web应用的时候(通常情况下),web容器调用servlet的destroy()方法,销毁servlet。
六、servlet实例
例1:
1、程序目录:
servlet类:FirstServlet.java
配置文件:web.xml
资源jar包:servlet-api.jar(位于tomcat的lib文件夹下,如果使用Annotion来配置servlet的话,需要使用tomcat7及以上版本的servlet-api.jar包)
辅助JSP文件:index.jsp(用来给sevelet传数据)
2、FirstServlet.java
package ygy;import javax.servlet.*;import javax.servlet.http.*;//import javax.servlet.annotation.*;import java.io.*;//@WebServlet(name = "firstServlet", urlPatterns = { "/firstServlet" })public class FirstServlet extends HttpServlet{private static final long serialVersionUID = 1L;//客户端的响应方法,使用该方法可以响应客户端所有类型的请求public void service(HttpServletRequest request,HttpServletResponse response) throws ServletException,java.io.IOException{//设置解码方式request.setCharacterEncoding("GBK");response.setContentType("text/html;charSet=GBK");//获取name的请求参数值String name = request.getParameter("name");String gender = request.getParameter("gender");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("您的名字:" + name + "<hr/>");out.println("您的性别:" + gender + "<hr/>");out.println("您来自的国家:" + national + "<hr/>");out.println("</body>");out.println("</html>");}}
3、web.xml
<?xml version="1.0"encoding="GBK"?><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"> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>firstServlet</servlet-name> <servlet-class>ygy.FirstServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>firstServlet</servlet-name> <url-pattern>/aa</url-pattern> </servlet-mapping> </web-app>
4、index.jsp(用来代替myeclipse创建web工程后自动生成的index.jsp文件即可)
<%@ page language="java"import="java.util.*" pageEncoding="GBK"%><% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";%> <!DOCTYPE HTML PUBLIC "-//W3C//DTDHTML 4.01 Transitional//EN"><html> <head> <base href="<%=basePath%>"> <title>My JSP'index.jsp' starting page</title> <meta http-equiv="pragma"content="no-cache"> <meta http-equiv="cache-control"content="no-cache"> <meta http-equiv="expires"content="0"> <meta http-equiv="keywords"content="keyword1,keyword2,keyword3"> <meta http-equiv="description"content="This is my page"> </head> <body> <form id="form1"method="post" action="/Servlet/aa"> 用户名: <br /> <input type="text"name="name"> <hr /> 性别: <br /> 男: <input type="radio"name="gender" value="男"> 女: <input type="radio"name="gender" value="女"> <hr /> 来自的国家: <br /> <select name="country"> <option value="中国"> 中国 </option> <option value="美国"> 美国 </option> <option value="俄罗斯"> 俄罗斯 </option> </select> <hr /> <input type="submit"value="提交"> <input type="reset"value="重置"> </form> </body></html>
5、运行效果(作者web项目名称为Servlet)
打开浏览器,输入http://localhost:8080/Servlet 进入表单填写页面;
填写好后,点击提交,页面将转换到http://localhost:8080/Servlet/aa,显示的就是FirstServlet.java中的servlet类。
例2:
1、程序目录:
servlet类: Load_on_startup.java
配置文件:web.xml
资源jar包:servlet-api.jar(位于tomcat的lib文件夹下,如果使用Annotion来配置servlet的话,需要使用tomcat7及以上版本的servlet-api.jar包)
2、Load_on_startup.java
package ygy; import javax.servlet.http.*;import javax.servlet.*;import javax.servlet.annotation.*; import javax.swing.*;import java.awt.event.*;import java.util.Date; @WebServlet(loadOnStartup = 1)public class Load_on_startup extends HttpServlet { private static final long serialVersionUID = 1L; public void init(ServletConfig config) throws ServletException { super.init(config); //其作用是每隔5秒在Console窗口中显示系统时间,只要web项目启动,就开始运行。 Timer timer = new Timer(5000, new ActionListener() { public void actionPerformed(ActionEvent e) { System.out.println(new Date()); } }); timer.start(); }}
3、web.xml
<?xml version="1.0"encoding="GBK"?><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"> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>load_on_startup</servlet-name> <servlet-class>ygy.Load_on_startup</servlet-class> <load-on-startup>1</load-on-startup> </servlet> </web-app>5、运行效果
在console控制台,每隔5秒显示系统的时间。
- 【j2ee】Servlet的总结和实践
- 简单的J2EE(五)Servlet和Jsp
- j2ee中 servlet和tomcat的关系
- J2EE核心技术--JSP和Servlet
- J2EE企业应用:Applet和Servlet的通信
- J2EE企业应用:Applet和Servlet的通信
- [j2ee][servlet]out.print和out.write的区别
- [J2EE][SERVLET]OUT.PRINT和OUT.WRITE的区别
- J2EE HTTP的请求和响应原理,servlet处理原理
- J2EE:servlet request常用方法总结
- J2EE:servlet response常用方法总结
- J2EE架构的6个最佳实践--利用高级J2EE最佳实践来改善现有和将来的J2EE应用程序的架构和设计
- J2EE架构的6个最佳实践--利用高级J2EE最佳实践来改善现有和将来的J2EE应用程序的架构和设计
- J2EE架构的最佳实践
- 最重要的J2EE最佳实践
- Servlet的最佳实践
- atitit.j2ee 1.5 1.6 的不同跟 Servlet 3.0新特性总结
- 队列和栈的总结和实践
- select, poll, epoll详解(一)
- linux中线程的挂起与恢复(进程暂停)
- 关于ios程序的后台运行
- Android Dialer,Mms,Contacts源码修改笔记
- UVa 1326 - Jurassic Remains
- 【j2ee】Servlet的总结和实践
- 变量声明和定义的区别
- UIView与CALayer的区别
- MySQL 学习笔记一
- 容我缓一缓
- Vmvare nat模式 WinXP上网
- Java时间和日期类型的Hibernate映射类型
- Java多线程之-----实现自己的ThreadFactory
- 收藏博文