jsp--3.cookies

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)) {
				//创建cookie
				Cookie 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获取所有cookie
		Cookie[] cookies = request.getCookies();
		String username = null;
		String password = null; 
		
		
		if (cookies != null) {
			//遍历cookie
			for (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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值