http协议4---GET方式和POST方式获取表单数据举例3(统一方式获取,解决中文乱码问题)
2016-12-21 11:39
976 查看
http协议---GET方式和POST方式获取表单数据举例3(统一方式获取,解决中文乱码问题)
上篇文章只适用于提交的数据都是英文的,但如果是中文的就会出现乱码的情况,因为我们指定的编码格式为UTF-8,但服务器默认的编码格式为iso-8859-1,所以要解决乱码问题需要进行编码转换
注意:POST方式参数编码:request.setCharacterEncoding("utf-8");
GET方式参数编码:手动单个解码---> String name = new String(name.getBytes("iso-8859-1"),"utf-8");
html文件:testParam.html
主程序 Demo_Request2.java
上篇文章只适用于提交的数据都是英文的,但如果是中文的就会出现乱码的情况,因为我们指定的编码格式为UTF-8,但服务器默认的编码格式为iso-8859-1,所以要解决乱码问题需要进行编码转换
注意:POST方式参数编码:request.setCharacterEncoding("utf-8");
GET方式参数编码:手动单个解码---> String name = new String(name.getBytes("iso-8859-1"),"utf-8");
html文件:testParam.html
<!DOCTYPE html> <html> <head> <title>请求参数传递和接收的问题</title> <meta name="keywords" content="keyword1,keyword2,keyword3"> <meta name="description" content="this is my page"> <meta name="content-type" content="text/html; charset=UTF-8"> <!--<link rel="stylesheet" type="text/css" href="./styles.css">--> </head> <body> <h3>GET请求</h3> <form action="/day08_web/Demo_Request2" method="GET"> 用户名:<input type="text" name="name"/></br> 密码:<input type="password" name="password"></br> <input type="submit" value="提交"/> <br/> 性别: <input type="radio" name="gender" value="male"/>男 <input type="radio" name="gender" value="female"/>女 <br/> 籍贯: <select name="jiguan"> <option value="gd">广东</option> <option value="gx">广西</option> <option value="hn">湖南</option> </select> <br/> 爱好: <input type="checkbox" name="hobit" value="lq"/>篮球 <input type="checkbox" name="hobit" value="zq"/>足球 <input type="checkbox" name="hobit" value="ymq"/>羽毛球 <br/> 个人简介: <textarea rows="5" cols="10" name="info"></textarea> <br/> <!-- 隐藏域 --> <input type="hidden" name="id" value="001"> <br/> <input type="submit" value="提交"> </form> <hr/> <h3>POST请求</h3> <form action="/day08_web/Demo_Request2" method="POST"> 用户名:<input type="text" name="name"/></br> 密码:<input type="text" name="password"></br> <input type="submit" value="提交"/> <br/> 性别: <input type="radio" name="gender" value="male"/>男 <input type="radio" name="gender" value="female"/>女 <br/> 籍贯: <select name="jiguan"> <option value="gd">广东</option> <option value="gx">广西</option> <option value="hn">湖南</option> </select> <br/> 爱好: <input type="checkbox" name="hobit" value="lq"/>篮球 <input type="checkbox" name="hobit" value="zq"/>足球 <input type="checkbox" name="hobit" value="ymq"/>羽毛球 <br/> 个人简介: <textarea rows="5" cols="10" name="info"></textarea> <br/> <!-- 隐藏域 --> <input type="hidden" name="id" value="001"> <br/> <input type="submit" value="提交"> </form> </body> </html>
主程序 Demo_Request2.java
package Request; import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import java.util.Enumeration; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /* * 获取GET方式和POST方式提交的参数 */ public class Demo_Request2 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { /* * 设置参数查询的编码,解决不同的编码解析导致中文乱码的情况(直接改的是全部的,方便) * 但是该方法只能对请求实体内容的数据编码起作用。POST提交的数据在实体内容中, * 所以该方法对POST方式起作用,而GET方法的参数放在URI后面,所以对GET方式无效!!! * 所以GET方法的只能手动解码。。。 */ request.setCharacterEncoding("utf-8"); /* * 统一方便的获取请求参数方法 */ System.out.println(request.getMethod()+"方式获取数据"); //根据参数名得到参数值(只能获取一个值得参数) String name = request.getParameter("name"); /* * 手动重新解码(ios-8859-1 字符串 -> utf-8字符串)(只是单个的改解码格式,比较麻烦) * 但GET方法的只能手动解码 */ if("GET".equals(request.getMethod())) { name = new String(name.getBytes("iso-8859-1"),"utf-8"); } String password = request.getParameter("password"); if("GET".equals(request.getMethod())) { password = new String(password.getBytes("iso-8859-1"),"utf-8"); } System.out.println(name+"---"+password); System.out.println("================================================="); //获取全部的参数名和参数值 Enumeration<String> enums = request.getParameterNames(); while(enums.hasMoreElements()) { String paramName = enums.nextElement(); if("hobit".equals(paramName)) { /* * 根据参数名获取参数值(但是可以获取多个值) */ String[] hobits = request.getParameterValues("hobit"); for(String h : hobits) { if("GET".equals(request.getMethod())) { h = new String(h.getBytes("iso-8859-1"),"utf-8"); } System.out.println(paramName+"---"+h+", "); } } else { String paramValue = request.getParameter(paramName); if("GET".equals(request.getMethod())) { paramValue = new String(paramValue.getBytes("iso-8859-1"),"utf-8"); } System.out.println(paramName+"---"+paramValue); } } } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // System.out.println("POST方式提交"); // InputStream in = request.getInputStream(); // byte[] buf = new byte[1024]; // int len = 0; // while((len = in.read(buf)) != -1) { // System.out.println(new String(buf,0,len)); // } // System.out.println(request.getMethod()+"方式获取数据"); // //根据参数名得到参数值 // String name = request.getParameter("name"); // String password = request.getParameter("password"); // System.out.println(name+"---"+password); // //获取全部的参数名和参数值 // Enumeration<String> enums = request.getParameterNames(); // while(enums.hasMoreElements()) { // String paramName = enums.nextElement(); // String paramValue = request.getParameter(paramName); // System.out.println(paramName+"---"+paramValue); // } //一定调用doGet方法 this.doGet(request, response); } }
相关文章推荐
- http协议2---GET方式和POST方式获取表单数据举例 1(非统一方式获取数据,比较麻烦)
- http协议3---GET方式和POST方式获取表单数据举例2(统一方式获取)
- 解决struts2以GET方式提交表单中文乱码问题
- NetBox环境下ajax用get获取数据,中文乱码的问题解决:对象不支持此属性或方法: 'Response.CharSet'
- Android传统HTTP请求get----post方式提交数据(包括乱码问题)
- Delphi xe5 控件TIdhttp的用法post,get解决中文乱码问题
- java中form以post、get方式提交数据中文乱码问题总结
- 解决servlet中文乱码问题及get、post请求方式的讲解
- JSP中解决中文乱码问题 对于post有效 对于get请求方式无效。
- GET方法和POST获取中文参数出现乱码的问题及解决方法
- java中form以post、get方式提交数据中文乱码问题总结
- java中form以post、get方式提交数据中文乱码问题总结(转)
- JSP 表单输入,UTF编码,get方式提交数据出现中文乱码解决方法
- 解决以GET方式获取中文时乱码问题
- 在jsp编程中,用get提交表单提交正常,而用post方式出现中文乱码-问题
- 通过Http协议以Get和Post方式获取服务器端文本数据
- 解决表单get方式提交时的中文乱码问题
- java中form以post、get方式提交数据中文乱码问题总结
- 解决struts2以GET方式提交表单中文乱码问题
- Delphi xe5 控件TIdhttp的用法post,get解决中文乱码问题