一、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.