java.net.URLDecoder和URLEncoder类的应用

目录

类URLDecoder

类URLEncoder

应用

注意


类URLDecoder

解密:使用指定的编码机制对 application/x-www-form-urlencoded 字符串解码。

类URLEncoder

 加密:使用指定的编码机制将字符串转换为 application/x-www-form-urlencoded 格式

 为什么用?

 主要用来解决http get请求不能传输中文参数问题。http请求是不接受中文参数的。这就需要发送方,将中文参数encode,接收方将参数decode,这样接收方就能收到准确的原始字符串了。

应用

public class URLDecoderTest {
    public static void main(String[] args) throws UnsupportedEncodingException {
            String keyWord= URLDecoder.decode("%E7%96%AF%E7%8B%82java","utf-8");
            System.out.println( keyWord);
            String urlStr= URLEncoder.encode("疯狂Android讲义","GBK");
            System.out.println(urlStr);
    }
}

运行结果:

      疯狂java

      %B7%E8%BF%F1Android%BD%B2%D2%E5

注意

仅包含西欧字符的普通字符串和application/x-www-form-urlencodeed MIME字符无需转换,而包含中文字符的需要转换,转换方法:每个中文是两个字节,每个字节可转换程两个十六进制的数字,所有每个中文字符将转换程:“%XX%XX”,注意不通字符集可能不同

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
package com.cn.servlet04; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.net.URLDecoder; import java.net.URLEncoder; import java.text.SimpleDateFormat; import java.util.Date; @WebServlet("/Cookie03") public class ServleCookie03 extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //设置响应消息体的数据格式 resp.setContentType("text/html;char=utf-8"); //获取cookie Cookie[] cookies = req.getCookies(); //遍历数据 if(cookies != null && cookies.length>0){ for(Cookie c:cookies){ String name = c.getName(); //判断name是否是登录时间的name System.out.println("name"+name); if("time".equals(name)){ String value = c.getValue(); //解码 value = URLDecoder.decode(value,"utf-8"); //有我要的cookie 不是第一次访问 resp.getWriter().write("<h1>欢迎回来</h1>"); } } } if(cookies == null || cookies.length==0){ //第一次访问 Date date = new Date();//获取系统时间 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); String str_date = sdf.format(date); Cookie c = new Cookie("time",str_date); // c.setMaxAge(0); resp.addCookie(c); resp.getWriter().write("欢迎你首次访问"); } } } 为什么网页无法正常显示,给出修改过后的代码
07-13
您提供的代码缺少一些必要的部分,例如导入的包和Servlet的注解信息。此外,您还需要提供更详细的问题描述,以便我能更好地帮助您修改代码。以下是一个基本的修改后的代码示例: ```java package com.cn.servlet04; import java.io.IOException; import java.net.URLDecoder; import java.net.URLEncoder; import java.text.SimpleDateFormat; import java.util.Date; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/Cookie03") public class ServletCookie03 extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 设置响应消息体的数据格式 resp.setContentType("text/html;charset=utf-8"); // 获取cookie Cookie[] cookies = req.getCookies(); // 遍历cookie if (cookies != null && cookies.length > 0) { for (Cookie c : cookies) { String name = c.getName(); // 判断name是否是登录时间的name System.out.println("name: " + name); if ("time".equals(name)) { String value = c.getValue(); // 解码 value = URLDecoder.decode(value, "utf-8"); // 有我要的cookie,不是第一次访问 resp.getWriter().write("<h1>欢迎回来</h1>"); } } } if (cookies == null || cookies.length == 0) { // 第一次访问 Date date = new Date();// 获取系统时间 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); String str_date = sdf.format(date); Cookie c = new Cookie("time", URLEncoder.encode(str_date, "utf-8")); // c.setMaxAge(0); resp.addCookie(c); resp.getWriter().write("欢迎你首次访问"); } } } ``` 请注意,以上代码仅仅是一个基本的修改示例,如果您有其他问题或者详细需求,请提供更多的信息,以便我能更好地帮助您。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值