packagecom.journaldev.servlet.session;importjava.io.IOException;importjava.io.PrintWriter;importjavax.servlet.RequestDispatcher;importjavax.servlet.ServletException;importjavax.servlet.annotation.WebServlet;importjavax.servlet.http.Cookie;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjavax.servlet.http.HttpSession;/** * Servlet implementation class LoginServlet */@WebServlet("/LoginServlet")publicclassLoginServletextendsHttpServlet{privatestaticfinallongserialVersionUID=1L;privatefinalStringuserID="admin";privatefinalStringpassword="password";protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{// get request parameters for userID and passwordStringuser=request.getParameter("user");Stringpwd=request.getParameter("pwd");if(userID.equals(user)&&password.equals(pwd)){HttpSessionsession=request.getSession();session.setAttribute("user","Pankaj");//setting session to expiry in 30 minssession.setMaxInactiveInterval(30*60);CookieuserName=newCookie("user",user);userName.setMaxAge(30*60);response.addCookie(userName);response.sendRedirect("LoginSuccess.jsp");}else{RequestDispatcherrd=getServletContext().getRequestDispatcher("/login.html");PrintWriterout=response.getWriter();out.println("<font color=red>Either user name or password is wrong.</font>");rd.include(request,response);}}}
<%@pagelanguage="java"contentType="text/html; charset=US-ASCII"pageEncoding="US-ASCII"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><metahttp-equiv="Content-Type"content="text/html; charset=US-ASCII"><title>Login Success Page</title></head><body><%//allow access only if session existsStringuser=(String)session.getAttribute("user");StringuserName=null;StringsessionID=null;Cookie[]cookies=request.getCookies();if(cookies!=null){for(Cookiecookie:cookies){if(cookie.getName().equals("user"))userName=cookie.getValue();if(cookie.getName().equals("JSESSIONID"))sessionID=cookie.getValue();}}%><h3>Hi <%=userName%>, Login successful. Your Session ID=<%=sessionID%></h3><br>User=<%=user%><br><ahref="CheckoutPage.jsp">Checkout Page</a><formaction="LogoutServlet"method="post"><inputtype="submit"value="Logout"></form></body></html>
退出时我们并不需要进行验证,退出页面为:
CheckoutPage.jsp
1234567891011121314151617181920212223242526
<%@pagelanguage="java"contentType="text/html; charset=US-ASCII"pageEncoding="US-ASCII"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><metahttp-equiv="Content-Type"content="text/html; charset=US-ASCII"><title>Login Success Page</title></head><body><%StringuserName=null;StringsessionID=null;Cookie[]cookies=request.getCookies();if(cookies!=null){for(Cookiecookie:cookies){if(cookie.getName().equals("user"))userName=cookie.getValue();}}%><h3>Hi <%=userName%>, do the checkout.</h3><br><formaction="LogoutServlet"method="post"><inputtype="submit"value="Logout"></form></body></html>
packagecom.journaldev.servlet.session;importjava.io.IOException;importjavax.servlet.ServletException;importjavax.servlet.annotation.WebServlet;importjavax.servlet.http.Cookie;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjavax.servlet.http.HttpSession;/** * Servlet implementation class LogoutServlet */@WebServlet("/LogoutServlet")publicclassLogoutServletextendsHttpServlet{privatestaticfinallongserialVersionUID=1L;protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{response.setContentType("text/html");Cookie[]cookies=request.getCookies();if(cookies!=null){for(Cookiecookie:cookies){if(cookie.getName().equals("JSESSIONID")){System.out.println("JSESSIONID="+cookie.getValue());break;}}}//invalidate the session if existsHttpSessionsession=request.getSession(false);System.out.println("User="+session.getAttribute("user"));if(session!=null){session.invalidate();}response.sendRedirect("login.html");}}
packagecom.journaldev.servlet.filters;importjava.io.IOException;importjava.util.Enumeration;importjavax.servlet.Filter;importjavax.servlet.FilterChain;importjavax.servlet.FilterConfig;importjavax.servlet.ServletContext;importjavax.servlet.ServletException;importjavax.servlet.ServletRequest;importjavax.servlet.ServletResponse;importjavax.servlet.annotation.WebFilter;importjavax.servlet.http.Cookie;importjavax.servlet.http.HttpServletRequest;/** * Servlet Filter implementation class RequestLoggingFilter */@WebFilter("/RequestLoggingFilter")publicclassRequestLoggingFilterimplementsFilter{privateServletContextcontext;publicvoidinit(FilterConfigfConfig)throwsServletException{this.context=fConfig.getServletContext();this.context.log("RequestLoggingFilter initialized");}publicvoiddoFilter(ServletRequestrequest,ServletResponseresponse,FilterChainchain)throwsIOException,ServletException{HttpServletRequestreq=(HttpServletRequest)request;Enumeration<String>params=req.getParameterNames();while(params.hasMoreElements()){Stringname=params.nextElement();Stringvalue=request.getParameter(name);this.context.log(req.getRemoteAddr()+"::Request Params::{"+name+"="+value+"}");}Cookie[]cookies=req.getCookies();if(cookies!=null){for(Cookiecookie:cookies){this.context.log(req.getRemoteAddr()+"::Cookie::{"+cookie.getName()+","+cookie.getValue()+"}");}}// pass the request along the filter chainchain.doFilter(request,response);}publicvoiddestroy(){//we can close resources here}}
packagecom.journaldev.servlet.filters;importjava.io.IOException;importjavax.servlet.Filter;importjavax.servlet.FilterChain;importjavax.servlet.FilterConfig;importjavax.servlet.ServletContext;importjavax.servlet.ServletException;importjavax.servlet.ServletRequest;importjavax.servlet.ServletResponse;importjavax.servlet.annotation.WebFilter;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjavax.servlet.http.HttpSession;@WebFilter("/AuthenticationFilter")publicclassAuthenticationFilterimplementsFilter{privateServletContextcontext;publicvoidinit(FilterConfigfConfig)throwsServletException{this.context=fConfig.getServletContext();this.context.log("AuthenticationFilter initialized");}publicvoiddoFilter(ServletRequestrequest,ServletResponseresponse,FilterChainchain)throwsIOException,ServletException{HttpServletRequestreq=(HttpServletRequest)request;HttpServletResponseres=(HttpServletResponse)response;Stringuri=req.getRequestURI();this.context.log("Requested Resource::"+uri);HttpSessionsession=req.getSession(false);if(session==null&&!(uri.endsWith("html")||uri.endsWith("LoginServlet"))){this.context.log("Unauthorized access request");res.sendRedirect("login.html");}else{// pass the request along the filter chainchain.doFilter(request,response);}}publicvoiddestroy(){//close any resources here}}