Servlet请求响应,解决乱码问题时,发现浏览器编码格式(EDGE浏览器)

servlet实现时,解决编码问题时,发现浏览器编码格式(EDGE浏览器)

1.请求方式为get时,不会出现请求乱码(这里使用tomcat8.5.47,高版本都不会乱码)

2.请求方式为post时,需要解决乱码问题

(1)这里我们设置服务器编码格式为UTF-8,可以解决客户端请求乱码问题。这说明了浏览器发送post请求时,使用了UTF-8编码格式

req.setCharacterEncoding("UTF-8");

(2)当服务器未设置编码格式时,或者设置为UTF-8编码格式时,会出现响应乱码。但是如果设置编码格式为GBK则不会出现乱码问题。这说明浏览器的解码时的编码格式为GBK

@WebServlet("/req02")
public class Servlet007 extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        /* 常用方法 */
        // 获取请求时的完整路径 (从http开始,到"?"前面结束)
        System.out.println(req.getRequestURL());
        // 获取请求时的部分路径 (从项目的站点名开始,到"?"前面结束)
        System.out.println(req.getRequestURI());
        // 获取请求时的参数字符串 (从"?"后面开始,到最后的字符串)
        System.out.println(req.getQueryString());
        // 获取请求方式 (GET和POST)
        System.out.println(req.getMethod());
        // 获取当前协议版本 (HTTP/1.1)
        System.out.println(req.getProtocol());
        // 获取项目的站点名 (项目对外访问路径)
        System.out.println(req.getContextPath());
        /* 获取请求的参数 */
        // 获取指定名称的参数值,返回字符串 (重点!!!)
        //如提交方式为post,会出现乱码问题
        req.setCharacterEncoding("UTF-8");
        System.out.println(req.getParameter("uname"));
        System.out.println(req.getParameter("upwd"));
        // 获取指定名称的参数的所有参数值,返回字符串数组 (用于复选框传值)
        System.out.println(Arrays.toString(req.getParameterValues("hobbies")));
        // 判断数组是否为空
        //请求转发
        // 请求转发跳转到Servlet06
        resp.setCharacterEncoding("GBK");
        req.getRequestDispatcher("req01").forward(req,resp);
        // 请求转发跳转到jsp页面
        //req.getRequestDispatcher("login.jsp").forward(req,resp);
        // 请求转发跳转到html页面
        //req.getRequestDispatcher("login.html").forward(req,resp);
    }
}
@WebServlet("/req01")
public class Servlet006 extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        /* 常用方法 */
        // 获取请求时的完整路径 (从http开始,到"?"前面结束)
        System.out.println(req.getRequestURL());
        // 获取请求时的部分路径 (从项目的站点名开始,到"?"前面结束)
        System.out.println(req.getRequestURI());
        // 获取请求时的参数字符串 (从"?"后面开始,到最后的字符串)
        System.out.println(req.getQueryString());
        // 获取请求方式 (GET和POST)
        System.out.println(req.getMethod());
        // 获取当前协议版本 (HTTP/1.1)
        System.out.println(req.getProtocol());
        // 获取项目的站点名 (项目对外访问路径)
        System.out.println(req.getContextPath());
        /* 获取请求的参数 */
        // 获取指定名称的参数值,返回字符串 (重点!!!)
        System.out.println(req.getParameter("uname"));
        System.out.println(req.getParameter("upwd"));
        // 获取指定名称的参数的所有参数值,返回字符串数组 (用于复选框传值)
        System.out.println(Arrays.toString(req.getParameterValues("hobbies")));
        // 判断数组是否为空
        //
        resp.getWriter().write("欢迎跳转过来");
    }
}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值