ApplicationServlet.java
上传用户:dinglihq
上传日期:2013-02-04
资源大小:99958k
文件大小:3k
源码类别:

Java编程

开发平台:

Java

  1. package bible.servlets;
  2. import javax.servlet.*;
  3. import javax.servlet.http.*;
  4. import java.io.*;
  5. import java.util.*;
  6. public class ApplicationServlet extends HttpServlet {
  7.   private static final int FIRST_PAGE = 1;
  8.   private static final int LAST_PAGE = 5;
  9.   public void service(HttpServletRequest request, HttpServletResponse response)
  10.   throws ServletException, IOException {
  11.     ServletContext ctx = this.getServletContext();
  12.     HttpSession session = request.getSession();
  13.     String userName = request.getRemoteUser();
  14.     Hashtable sessionInfo = null;
  15.     if (session.getAttribute("sessionInfo") == null) {
  16.       // New user. Create a Hashtable to track their
  17.       // session state.
  18.       sessionInfo = new Hashtable();
  19.       sessionInfo.put("userName", userName);
  20.       sessionInfo.put("pageNumber", new Integer(FIRST_PAGE));
  21.       session.setAttribute("sessionInfo", sessionInfo);
  22.       // See if the new user is already logged in by checking
  23.       // for their sessionInfo in the servlet context.
  24.       if (ctx.getAttribute("session_" + userName) == null) {
  25.         // Not already logged in. Save their sessionInfo to
  26.         // the servletContext and continue.
  27.         ctx.setAttribute("session_" + userName, sessionInfo);
  28.       } else {
  29.         // Already logged in elsewhere. Invalidate this session
  30.         // and kick this user out.
  31.         session.invalidate();
  32.         response.sendRedirect(response.encodeURL("/BibleServlets/Home.html"));
  33.         return;
  34.       }
  35.     } else {
  36.       // Returning user. Retrieve their state from the session.
  37.       sessionInfo = (Hashtable) session.getAttribute("sessionInfo");
  38.       Integer pageNumber = (Integer)sessionInfo.get("pageNumber");
  39.       int nextPage = pageNumber.intValue();
  40.       pageNumber = null;
  41.       // Read the query string to determine the user's desired
  42.       // action. Update their state in the session accordingly.
  43.       if (request.getParameter("action").equals("next")) {
  44.         // Go to the next page. Wrap around to the
  45.         // first page after passing the last page.
  46.         nextPage++;
  47.         if (nextPage > LAST_PAGE) {
  48.           nextPage = FIRST_PAGE;
  49.         }
  50.         sessionInfo.put("pageNumber", new Integer(nextPage));
  51.         session.setAttribute("sessionInfo", sessionInfo);
  52.         ctx.setAttribute("session_" + userName, sessionInfo);
  53.       } else if (request.getParameter("action").equals("previous")) {
  54.         // Go to the previous page. Wrap around to the last page
  55.         // after passing the first page.
  56.         nextPage--;
  57.         if (nextPage < FIRST_PAGE) {
  58.           nextPage = LAST_PAGE;
  59.         }
  60.         sessionInfo.put("pageNumber", new Integer(nextPage));
  61.         session.setAttribute("sessionInfo", sessionInfo);
  62.         ctx.setAttribute("session_" + userName, sessionInfo);
  63.       } else if (request.getParameter("action").equals("logoff")) {
  64.         // User wants to log off. Invalidate their session,
  65.         // remove their session info from the servlet context,
  66.         // redirect them to the home page, and then quit.
  67.         session.invalidate();
  68.         ctx.removeAttribute("session_" + userName);
  69.         response.sendRedirect(response.encodeURL("/BibleServlets/Home.html"));
  70.         return;
  71.       }
  72.     }
  73.     // Forward all non-logoff requests to the PageServlet.
  74.     request.getRequestDispatcher("PageServlet").forward(request, response);
  75.   }
  76. }