Servlet第一个事例(转)
Servlet第一个例子(转)
我们通过代码和web.xml配置文件来介绍servlet的运行原理和生命周期.在这个例子中我们通过实现servlet接口来实现我们的代码。实现servlet接口就要实现接口中的所有方法。
一、代码部分(test.java)
import javax.servlet.*; import java.io.*; public class test implements Servlet { private int i; public test() { } /** * 初始化servlet,该函数只会被调用一次(当用户第一次访问该servlet时) */ public void init(ServletConfig parm1) throws ServletException { System.out.println("init it"); i = 0; } public ServletConfig getServletConfig() { return null; } /** *这个函数用于处理业务逻辑,业务代码部分在这里实现(当用户访问该servlet时,该函数都会被调用) */ public void service(ServletRequest parm1, ServletResponse parm2) throws ServletException, IOException { System.out.println("service it"); ++i; PrintWriter pw = parm2.getWriter(); pw.println("Hello World"); pw.println(i);//从输入的i值便知道,servlet是单例模式工作的,不管哪个机子访问它,它的i值都会增加,所以在多用户并发访问,将解决线程同步的问题交由程序员来控制 } public String getServletInfo() { return null; } /** * 以下两种情况会调用destory 1、reload该servlet(在tomcat控制台中reload) 2、关闭tomcat,这个是强行结束了 */ public void destroy() { System.out.println("destory it"); } }
二、web.xml配置文件
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" 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"> <servlet> <!--给servlet取名字,名字可以任意--> <servlet-name>hello</servlet-name> <!--指明servlet的路径,(包名+类名)--> <servlet-class>test</servlet-class> </servlet> <!-- Define the hello Servlet Mapping --> <servlet-mapping> <!--和servlet中的servlet-name一致--> <servlet-name>hello</servlet-name> <!--这是在浏览器中输入的访问该servlet的url,是任意的--> <!--浏览器根据这个pattern找到对应的servlet-name,再根据servlet-name找到对应的class--> <url-pattern>/list</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>三、访问servlet
1、启动tomcat
2、输入http://127.0.0.1:8080/ServletTest/list 就可以访问servlet
四、servlet的生命周期
当第一次访问servlet时,init()会被调用,然后调用service().接下来每次访问servlet时,service都会被调用。当关闭该servlet时,或者reload该项目时,destory被调用