HttpSession

HttpSession

案例:保存用户登陆信息+验证码

LoginForm.jsp

<body>
<script type="text/javascript">
    function change() {
        var img = document.getElementById("img");
        img.src = "/review/VerifyServlet?a=" + new Date().getTime();
    }
</script>
    <%
        String name = "";
        Cookie[] cookies = request.getCookies();
        if (cookies != null) {
            for (Cookie c : cookies) {
                if ("uname".equals(c.getName())) {
                    name = c.getValue();
                }
            }
        }
    %>
    <%
        String message = "";
        String msg = (String) request.getAttribute("msg");
        if (msg != null) {
            message = msg;
        }
    %>
    <h1><%=message%></h1>
    <form action="/review/LoginServlet" method="post">
        用户名:<input type="text" name="username" value="<%=name%>"><br>
        密 码:<input type="text" name="password"><br> 
        验证码:<input type="text" name="verifycode" size="3">
                <img id="img" src="/review/VerifyServlet"><a href="javascript:change()">换一张</a><br>
        <input type="submit" value="登录">
    </form>
</body>

LoginServlet.java

public class LoginServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        //验证码认证
        String num1 = request.getParameter("verifycode");
        String num2 = (String)request.getSession().getAttribute("Verify_code");
        if(!num1.equalsIgnoreCase(num2)) {
            request.setAttribute("msg", "验证码有误!!!");
            request.getRequestDispatcher("/login/LoginForm.jsp").forward(request, response);
            return;
        }
        request.setCharacterEncoding("utf-8");
        String name = request.getParameter("username");
        String psw = request.getParameter("password");
        if ("zq".equals(name) && "cmlx".equals(psw)) {
            Cookie cookie = new Cookie("uname", name);
            cookie.setMaxAge(60 * 60);
            response.addCookie(cookie);
            HttpSession session = request.getSession();
            session.setAttribute("name", name);
            response.sendRedirect("/review/login/succ1.jsp");
        } else {
            request.setAttribute("msg", "你输入的信息有误!!!");
            request.getRequestDispatcher("/login/LoginForm.jsp").forward(request, response);
        }
    }
}

VerifyServlet.java

public class VerifyServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        /*
         * 1.生成图片
         * 2.保存图片上的文本到session
         * 3.把图片响应给客户端
         */
        VerifyCode vc = new VerifyCode();
        BufferedImage image = vc.getImage();
        request.getSession().setAttribute("Verify_code", vc.getText());
        VerifyCode.output(image, response.getOutputStream());
        
    }
}

succ.jsp

<body>
<%
    String s1 = (String)session.getAttribute("name");
    if(s1 == null){
        request.setAttribute("msg", "你还没登录呢!");
        request.getRequestDispatcher("/login/LoginForm.jsp").forward(request, response);
    }
%>
<%
    String msg = "";
    String s = (String)session.getAttribute("name");
    if(s != null){
        msg = s;
    }
%>
<h1>欢迎<%=msg %>来到本网站!</h1>
</body>

 HttpSession原理

HttpSession的其他方法

web.xml中配置session的最大不活动时间

 URL重写

 

 

posted @ 2018-08-01 16:54  cmlx  阅读(105)  评论(0)    收藏  举报