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>
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>
【注】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的新编码构造函数,指定目标编码;
版权声明 本博客所有的原创文章,作者皆保留版权。转载必须包含本声明,保持本文完整,并以超链接形式注明作者 BensonLaur 和本文原始地址: https://www.cnblogs.com/BensonLaur/p/5729756.html |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端