let,由于是Web开始服务的基础必须在顺序1初化,所以我们开发的Servlet最好在顺序2或顺序3初始化。Servlet初始化时,init()方法被调用。在进行这样的设置后web.xml将包含以下粗体所示的配置信息。
代码清单 1 web.xml有关UserCacheServlet的描述信息
1. <web-app>
2. …
3. <servlet>
4. <servlet-name>usercacheservlet</servlet-name>
5. <servlet-class>bookstore.servlet.UserCacheServlet</servlet-class>
6. <load-on-startup>2</load-on-startup>
7. </servlet>
8. <servlet-mapping>
9. <servlet-name>usercacheservlet</servlet-name>
10. <url-pattern>/usercacheservlet</url-pattern>
11. </servlet-mapping>
12. …
13. </web-app>
注意:
当删除UserCacheServlet后,Servlet在web.xml所对应的部署描述信息并不会一起删除,你必须手工删除。
在init()初始化方法中利用UserList.fillUser()方法从数据库中下载并缓存用户记录信息,在doGet()方法中也引用了UserList.fillUser(),用户通过URL访问UserCacheServlet时,doGet()方法被调用,刷新缓存用户数据,并显示"刷新成功"提示,其代码如下所示:
代码清单 2 UserCacheServlet.Java
1. package bookstore.servlet;
2.
3. import javax.servlet.*;
4. import javax.servlet.http.*;
5. import java.io.*;
6. import bookstore.UserList;
7.
8. public class UserCacheServlet
9. extends HttpServlet
10. {
11. private static final String CONTENT_TYPE = "text/html; charset=GBK";
12.
13. //Initialize global variables
14. public void init()
15. throws ServletException
16. {
17. UserList.fillUser();//Web容器启动后调用
18. }
19.
20. //Process the HTTP Get request
21. public void doGet(HttpServletRequest request, HttpServletResponse response)
22. throws ServletException, IOException
23. {
24. UserList.fillUser();//刷新用户数据
25. response.setContentType(CONTENT_TYPE);
26. PrintWriter out = response.getWriter();
27. out.println("<html>");
28. out.println("<head><title>UserCacheServlet</title></head>");
29. out.println("<body bgcolor=\"#ffffff\">");
30. out.println("刷新成功!");
31. out.println("</body>");
32. out.println("</html>");
33. out.close();
34. }
JBuilder2005 Servlet开发之自启动(4)
时间:2010-03-27 陈雄华
当然,我们要对《JBuilder 2005实战JSP开发》专题中创建的UserList.java代码进行更改,定义fillUser()方法以供UserCacheServlet.java调用,此外,还需要调整原getUserListHTML()方法,如下所示:
代码清单 3 调整后的UserList.java代码
2. package bookstore;
3.
4. import java.sql.*;
5. import java.util.*;
6.
7. public class UserList
8. {
9. private static Map userMap;//用户ID和用户名的Map
10. //将用户数据缓存到Map中
11. public static void fillUser()
12. {
13. if (userMap == null)
14. {
15. userMap = new HashMap();
16. } else
17. {
18. userMap.clear();
19. }
20. Connection conn = null;
21. StringBuffer sBuf = new StringBuffer();
22. try
23. {
24. conn = DBConnection.getConnection();
25. PreparedStatement pStat = conn.pr
|