专题一 Servlet技术 案例一简单计数器
教学目标 1.1 了解Servlet的基础知识 1.2 了解Servlet的生命周期 1.3 掌握Servlet的配置方法
工作任务 使用Servlet做一个简单的计数器 实现输出“Welcome to Servlet World”程序
简单的计数器,记录个人访问此页面的次数
创建工程和CountPng类 新建一个工程,名为“ServletDem” 新建“handson.test”包。在该包下新建CountPng.java.类
设置变量和编写初始化方法 设置计数时需要的变量 编写init()方法,在Servlet被加载时调用 int count; public void init(ServletConfig config) throws ServletException{ super.init(config); }
编写doGet()方法 CountPng 类的Servlet的doGet()方法里添加代码 PrintWriter out = res.getWriter(); count++; out.println("<html>"); out.println("<head><title>accessCounter</title></head>"); out.println("<body bgcolor=\"#ffffff\">"); out.println("You Called " + count + " times"); out.println("</body></html>"); out.close();
编写doPost()和destroy()方法 编写CountPng.java类中的doPost()和destroy()方法: public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException{ doGet(req,res); } public void destroy(){ super.destroy();
配置Servlet 在web.xml中配置Servlet <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_2_5.xsd version="2.5"> <servlet> <servlet-name>count</servlet-name> <servlet-class>handson.test.CountPng</servlet-class> </servlet> <servlet-mapping> <url-pattern>/CountPng</url-pattern> </servlet-mapping> </web-app>
运行程序 启动Tomcat服务器。 在IE浏览器的地址栏中输入以下地址: http://localhost:8080/ServletDemo/CountPng。
运行效果 浏览器中预览效果 案例实践结束
实现输出“Welcome to Servlet World”程序
新建工程和Hello.java类 1. 新建一个名为ServletDemo的工程 2. 新建一个名为Hello.java的Servlet
导入需要的包 导入Servlet所需的包: import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;
编写Hello类1 继承HttpServlet 设置init()方法 编写destroy()方法 public void init(ServletConfig config) throws ServletException{ super.init(config); } public void destroy(){ super.destroy();
编写Hello类2 编写doGet()方法 PrintWriter out = response.getWriter(); response.setContentType("text/html;charset=gb2312"); out.println("<html><head><title>"); out.println("Welcome to Servlet World"); out.println("</title></head>"); out.println("<body>Welcome to Servlet World</body></html>"); out.close();
配置Servlet 配置Servlet,在web.xml中写入下面代码: <servlet> <servlet-name>hello</servlet-name> <servlet-class>handson.test.Hello</servlet-class> </servlet> <servlet-mapping> <url-pattern>/Hello</url-pattern> </servlet-mapping>
总结 了解Servlet的基础知识 了解Servlet的生命周期 掌握Servlet的配置方法
什么是Servlet Servlet(Java服务器小程序)是用Java编写的服务器端程序,是由服务器端调用和执行的、按照Servlet自身规范编写的Java类。 基本Servlet程序流程。 如下图所示:
为什么要使用Servlet 思考为什么要使用Servlet 1. Servlet是持久的 2. Servlet是快速的。
Java Servlet与Applet的比较 相似之处: 它们不是独立的应用程序,没有main()方法 不是由用户或程序员调用,而是由另外一个应用程序(容器)调用 都有一个生存周期,包含init()和destroy()方法 不同之处: Applet具有很好的图形界面(AWT),与浏览器一起,在客户端运行 Servlet则没有图形界面,运行在服务器端
Servlet与JSP的关系 JSP技术主要用来表现页面 ,Servlet技术主要是用来完成大量的逻辑处理 JSP本身没有任何的业务处理逻辑,它只是简单地检索Servlet创建的JavaBean或者对象,再将动态的内容插入到预定义的模块中 Servlet创建JSP需要的JavaBean和对象,再根据用户的行为,决定处理哪个JSP页面并发送给用户
Servlet的生命周期 1. 装载Servlet:在服务器启动后就装载Servlet或初始化特定的Servlet。 4. 执行阶段 5. Servlet销毁阶段
配置Servlet 部署描述文件的位置 Web.xml文件总是放置在Web应用的WEB-INF目录中。这是各个服务器之间惟一通用的位置;其他位置都是非标准的服务器扩展,应该避免使用它们。
Web.xml基本格式定义 Web.xml基本格式定义: <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_2_5.xsd version="2.5"> </web-app>
Servlet的命名 命名Servlet,我们需要用到web-app内Servlet元素的Servlet-name(可以选取任意名称)和Servlet-class(完全限定类名)子元素 <servlet> <servlet-name>count</servlet-name> <servlet-class> handson.test.CountPng </servlet-class> </servlet>
URL的指定 要将URL赋予已命名的Servlet,需要使用Servlet-mapping元素的Servlet-name(之前指定的名称)和url-pattern(URL前缀,由斜杠开始)子元素 <servlet-mapping> <servlet-name>count</servlet-name> <url-pattern>/CountPng</url-pattern> </servlet-mapping>
配置初始化参数 配置初始化参数 <servlet> <servlet-name>count</servlet-name> <servlet-class> handson.test.CountPng </servlet-class> <init-param> <param-name>encoding</param-name> <param-value>gb2312</param-value> </init-param> </servlet>
部署描述文件的读取 许多服务器具有“热部署”能力或方法,可以交互式地重启Web应用。例如,JRun会自动重启那些web.xml文件发生改变的Web应用。然而,默认情况下,服务器启动后web.xml文件是只读的。因此,除非您使用服务器专有的特性,否则每次修改完web.xml文件还是得重新启动服务器