• Day04_10--JSP第五次作业


    login.jsp

    <
    script type="text/javascript"> function _change(){ /* 1.得到img元素 2.修改其src为/SessionDemo/VeifyCodeServlet */ var imgEle = document.getElementById("img"); var v = new Date; var s = v.getTime(); //imgEle.src = "/SessionDemo/VeifyCodeServlet?a=" + new Date().getTime(); imgEle.src = "/SessionDemo/VeifyCodeServlet?a=" + s; } function _check(){ if(form1.username.value==""){ alert("用户名不能为空"); return; } if(form1.password.value==""){ alert("密码不能为空"); return; } if(form1.vCode.value==""){ alert("验证码不能为空"); return; } } </script> </head> <body> <h1>登录</h1> <% /* 读取名为uname的cookie,如果为空显示"",不为空显示cookie的值 */ String uname = ""; Cookie[] cs = request.getCookies(); // 获取请求中所有的cookie if(cs != null){ // cookie不为空 for(Cookie c : cs){ // 循环遍历Cookie[] if("uname".equals(c.getName())){ // 查找名称为uname的cookie uname = c.getValue(); // 将值赋给uname变量 } } } %> <% // 显示错误信息 String s = ""; String msg = (String) request.getAttribute("msg"); if (msg != null) { s = msg; } %> <%-- 本页面提供登录表单,还要显示错误信息 --%> <font color="red"><b><%=s%></b> </font> <form action="/SessionDemo/LoginServlet" method="post" name="form1"> 用户名:<input type="text" name="username" value="<%=uname%>" /><br />&nbsp&nbsp&nbsp码:<input type="password" name="password" /><br /> 验证码:<input type="text" name="vCode" size="3"/> <img id="img" src="/SessionDemo/VeifyCodeServlet"> <a href="javascript: _change()">看不请,换一张</a> <br /> <input type="submit" value="登录" onclick="_check()"/> </form> </body>

    succ1.jsp

    <%
        String username = (String)session.getAttribute("username");
        if(username==null){
            /*
             *    向request域中保存错误信息,并转发到login.jsp 
             */
            request.setAttribute("msg", "你还没有登录");
            request.getRequestDispatcher("/session2/login.jsp").forward(request, response);
            return;
        }
    %>
    
        <h1>succ1</h1>
        欢迎<%=username %>访问本页面。
        <a href="session2/exit.jsp">退出</a>

    exit.jsp

    <body>
        <%
            session.removeAttribute("username");
            response.sendRedirect("login.jsp");
        %>
    </body>

    LoginServlet

    package Demo_01;
    
    import java.io.IOException;
    
    import javax.servlet.RequestDispatcher;
    import javax.servlet.ServletException;
    import javax.servlet.http.Cookie;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    
    public class LoginServlet extends HttpServlet {
    
        public void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
    
            /*
             * 验证码处理 1.得到session里的验证码文本 2.获取到文本框中输入的文本 3.比较
             */
            String sessiontext = (String) request.getSession().getAttribute(
                    "session_vcode");
            String wtext = request.getParameter("vCode");
            if (!wtext.equalsIgnoreCase(sessiontext)) {
                request.setAttribute("msg", "输入的验证码有误");
                request.getRequestDispatcher("/session2/login.jsp").forward(
                        request, response);
                return;
            }
    
            /*
             * 1、获取表单信息
             */
            // 中文处理
            request.setCharacterEncoding("utf-8");
            // 获取
            String username = request.getParameter("username");
            String password = request.getParameter("password");
    
            /*
             * 2、校验用户名和密码是否正确
             */
            if (!"itcast".equalsIgnoreCase(username)) {
                // 成功
                /*
                 * 附加项:把用户名保存到cookie中,发送给客户端浏览器
                 * 当再次打开login.jsp时,login.jsp会读取request中的cookie,把它显示到用户名文本框中
                 */
    
                Cookie cookie = new Cookie("uname", username);// 创建cookie
                cookie.setMaxAge(60 * 60 * 24);// 设置cookie名长为一天
                response.addCookie(cookie);// 保存cookie
    
                /*
                 * 3、如果成功 > 保存用户信息到session中 > 重定向到succ1.jsp
                 */
                HttpSession session = request.getSession();// 获取session对象
                session.setAttribute("username", username);// 向session域中保存数据
                response.sendRedirect("/SessionDemo/session2/succ1.jsp");
            } else {
                // 失败
                /*
                 * 4、如果失败 > 保存错误数据到request域中 >
                 * 转发到login.jsp(如果使用重定向request域中的数据就会因为第二次请求 而获取不到)
                 */
                request.setAttribute("msg", "用户名或密码错误");
                RequestDispatcher rd = request
                        .getRequestDispatcher("/session2/login.jsp");
                rd.forward(request, response);// 转发
            }
        }
    }

    VeifyCodeServlet

    package Demo_01;
    
    import java.awt.image.BufferedImage;
    import java.io.IOException;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import Image.VerifyCode;
    
    public class VeifyCodeServlet extends HttpServlet {
    
        public void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            /*
             * 1.生成图片
             * 2.保存图片上的文本到session中
             * 3.把图片响应给客户端
             */
            VerifyCode vc = new VerifyCode();
            BufferedImage bi = vc.getImage();
            request.getSession().setAttribute("session_vcode", vc.getText());
            VerifyCode.output(bi, response.getOutputStream());
        }
    
    }

    其中还用到了VerifyCode.java一个生成验证码的类

  • 相关阅读:
    51nod 1565模糊搜索(FFT)
    51nod 1851俄罗斯方块(trick)
    可持久化线段树(主席树)模板
    BZOJ2191:Splite
    BZOJ4197:[NOI2015]寿司晚宴
    BZOJ3198:[SDOI2013]SPRING
    BZOJ1500:[NOI2005]维修数列
    BZOJ3527:[ZJOI]力
    BZOJ3160:万径人踪灭
    CODE[VS]1372:DNA
  • 原文地址:https://www.cnblogs.com/zwcg/p/12672027.html
Copyright © 2020-2023  润新知