web —— jsp笔记

cookies 的使用

 1、首先确保客户机上允许使用cookie,一般在浏览器的 隐私 设置项里可以设置。

 2、下面给出具体的例子

  a)index.jsp中如果没注册过,让游客注册,如果注册了,拿出贮存在cookie中的注册信息显示出来

复制代码
<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="utf8"%>
<%@page import="java.util.Date" %>
<%@page import="java.text.SimpleDateFormat" %>
<%@ page import="java.net.URLDecoder" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf8">

<title>First Jsp/ show system time</title>
</head>
<body onload="setInterval(updateTime(), 1000)">
    <%!
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        String updateTime(){
            Date date = new Date();
         return  df.format(date);
        }
        
    %>
    当前时间:<%= updateTime() %>
    <br/><br/>
    <% 
        Cookie[] cookies = request.getCookies();
        String user="";
        String date="";
        String date2="";
        if(cookies != null)
        {
            for(int i=0;i<cookies.length;i++)
            {
                if(cookies[i].getName().equals("mrCookie"))
                {
                    user = URLDecoder.decode(cookies[i].getValue().split("#")[0], "gbk") ;
                    date = cookies[i].getValue().split("#")[1];
                    date2 = cookies[i].getValue().split("#")[2];
                }
            }
        }
        if("".equals(user)&& "".equals(date)){
    %>
            游客,你好,欢迎光临!
            <form action = "deal.jsp" method = "post">
                请输入姓名:<input type="text" name="user"/>
                <input type= "submit" value="确认">
            </form>
    <%
        }else{
    %>
            欢迎,[<b><%= user %></b>] 再次光临!<br/>
            您的注册时间为:<%= date %><br/>
            cookies有效期至:<%= date2 %>
    <% 
        }
    %>
</body>  
</html>
index.jsp 
复制代码

  b)deal.jsp 写入cookies 信息

复制代码
<%@ page language="java" contentType="text/html; charset=utf8"
    pageEncoding="utf8"%>
<%@ page import="java.net.URLEncoder" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf8">
<title>Insert title here</title>
</head>
<body>
    <% 
        request.setCharacterEncoding("GB18030");
        String user = URLEncoder.encode(request.getParameter("user"), "gbk");
        java.util.Date date_start = new java.util.Date();
        long times= date_start.getTime();
        java.util.Date date_end = new java.util.Date(times+20*1000);
        
        Cookie cookie = new Cookie("mrCookie",user+"#"+date_start.toLocaleString()+"#"+date_end.toLocaleString());
        cookie.setMaxAge(20);
        response.addCookie(cookie);
    %>
    <a href="index.jsp">回到index.jsp页面</a>
</body>
</html>
deal.jsp
复制代码

 【注】1、deal.jsp 中的 request.setCharacterEncoding("GB18030"); 编码设置应该与index.jsp中的第一行的 @page charset=GB18030" 一致

    2、Decode 和 encode 应该使用同种或兼容的编码(gbk?gb18030? 好像兼容?)

 

解决中文乱码(jsp内置的request传递参数包含中文时)

方法有两个:

1、<% request.setCharacterEncoding("utf8"); %> //在request指明发出请求页的编码

2、new String(request.getParameter("name").getBytes("ISO-8859-1"), "utf8"); //对于每一个request字段,使用String的新编码构造函数,指定目标编码;

 

posted @   BensonLaur  阅读(223)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端
点击右上角即可分享
微信分享提示