cookie与session的简介
cookie与session同为保持会话之间数据不丢失的技术之一
区别在于:
cookie在服务器创建,但是存储在客户端浏览器内存中,默认情况下关闭浏览器会清空,但可通过cookie的setMaxAge()方法设置,单位为秒。
session在服务器创建,同时也存储在服务器中,创建时会发送一个sessionID存放在cookie中,默认情况下30分钟会清空,可通过setMaxInactiveInterval()方法设置存活时间,通过invalidate()方法设置立即无效
cookie创建与接收
本例中使用了两个servlet实验
//创建cookie,通过响应方式让客户端浏览器将cookie存放起来
Cookie cookie = new Cookie("name", "ttt");
response.addCookie(cookie);
//取得cookie数组
Cookie[] cookies = request.getCookies();
//先判断是否有客户端浏览器是否存在cookie
if (cookies.length>0) {
//然后遍历foreach循环遍历cookies数组
for (Cookie cookie : cookies) {
//判断是否有名字为name的cookie
if (cookie.getName().equals("name")) {
//如果有则取出cookie的value值
System.out.println(cookie.getValue());
}
}
session的创建与接收
本例中使用了两个servlet实验
//创建session
HttpSession session = request.getSession();
//给session赋数据
session.setAttribute("name", "zhangsan");
//接收session
HttpSession session = request.getSession();
//取得的session中的name
String name = (String) session.getAttribute("name");
System.out.println(name);
转发与重定向
转发是指携带数据从servlet到另一个页面,如jsp/html或servlet
//把字符串abc起个名字叫name放进request中(键值对形式)
request.setAttribute("name", "abc");
//将request这个包裹转发至index.jsp页面中
request.getRequestDispatcher("index.jsp").forward(request, response);
重定向是指地址栏再次请求同一个地址,可以理解为刷新,注意这是没有携带数据到lndex.jsp页面的
response.sendRedirect("index.jsp");
get请求乱码问题
//接收传过来的name
String name = request.getParameter("name");
//给name设置编码
name=new String(name.getBytes("ISO-8859-1"),"UTF-8");
post请求乱码问题
这个更简单直接设置在servlet中post方法内的顶部即可
request.setCharacterEncoding("UTF-8");