jsp request获取url参数和解决中文乱码 作者:马育民 • 2021-04-18 15:48 • 阅读:10135 # 例子 如下面这种,请求资源后面,在 `?` 后面的就是参数 [![](https://www.malaoshi.top/upload/pic/jsp/QQ20210418155643.jpg)](https://www.malaoshi.top/upload/pic/jsp/QQ20210418155643.jpg) [![](https://www.malaoshi.top/upload/pic/jsp/QQ20210418155718.jpg)](https://www.malaoshi.top/upload/pic/jsp/QQ20210418155718.jpg) # url参数格式 ``` http://ip:port:8080/context/资源?key1=value1&key2=value2 ``` # 分类 - 超链接带有参数 - form表单,用 `get` 方式提交请求 # 获取参数方法 - getParameter() 获取请求的参数,如表单数据、url中的参数 - getParameterValues() 同 `getParameter()`,在多个值的时候使用,如:获取 checkbox 控件值 # 例子:超链接 ``` http://localhost:8080/context/test.jsp?id=123 ``` jsp代码 ``` <% String id=request.getParameter("id"); out.write("id="+id) %> ``` # 例子:form表单以get方式提交 创建 reg.jsp,内容如下: ``` 用户名: 密码: 性别:女 男 爱好:王者荣耀 吃鸡 抖音 ``` 创建 doReg.jsp,内容如下: ``` <% request.setCharacterEncoding("UTF-8"); String username=request.getParameter("username"); String password=request.getParameter("password"); String sex=request.getParameter("sex"); String[] like=request.getParameterValues("like"); out.write("用户名:"+username+""); out.write("密码:"+password+""); out.write("性别:"+sex+""); out.write("数组长度:"+like.length+""); out.write("爱好:"); for(String item:like){ out.write(item+""); } //out.write("爱好:"+like+""); %> ``` # 中文乱码 如果用 chrome、火狐、微软的edge浏览器,一般不会乱码,不需要额外处理 如果用 IE8以前的浏览器,可能会出乱码,解决方法: ``` String username = req.getParameter("username"); //先以 iso8859-1 进行编码 ,再以 utf-8 进行解码 username = new String(username.getBytes("iso-8859-1"), "UTF-8"); ``` 原文出处:http://malaoshi.top/show_1IXy5OVgzYh.html