jsp--3.cookies

来源:互联网 发布:故障树分析软件 编辑:程序博客网 时间:2024/06/04 18:34

1      Cookie

1.1  概述

         服务器脚本向浏览器发送一组Cookie。例如:姓名、年龄或识别号码等。

         浏览器将这些信息存储在本地计算机上,以备将来使用。

         当下一次浏览器向 Web 服务器发送任何请求时,浏览器会把这些 Cookie 信息发送到服务器,服务器将使用这些信息来识别用户。

 

1.2  创建并设置

1.2.1  创建

Cookie cookie1 = new Cookie("username", username);

 

// 为名字和姓氏创建 Cookie     

Cookie name = new Cookie("name",URLEncoder.encode(username,"UTF-8")); // 中文转码

 

1.2.2  设置有效时间

cookie1.setMaxAge(10*24*60*60);

 

1.2.3  设置关联路径

cookie1.setPath(request.getContextPath());

 

1.2.4  写入cookie

response.addCookie(cookie1);

 

1.3  得到并使用

1.3.1  得到cookie

得到一个数组

Cookie[] cookies = request.getCookies();

 

后面步骤通过for遍历得到每一个cookie

 

1.3.2  遍历cookie

 

1.3.3  得到cookie的name和value

String cookieName = cookie.getName();

String cookieValue =cookie.getValue();

 

 

1.3.4  根据name得到value

           

if ("username".equals(cookieName)) {

      username= cookieValue;

}

补充:

   假如记录的用户名和密码,不要被固始思维困扰,此时就不要请求作用域(ognl)的数据,传入的是上面在cookie获得的参数,

   还有一点很重要,假如从cookie获得用户名和密码,不要吝啬servlet(action),就不要写在原来那个需要登录访问的servlet(action),再建一个servlet,重复原来的部分功能都可以

2      十天免登录原始

2.1  先搭建登录环境

2.1.1  Jsp

2.1.1.1       login.jsp

<body><form action="LoginServlet" method="post">用户名:<input type="text" name="username"/><br />密码:<input type="password" name="password" /><br /><input type="checkbox" name="day10" value="ok"/>十天<br /><input type="submit" value="提交"/></form></body> 

2.1.1.2       成功页面one.jsp

<body>登录陈宫<%=session.getAttribute("username") %></body> 

2.1.1.3       失败页面fair.jsp

<body>失败</body> 

2.1.2  Servlet

2.1.2.1       登录UserServlet

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("utf-8");String username = request.getParameter("username");String password = request.getParameter("password");User user = new User();user.setUsername(username);user.setPassword(password);System.out.println(user.getUsername());//连接数据库验证用户密码UserService userService = new UserService();boolean flag = userService.login(user);//登录成功跳转,失败跳到失页面if (flag) {request.getSession().setAttribute("username", user.getUsername());response.sendRedirect("one.jsp");} else {response.sendRedirect("fair.jsp");}}

2.1.3  Service

 

public boolean login(User user) {UserDao userDao = new UserDao();return userDao.login(user);} 

2.1.4  Dao

public boolean login(User user) {Connection conn =  new DbUtil().getDBConn();PreparedStatement pstmt;ResultSet res;boolean flag = false;try {String sql = "SELECT * FROM t_user WHERE username = ? AND PASSWORD = ?";pstmt = conn.prepareStatement(sql);pstmt.setString(1, user.getUsername());pstmt.setString(2, user.getPassword());res = pstmt.executeQuery();if (res.next()) {flag = true;}System.out.println(flag);return flag;} catch (SQLException e) {e.printStackTrace();return flag;}}

2.1.5  Bean

 

2.1.6  Utils

//连接数据库  登录界面public class DbUtil {  String url = "jdbc:mysql://localhost:3306/cookie" ; String username = "root" ; String password = "root" ;   Connection con = null ; public Connection getDBConn(){try {Class.forName("com.mysql.jdbc.Driver");con=DriverManager.getConnection(url,username,password);return con;} catch (Exception e) {e.printStackTrace();return null;}}}

 

2.2  Cookie修改

2.2.1  实现思路

         获得cookie的username和password,然后servlet重新请求,说白了就是新建一个servlet

         新建是servlet作为程序的入口

2.2.2  Sevlet—修改UserServlet

 

String day10 = request.getParameter("day10");System.out.println(day10);if ("ok".equals(day10)) {//创建cookieCookie cookie1 = new Cookie("username", username);Cookie cookie2 = new Cookie("password", password);//设置有效时间cookie1.setMaxAge(10*24*60*60);cookie2.setMaxAge(10*24*60*60);//设置关联路径cookie1.setPath(request.getContextPath());cookie2.setPath(request.getContextPath());//发送cookie给浏览器response.addCookie(cookie1);response.addCookie(cookie2);}

2.2.3  Servlet—isLogin,

程序入口改为这个

 

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//从request获取所有cookieCookie[] cookies = request.getCookies();String username = null;String password = null; if (cookies != null) {//遍历cookiefor (Cookie cookie : cookies) {String cookieName = cookie.getName();String cookieValue = cookie.getValue();if ("username".equals(cookieName)) {username = cookieValue;}if ("password".equals(cookieName)) {password = cookieValue;}}}if (username != null && password != null) {User user = new User();user.setUsername(username);user.setPassword(password);//连接数据库验证用户密码UserService userService = new UserService();boolean flag = userService.login(user);//登录成功跳转if (flag) {request.getSession().setAttribute("username", user.getUsername());response.sendRedirect("one.jsp");} else {response.sendRedirect("fair.jsp");}} else {response.sendRedirect("login.jsp");}}

注意:此时属性封装的不是页面数据,而是cookie的数据,所以需要新的servlet,准确的点说,不在同一个方法

 

3      Struts中

3.1  Action

  

 

3.2  实现思路:

         和原始方式大同小异,重新来个action,程序入口改为这个

 

3.3  修改UserAction

 

3.4  修改IndexAction

 

 

 

3.5  Struts.xml

 

 

 

 

 源代码文件:http://download.csdn.net/detail/qq_26553781/9825051

 

 

 

 

 

0 0
原创粉丝点击