【j2ee】Servlet的总结和实践

一、摘要

         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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值