更新时间:2016年09月21日11时58分 来源:传智播客JAVA培训学院 浏览次数:
<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();//获取这个cookie的值,给uname这个变量 } } } %> <% String message = ""; String msg = (String)request.getAttribute("msg");//获取request域中的名为msg的属性 if(msg != null) { message = msg; } %> <font color="red"><b><%=message %> </b></font> <form action="/Example22/LoginServlet" method="post"> <%-- 把cookie中的用户名显示到用户名文本框中 --%> 用户名:<input type="text" name="username" value="<%=uname%>"/><br/> 密 码:<input type="password" name="password"/><br/> 验证码:<input type="text" name="verifyCode" size="3"/> <img id="img" src="/Example22/VerifyCodeServlet"/><br> <input type="submit" value="登录"/> </form> </body> |
public class VerifyCodeServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { /* * 1. 生成图片 * 2. 保存图片上的文本到session域中 * 3. 把图片响应给客户端 */ VerifyCode vc = new VerifyCode(); BufferedImage image = vc.getImage(); request.getSession().setAttribute("session_vcode", vc.getText());//保存图片上的文本到session域 VerifyCode.output(image, response.getOutputStream()); } } |
/* * 校验验证码 * 1. 从session中获取正确的验证码 * 2. 从表单中获取用户填写的验证码 * 3. 进行比较! * 4. 如果相同,向下运行,否则保存错误信息到request域,转发到login.jsp */ String sessionCode=(String)request.getSession(). getAttribute("session_vcode"); String paramCode = request.getParameter("verifyCode"); if(!paramCode.equalsIgnoreCase(sessionCode)) { request.setAttribute("msg", "验证码错误!"); request.getRequestDispatcher("/session/login.jsp"). forward(request, response); return; } |
<script type="text/javascript"> function _change() { /* 1. 得到img元素 2. 修改其src为/day11_3/VerifyCodeServlet */ var imgEle = document.getElementById("img"); imgEle.src = "/Example22/VerifyCodeServlet?a=" + new Date().getTime(); } </script> ... ... <a href="javascript:_change()">换一张</a> |