http协议4---GET方式和POST方式获取表单数据举例3(统一方式获取,解决中文乱码问题)
来源:互联网 发布:淘宝好看的情侣装店铺 编辑:程序博客网 时间:2024/05/29 19:44
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
<!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);}}
0 0
- http协议4---GET方式和POST方式获取表单数据举例3(统一方式获取,解决中文乱码问题)
- http协议3---GET方式和POST方式获取表单数据举例2(统一方式获取)
- http协议2---GET方式和POST方式获取表单数据举例 1(非统一方式获取数据,比较麻烦)
- GET&POST方式解决中文乱码问题
- 解决以GET方式获取中文时乱码问题
- 通过Http协议以Get和Post方式获取服务器端文本数据
- get post 中文请求乱码解决方式
- 解决表单Post方式提交的中文乱码问题
- 解决表单get方式提交时的中文乱码问题
- 解决struts2以GET方式提交表单中文乱码问题
- 解决struts2以GET方式提交表单中文乱码问题
- 解决struts2以GET方式提交表单中文乱码问题
- struts2解决get和post方式中文乱码
- 过滤器解决get和post方式提交的中文乱码
- 表单通过get和post方式提交数据解决乱码的方法
- javaweb之request乱码解决(数据提交以post方式和get方式)
- get和post方式提交中文乱码问题
- get/post 方式,form/数据的获取
- SegmentFault 技术周刊 Vol.8 - React,“5 分钟快速入门”
- Memcached安装 mac
- 我的第一篇博客
- Android——工具类(屏幕尺寸、sp转换为px、dp转换为px)
- Inten 隐式意图 打电话
- http协议4---GET方式和POST方式获取表单数据举例3(统一方式获取,解决中文乱码问题)
- Unity NGUI UICamera总结
- linux 下执行.sh文件总是提示permission denied
- 用 Flask 来写个轻博客 (29) — 使用 Flask-Admin 实现后台管理 SQLAlchemy
- java系统高并发解决方案
- 安卓自定义View-Canvas之绘制图形
- 局域网内连接MySQL
- react native 不同页面之间传参 传值 __listview列表跳转详情页 带参数 传值
- html之js