程序员社区

【Servlet-0】使用JSP改变Cookie案例

1.JSP的入门学习

1.概念:java Server Pages:java服务器端页面
 可以理解为一个特殊的页面,既可以定义HTML标签,又可以定义java代码
 可以简化书写
 
2.原理:JSP本质上就是一个Servlet

3.JSP的脚本:JSP定义java代码的方式
 1.<% 代码 %>:定义的java代码,在service代码中,
    service方法中可以定义什么,该脚本就可以定义什么
 2.<%! 代码 %>:定义的java代码,在jsp装换的java类型的成员变量
 3.<%= 代码 %>:定义的java代码,会输出到页面上,
    输出语句中定义什么,该脚本上就可以定义什么
    
4.JSP的内置对象:在JSP中不创建就可以直接使用的对象,JSP一共有9个内置对象
 1.request
 2.response
 3.out:字符输出流对象。可以将数据输出到页面上。response.getWrite()类似
 在Tomcat服务器真正给客户端做出相应之前,会先找response缓冲区数据,再找out缓冲区数据,response.getWriter()数据输出永远在out.write()之前

<%@ page contentType="text/html;charset=UTF-8" buffer="16kb" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  <%
    System.out.println("hello jsp");
    int i=5;
    String contextpath = request.getContextPath();
    out.print(contextpath);
  %>
  
  <%! int i=3; %>
  <%="hello"%>
  <%response.getWriter().write("response....");%>
  </body>
</html>

2.改造Cookie案例

<%@ page import="java.text.SimpleDateFormat" %>
<%@ page import="java.util.Date" %>
<%@ page import="java.net.URLEncoder" %>
<%@ page import="java.net.URLDecoder" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
    //设置响应的消息体的数据格式以及编码
    response.setContentType("text/html;charset=utf-8");

    //获取所有的Cookie
    Cookie[] cookies = request.getCookies();
    boolean flag = false;//没有cookie为lastTime

    //遍历cookies数组
    if(cookies!=null && cookies.length>0){
        for(Cookie cookie :cookies){
            //获取cookie的名称
            String name =  cookie.getName();
            //判断名称是否是:lastTime
            if("lastTime".equals(name)){
            //有这个cookie,不是第一次访问

                flag = true;//有lastTime的cookie

                //设置从cookie的value
                //获取当前时间的字符串,重复设置Cookie的值,重新发送cookie
                Date date = new Date();
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
                String str_date = sdf.format(date);

                System.out.println("编码前:"+str_date);
                //URL编码
                str_date = URLEncoder.encode(str_date,"utf-8");
                System.out.println("编码后:"+str_date);

                cookie.setValue(str_date);

                //设置cookie的存活时间
                cookie.setMaxAge(60*60*24);//一个月
                //发送cookie
                response.addCookie(cookie);

                // 获取cookie的value
                String value = cookie.getValue();
                System.out.println("解码前:"+value);
                //URL解码
                value = URLDecoder.decode(value,"utf-8");
                System.out.println("解码后:"+value);

                response.getWriter().write("<h1>欢迎您回来!您上次的访问时间是:"+value+"</h1>");

                break;
            }
        }
    }
    if(cookies==null || cookies.length==0 || flag==false){
        //没有,第一次访问

        //设置cookie的value
        //获取当前时间的字符串,重复设置Cookie的值,重新发送cookie
        Date date = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
        String str_date = sdf.format(date);

        System.out.println("编码前:"+str_date);
        //URL编码
        str_date = URLEncoder.encode(str_date,"utf-8");
        System.out.println("编码后:"+str_date);

        Cookie cookie = new Cookie("lastTime",str_date);
        cookie.setValue(str_date);



        //设置cookie的存活时间
        cookie.setMaxAge(60*60*24);//一个月

        //发送cookie
        response.addCookie(cookie);
        response.getWriter().write("<h1>您好!欢迎您首次访问</h1>");
    }
%>
</body>
</html>
赞(0) 打赏
未经允许不得转载:IDEA激活码 » 【Servlet-0】使用JSP改变Cookie案例

相关推荐

  • 暂无文章

一个分享Java & Python知识的社区