会话 session 和 cookie(6)_Cookie 中文处理
·
目录
Cookie 中文处理
-
Cookie 中是不可以设置中文的,但可以使用 URLEncodor.encode() 方法编码后在存放到 Cookie 中。在获取 Cookie 时,需要先使用 URLDecoder.decode() 方法解码再使用。
向客户端响应中添加 Cookie

从客户端请求中获取 Cookie

-
以上操作完整源码
web.xml<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <servlet> <servlet-name>RegistServlet</servlet-name> <servlet-class>com.wyx.cookie.RegistServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>RegistServlet</servlet-name> <url-pattern>/servlet/RegistServlet</url-pattern> </servlet-mapping> <servlet> <servlet-name>GetCookieServlet</servlet-name> <servlet-class>com.wyx.cookie.GetCookieServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>GetCookieServlet</servlet-name> <url-pattern>/servlet/GetCookieServlet</url-pattern> </servlet-mapping> </web-app>RegistServlet
package com.wyx.cookie; import java.io.IOException; import java.net.URLEncoder; import javax.servlet.ServletException; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class RegistServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("UTF-8"); String name = "魏宇轩"; name = URLEncoder.encode(name); // cookie中存储中文会报错 Cookie cookie = new Cookie("userpass", name); cookie.setMaxAge(60 * 60); cookie.setPath("/cookie_demo4/"); resp.addCookie(cookie); resp.getWriter().print("success"); } }GetCookieServlet
package com.wyx.cookie; import java.io.IOException; import java.net.URLDecoder; import java.net.URLEncoder; import javax.servlet.ServletException; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class GetCookieServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { Cookie[] cookies = req.getCookies(); for (Cookie cookie : cookies) { String name = cookie.getName(); if ("userpass".equals(name)) { // 获得是Base64编码后的字符串 String value = cookie.getValue(); System.out.println(value); value = URLDecoder.decode(value); System.out.println(value); } } } }
如有错误,欢迎指正!
更多推荐


所有评论(0)