JavaWeb Cookie JSP Session

JavaWeb会话技术


会话:一次会话中包含多次请求和响应
功能:在一次会话的范围内的多次请求间,共享数据
作用: 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不安全

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值