以下是本人对servlet的一点学习所得,请各位高手不要笑话~
在web.xml中声明的servlet,在web应用运行期间,默认是一直存在的。
举例为证 :
使用servlet完成一个记录访问网站人数的功能。
在servlet中声明属性count用来记录访问的人数,若count值有变化,说明此servlet类没有被重新创建,且公共变量是被所有人共享的。
servlet代码如下:
package resident; 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 Resident extends HttpServlet { /*Record total number*/ private int count=0; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request,response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println(count++);/*Display the total number*/ out.flush(); out.close(); } }
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> <description>This is the description of my J2EE component</description> <display-name>This is the display name of my J2EE component</display-name> <servlet-name>Resident</servlet-name> <servlet-class>resident.Resident</servlet-class> </servlet> <servlet-mapping> <servlet-name>Resident</servlet-name> <url-pattern>/Resident</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
在地址栏中输入http://localhost:8080/ResidentServlet/Resident并刷新,就会看到数字再变动,关闭浏览器后再打开,重新输入此地址,发现数字没有清零,实验证明servlet确实驻留在了内存之中。
附件中是此实验的源代码,使用myeclipse。