Servlet请求参数编码处理(POST & GET)

简介:

小巧,但在中文语境下,还是要注意的。

以下是关键语句,注意转码的先后顺序,这源于GET是HTTP服务器处理,而POST是WEB容器处理:

String name = request.getParameter("nameGet");
name = new String(name.getBytes("ISO-8859-1"), "gb2312");

================================

request.setCharacterEncoding("gb2312");
String name = request.getParameter("namePost");

 

复制代码
package cc.openhome;

import java.io.IOException;
import java.io.BufferedReader;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/encoding")
public class EncodingServlet extends HttpServlet{
  protected void doGet(HttpServletRequest request,
                      HttpServletResponse response)
                      throws ServletException, IOException {
    String name = request.getParameter("nameGet");
    name = new String(name.getBytes("ISO-8859-1"), "gb2312");
    System.out.println("GET: " + name);
  }

  protected void doPost(HttpServletRequest request,
                      HttpServletResponse response)
                      throws ServletException, IOException {
    request.setCharacterEncoding("gb2312");
    String name = request.getParameter("namePost");
    System.out.println("POST: " + name);
    String body = readBody(request);
    System.out.println("Body: " + body);
                      }
    private String readBody(HttpServletRequest request)
                        throws IOException{
    BufferedReader reader = request.getReader();
    String input = null;
    String requestBody = "";
    while((input = reader.readLine()) != null) {
      requestBody += input;
    }
    return requestBody;
                        }
}
复制代码

目录
相关文章
|
5月前
|
Web App开发 前端开发 JavaScript
AJAX POST请求中参数以form data和request payload形式在servlet中的获取方式
AJAX POST请求中参数以form data和request payload形式在servlet中的获取方式
32 0
Servlet的几种(out)输出流编码设置
Servlet的几种输出流编码设置 在很多场合会发现我们输出的中文是乱码,这主要可能有两方面的原因: 一个是浏览器的解析方式,另一个是我们服务器端返回数据的方式。只要我们保证浏览器的解析方式和我们回显的数据的编码格式是一致的,基本上乱码问题就可以得到解决。大多数数情况下,浏览器的默认编码方式是utf-8,因此我们只要设置服务器返回的数据的编码方式也是utf-8即可。
213 0
|
XML IDE Java
JavaWeb - JSP、Servlet、Request、Response、Get、Post 中文乱码问题
JavaWeb - JSP、Servlet、Request、Response、Get、Post 中文乱码问题
120 0
JavaWeb - JSP、Servlet、Request、Response、Get、Post 中文乱码问题
|
存储 JSON 前端开发
【小家Java】Servlet规范之---请求(request):Servlet中如何获取POST请求参数?(使用getParameter())
【小家Java】Servlet规范之---请求(request):Servlet中如何获取POST请求参数?(使用getParameter())
【小家Java】Servlet规范之---请求(request):Servlet中如何获取POST请求参数?(使用getParameter())
|
开发框架 安全 Java
Java Web简明教程–Servlet篇[2]–get与post
本篇主要涉及2个内容: 使用MyEclipse简化创建Servlet的过程 get与post请求的区别
213 0
Java Web简明教程–Servlet篇[2]–get与post
|
应用服务中间件 Java
初识 JSP---(Servlet映射 / ServletRequest / get与post区别 / 解决乱码)
Servlet映射的细节 同一个Servlet映射多个URL上,即多个元素的子元素的设置值可以是同一个Servlet的注册名 第一种方法: 第二种方法: 第三种方法:通配符(*.
1375 0
|
应用服务中间件 容器 数据安全/隐私保护
Servlet中request请求Get和Post方法以及乱码解决
前言: 传递的请求参数如何获取 GET方式: 参数放在URI后面 POST方式: 参数放在实体内容中 后台获取前台数据方法: 核心的API: request.getParameter("参数名"); 根据参数名获取参数值(注意,只能获取一个值的参数) request.
3037 0
|
Java 应用服务中间件 网络协议
servlet 模拟 post 调用其它tomcat的servlet
引用:http://blog.sina.com.cn/s/blog_46debefc0100i72r.html   Java中可以使用HttpURLConnection来请求WEB资源。   1:> URL请求的类别:分为二类,GET与POST请求。
902 0