Cookie不能保存中文的解决办法
假设a.jsp是客户端,b.jsp是客户端,c.jsp是服务端
现在要做的就是客户端在a.jsp页面提交表单信息到服务端c.jsp,c.jsp再将表单信息保存到cookie中,并转发或者重定向到b.jsp客户端,这样就
达到了我们将服务端生成的cookie保存到客户端的作用,但是中文输入保存cookie时会报错
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="java.net.URLDecoder"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>客户端a页面</title> </head> <body> <% String uname=""; Cookie[] cookies = request.getCookies(); if(cookies!=null) for(Cookie cookie:cookies){ if("uname".equals(cookie.getName())){ //客户端获取cookie 后 解 码 uname= URLDecoder.decode(cookie.getValue(), "UTF-8"); } } %> <form action="./c.jsp" method="get"> 姓名:<input type="text" name = "uname" value="<%=uname %>"/><br/> 密码:<input type="password" name="upsd"/><br/> <input type="submit" value="提交" /> <!-- 发送信息到服务端,服务端再用cookie保存返回到客户端 --> </form> </body> </html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>客户端b页面</title> </head> <body> c已经将cookie给我了 </body> </html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="java.net.URLEncoder"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>服务端c页面</title> </head> <body> 我是c服务端页面,我要保存cookie,然后转发回b客户端页面<br/> <% request.setCharacterEncoding("UTF-8"); String name = request.getParameter("uname"); String psd = request.getParameter("upsd"); Cookie c1 = new Cookie("uname", URLEncoder.encode(name, "UTF-8")); //ck.setPath("/"); //设置cookie的路径,只有包含这个路径(以这个路径为前缀)的文件才能访问这个cookie c1.setMaxAge(Integer.MAX_VALUE); //设置cookie的最大保存时间 response.addCookie(c1); Cookie c2 = new Cookie("upsd",psd); out.print(c1.getName()+"====="+c1.getValue()); response.addCookie(c1); response.addCookie(c2); response.sendRedirect("./b.jsp"); %> </body> </html>