/ 知识库     / 试卷库

使用Servlet

一、Servlet简介

Servlet是Java Web应用程序中的组件技术,是运行在服务器端的Java应用程序,实现与JSP类似的功能,Servlet本身是一个Java类,可以动态地扩展服务器的能力。

Web服务器上执行JSP文件的时候,首先JSP 容器会将其转译为Servlet文件,并自动编译解释执行。JSP中使用到的所有对象都将被转换为Servlet,然后被执行。 

Servlet接收来自客户端的请求,将处理结果返回给客户端。 

二、Servlet与JSP的区别

编程方式不同:Servlet是按照Java规范编写的Java程序,JSP是按照Web规范编写的脚本语言。

编译方式不同:Servlet每次修改后需要编译后才能运行,JSP是被JSP Container编译为Servlet文件。 

运行速度不同:由于一个JSP页面在第一次被访问时要被编译成Servlet需要一段时间,所以客户端得到响应所需要的时间比较长。在运行速度上,Serlvet比JSP速度快。

三、使用Servlet

前端输入一个实数,首先通过VerifyServlet判断输入是否有效,如果输入非法,则转向前端重新输入,否则转发给MessageServlet计算其平方值 ,并输出结果。

1、前端页面(/page/data.html)

使用静态页面模板创建创建简单的表单页面,实现数据的提交。

<div id="content">
        <form action="/verify" method="post">
            请输入一个实数:
            <input type="text" name="number">
            <input type="submit" value="确定">
        </form>
    </div>

2、使用eclipse编辑、编译VerifyServlet和MessageServlet,存放于包pkg下。

VerifyServlet

import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class VerifyServlet extends HttpServlet {

	private static final long serialVersionUID = 1L;

	public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String number = request.getParameter("number");
		try {
			double n = Double.parseDouble(number);
			if (n > 6000 || n < -6000)
				response.sendRedirect("/page/data.html");
			else {
				RequestDispatcher dispatcher = request.getRequestDispatcher("/message");
				dispatcher.forward(request, response);
			}
		} catch (NumberFormatException e) {
			response.sendRedirect("/page/data.html");
		}
	}

	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doPost(request, response);
	}
}

MessageServlet

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class MessageServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html;charset=GB2312");
		PrintWriter out = response.getWriter();
		String number = request.getParameter("number");// 获取客户提交的信息
		double n = Double.parseDouble(number);
		out.println(number + "的平方:" + (n * n));
	}

	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doPost(request, response);
	}
}

3、将编译好的class文件拷贝到站点(/WEB-INF/classes/pkg/)

4、配置servlet(/WEB-INF/web.xml)

<?xml version="1.0" encoding="UTF-8"?>
<web-app>
    <servlet>
        <servlet-name>MessageServlet</servlet-name>
        <servlet-class>pkg.MessageServlet</servlet-class>
    </servlet>
    <servlet>
        <servlet-name>VerifyServlet</servlet-name>
        <servlet-class>pkg.VerifyServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>MessageServlet</servlet-name>
        <url-pattern>/message</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>VerifyServlet</servlet-name>
        <url-pattern>/verify</url-pattern>
    </servlet-mapping>
   
</web-app>

5、重新启动Tomcat服务,调试程序。

注意:每次修改class文件、web.xml文件都需要重新启动Tomcat.