赞
踩
需要资料,详见文章末尾,主打一个免费自提
1、理解Cookie的工作原理。
2、掌握操作Cookie的常见API。
【代码一】~【代码四】
中填写正确的代码,实现用户的7天免登录功能。(1)登录页面:
(2)如果登录失败,则在页面中显示“用户名或者密码错误”。
(3)如果登录成功,且选中“七天内免登录”复选框,则会将当前用户的用户名以及密码保存到本地Cookie中,在七天内访问登录页面时,用户名及密码会自动显示在文本框中;如果登录成功,但未选中“七天内免登录”复选框,则会清除cookie中已有的用户名及密码。
(1)新建一个名为”web9”的项目(Web应用程序)。在项目中,新建JSP,命名为“login”。
<%@page contentType="text/html" pageEncoding="UTF-8" session="false"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> </head> <body> <body> <% String username = ""; String userpass = ""; Cookie[] cookies = request.getCookies(); if (cookies != null) { for (int i = 0; i < cookies.length; i++) { if ("username".equals(cookies[i].getName())) { username = cookies[i].getValue(); } if ("userpass".equals(cookies[i].getName())) { //【代码一】 } } } %> <form action="<%=request.getContextPath()%>/login" method="post"> username:<input type="text" name="username" value="<%=username%>"/><br> password:<input type="password" name="userpass" value="<%=userpass%>"/><br> <input type="checkbox" value="y" name="isLogin" checked>七天内免登录<br> <input type="submit" value="登录"/> </form> </body> </html>
(3)新建java包“it.servlet”。在该包中新建java类,命名为“LoginServlet”。
LoginServlet.java的功能:实现用户登录的判断以及7天免登录。
package it.servlet; import java.io.IOException; import javax.servlet.annotation.WebServlet; import javax.servlet.*; import javax.servlet.http.*; @WebServlet("/login") public class LoginServlet extends HttpServlet { @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //【代码二】 String username = req.getParameter("username"); String userpass = req.getParameter("userpass"); String isLogin = req.getParameter("isLogin");//选中“七天内免登录”,则isLogin返回“y”;否则,返回null if ("admin".equals(username) && "123456".equals(userpass)) { resp.getWriter().println("登录成功"); if ("y".equals(isLogin)) {//不能写成 isLogin.equals("y") Cookie usernameCookie = new Cookie("username", username); usernameCookie.setMaxAge(3600 * 24 * 7); Cookie userpassCookie = new Cookie("userpass", userpass); userpassCookie.setMaxAge(3600 * 24 * 7); //【代码三】 } else { //【代码四】 } } else { resp.getWriter().println("用户名或密码错误"); } } }
【代码一】~【代码四】
中填写正确的代码,显示用户浏览过的商品名称。(1)在项目中新建“JSP”文件,命名为“display”。
<%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> </head> <body> <h3>商品列表</h3> <a href="<%=request.getContextPath()%>/display?name=ThinkPad">ThinkPad</a><br/> <a href="<%=request.getContextPath()%>/display?name=Lenovo">Lenovo</a><br/> <a href="<%=request.getContextPath()%>/display?name=Apple">Apple</a><br/> <a href="<%=request.getContextPath()%>/display?name=Sony">Sony</a><br/> <a href="<%=request.getContextPath()%>/display?name=Dell">Dell</a><br/> <a href="<%=request.getContextPath()%>/display?name=ACER">ACER</a><br/> <h3>浏览过的商品</h3> <% /*【代码一】从Cookie中读取名为“goods”的值,URLDecoder解码后显示在页面中 */ %> </body> </html>
(3)在it.servlet包中新建java类,命名为“DisplayServlet”。 DisplayServlet.java的功能:将用户点击的商品名添加到cookie中。
package it.servlet; import java.io.IOException; import javax.servlet.*; import javax.servlet.annotation.WebServlet; import javax.servlet.http.*; @WebServlet("/display") public class DisplayServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //【代码二】声明并初始化变量goods //读取cookie Cookie[] cookies = req.getCookies(); if (cookies != null) { for (Cookie c : cookies) { if ("goods".equals(c.getName())) { goods = URLDecoder.decode(c.getValue(),"utf-8"); break; } } } //【代码三】从请求对象中,获取被点击的商品名,赋值给name //判断goods中是否包含被点击的商品名。若不包含,则将商品名添加到goods中。 if (!goods.contains(name)) { goods = name +" "+goods; //用空格分隔不同的商品名 } //【代码四】将goods进行URLEncoder编码后,存储到客户端浏览器的cookie中 resp.sendRedirect(req.getContextPath() + "/display.jsp"); } }
<%@page contentType="text/html" pageEncoding="UTF-8" session="false"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> </head> <body> <body> <% String username = ""; String userpass = ""; Cookie[] cookies = request.getCookies(); if (cookies != null) { for (int i = 0; i < cookies.length; i++) { if ("username".equals(cookies[i].getName())) { username = cookies[i].getValue(); } if ("userpass".equals(cookies[i].getName())) { userpass = cookies[i].getValue();//【代码一】 } } } %> <form action="<%=request.getContextPath()%>/login" method="post"> username:<input type="text" name="username" value="<%=username%>"/><br> password:<input type="password" name="userpass" value="<%=userpass%>"/><br> <input type="checkbox" value="y" name="isLogin" checked>七天内免登录<br> <input type="submit" value="登录"/> </form> </body> </html>
package it.servlet; import java.io.IOException; import javax.servlet.annotation.WebServlet; import javax.servlet.*; import javax.servlet.http.*; @WebServlet("/login") public class LoginServlet extends HttpServlet { @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //【代码二】 // 设置响应的内容类型为 "text/html",表示返回给客户端的内容是 HTML 格式的。 // charset=UTF-8 部分指定了 HTML 内容的字符编码是 UTF-8。 resp.setContentType("text/html;charset=UTF-8"); // 设置响应的字符编码为 UTF-8 // 确保它能够被浏览器正确解释和显示 resp.setCharacterEncoding("UTF-8"); String username = req.getParameter("username"); String userpass = req.getParameter("userpass"); String isLogin = req.getParameter("isLogin");//选中“七天内免登录”,则isLogin返回“y”;否则,返回null if ("admin".equals(username) && "123456".equals(userpass)) { resp.getWriter().println("登录成功"); if ("y".equals(isLogin)) {//不能写成 isLogin.equals("y") 避免空指针异常 Cookie usernameCookie = new Cookie("username", username); usernameCookie.setMaxAge(3600 * 24 * 7); Cookie userpassCookie = new Cookie("userpass", userpass); userpassCookie.setMaxAge(3600 * 24 * 7); //【代码三】 resp.addCookie(usernameCookie); resp.addCookie(userpassCookie); } else { //【代码四】 Cookie usernameCookie = new Cookie("username", ""); usernameCookie.setMaxAge(0); resp.addCookie(usernameCookie); Cookie userpassCookie = new Cookie("userpass", ""); userpassCookie.setMaxAge(0); resp.addCookie(userpassCookie); } } else { resp.getWriter().println("用户名或密码错误"); } } }
<%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> </head> <body> <h3>商品列表</h3> <a href="<%=request.getContextPath()%>/display?name=ThinkPad">ThinkPad</a><br/> <a href="<%=request.getContextPath()%>/display?name=Lenovo">Lenovo</a><br/> <a href="<%=request.getContextPath()%>/display?name=Apple">Apple</a><br/> <a href="<%=request.getContextPath()%>/display?name=Sony">Sony</a><br/> <a href="<%=request.getContextPath()%>/display?name=Dell">Dell</a><br/> <a href="<%=request.getContextPath()%>/display?name=ACER">ACER</a><br/> <h3>浏览过的商品</h3> <% /*【代码一】从Cookie中读取名为“goods”的值,URLDecoder解码后显示在页面中 */ String goods = ""; Cookie[] cookies = request.getCookies(); if (cookies != null) { for (Cookie c: cookies) { if ("goods".equals(c.getName())){ goods = URLDecoder.decode(c.getValue(),"UTF-8"); break; } } } %> <%= goods %> </body> </html>
package it.servlet; import java.io.IOException; import javax.servlet.*; import javax.servlet.annotation.WebServlet; import javax.servlet.http.*; @WebServlet("/display") public class DisplayServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //【代码二】声明并初始化变量goods String goods = ""; //读取cookie Cookie[] cookies = req.getCookies(); if (cookies != null) { for (Cookie c : cookies) { if ("goods".equals(c.getName())) { goods = URLDecoder.decode(c.getValue(),"utf-8"); break; } } } //【代码三】从请求对象中,获取被点击的商品名,赋值给name String name = req.getParameter("name"); //判断goods中是否包含被点击的商品名。若不包含,则将商品名添加到goods中。 if (!goods.contains(name)) { goods = name +" "+goods; //用空格分隔不同的商品名 } //【代码四】将goods进行URLEncoder编码后,存储到客户端浏览器的cookie中 Cookie goodsCookie = new Cookie("goods", URLEncoder.encode(goods, "utf-8")); resp.addCookie(goodsCookie); resp.sendRedirect(req.getContextPath() + "/display.jsp"); } }
链接:https://pan.baidu.com/s/1gGdqLeZmlmWBqXrW-pyX7Q?pwd=sdiq
提取码:sdiq
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。