700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Servlet---解决post请求中中文乱码问题 解决后端传输数据给客户端出现乱码问题

Servlet---解决post请求中中文乱码问题 解决后端传输数据给客户端出现乱码问题

时间:2020-04-23 20:48:49

相关推荐

Servlet---解决post请求中中文乱码问题 解决后端传输数据给客户端出现乱码问题

一、 解决post请求中中文乱码问题

@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//解决中文乱码问题 req.setCharacterEncoding("UTF-8");//获取请求参数String username = req.getParameter("username");String password = req.getParameter("password");String hobby = req.getParameter("hobby");//有多个值的话要使用这个方法String[] hobby2 = req.getParameterValues("hobby");System.out.println("username=>"+username);System.out.println("password=>"+password);System.out.println("hobby=>"+hobby);System.out.println("hobby=>"+ Arrays.toString(hobby2));}

<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Title</title></head><body><form action="http://localhost:8080/web_Tomcat_war_exploded/ParameterServlet" method="post">用户名: <input type="text" name="username"/> <br/>密码: <input type="password" name="password"/> <br/>兴趣爱好: <input type="checkbox" name="hobby" value="java"/> Java<input type="checkbox" name="hobby" value="c++"/>C++<input type="checkbox" name="hobby" value="js"/> JavaScript<br/><input type="submit"></form></body></html>

当我们的请求是post请求的时候,如果表单中有中文的话,会出现中文乱码的问题

当然解决这个问题的方式很简单,就是修改一下字符编码集

req.setCharacterEncoding("UTF-8");

注意!!!!!!

req.setCharacterEncoding("UTF-8"); 此语句一定要在获取请求的参数之前使用才可以实现效果

像下面的代码一样,还是会出现乱码问题!!!!

@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String username = req.getParameter("username");//解决中文乱码问题 req.setCharacterEncoding("UTF-8");//获取请求参数String password = req.getParameter("password");//有多个值的话要使用这个方法String[] hobby = req.getParameterValues("hobby");System.out.println("username=>"+username);System.out.println("password=>"+password);System.out.println("hobby=>"+ Arrays.toString(hobby));}

二、解决后端传输数据给客户端出现乱码问题

第一种

public class ResponseIOServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 设置字符集resp.setCharacterEncoding("UTF-8");//设置完成字符集之后,还会出现乱码问题,其中可能的就是浏览器的字符编码集合我们现在的服务器字符编码集不同//下面我们也要修改一下浏览器中的字符编码集//通过响应头,设置浏览器也是用UTF-8字符集resp.setHeader("Content-Type","text/html;charset-UTF-8");// 要求:往客户端回传 字符串 数据PrintWriter writer = resp.getWriter();writer.write("response's content!!!!");writer.write("张张张张");}}

第二种

public class ResponseIOServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//会同时设置服务器和客户端都是用UTF8字符集,还设置了响应头//一定要在获取流对象之前调用才有效resp.setContentType("text/html;charset-UTF-8");// 要求:往客户端回传 字符串 数据PrintWriter writer = resp.getWriter();writer.write("response's content!!!!");writer.write("张张张张");}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。