【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秒显示系统的时间。





0 0
原创粉丝点击