会话:一次会话中包含多次请求和响应
功能:在一次会话的范围内的多次请求间,共享数据
作用: 1.cookie一般用于存储少量不太敏感的数据
2.在不登录的情况下,完成服务器对客户端的身份识别
方式:1.客户端会话技术Cookie 2.服务器端会话技术:Session
Cookie:
Cookie使用步骤:
1.服务器端创建Cookie对象,绑定数据:new Cookie();
2.通过response发送Cookie对象:response.addCookie();
3.游览器接收到Cookie并保存
4.游览器向服务器发送Cookie,服务器接收到Cookie对象:request.getCookie()
案例分析:
@WebServlet("/CookieTest")
public class CookieTest extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
//1.获取所有Cookie
Cookie[] cookies =request.getCookies();
boolean flag = false;
//2.遍历cookie数组
if(cookies!=null && cookies.length>0){
for(Cookie cookie:cookies){
//3.获取所有的cookie名称
String name = cookie.getName();
//4.判断名称是否是lasttime
if("lastTime".equals(name)){
//有证明不是第一次访问
flag=true;
String value =cookie.getValue();
value = URLDecoder.decode(value, "utf-8");
response.getWriter().write("<h1>欢迎回来,您上次访问的时间是:"+value+"</h1>");
//设置cookie的value,获取当前时间并重新设置cookie
Date date =new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String str_date = sdf.format(date);
str_date = URLEncoder.encode(str_date, "utf-8");
cookie.setValue(str_date);
cookie.setMaxAge(60*60*24*30);
response.addCookie(cookie);
//向游览器写字符串
break;
}
}
}
if (cookies==null||cookies.length==0||flag==false){
Date date =new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String str_date = sdf.format(date);
str_date = URLEncoder.encode(str_date, "utf-8");
Cookie cookie =new Cookie("lastTime",str_date);
cookie.setMaxAge(60*60*24*30);
response.addCookie(cookie);
response.getWriter().write("<h1>欢迎首次访问</h1>");
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request,response);
}
}
JSP
JSP:java服务器端页面,jsp本质上是一个Servlet
可以理解为:一个特殊的页面,其中即可以定义html标签,又可以定义java代码,用于简化书写,可以在html页面上构造简单的动态标签比如上次登录时间等
JSP定义java代码的三种方式
1.<% 代码 %>:在service方法中能定义什么,该脚本中就能定义什么
2. <%! 代码 %>:jsp转换后的java类成员
3. <%! 代码 %>:会输出到页面上,输出语句定义什么该脚本就可以定义什么
jsp内置对象如下,不需要创建,可以直接像再Servlet中使用request、response一样使用以下对象
1.request
2.response
3.out
session
session的特点:用于在服务器端存放一次会话的数据,可以存放任意类型任意大小的数据
session与cookie的区别:
1.session存放在服务器端,cookie存放在游览器端
2.session没有大小限制,cookie有
3.session安全,cookie不安全