jsp request获取url参数和解决中文乱码 作者:马育民 • 2021-04-18 15:48 • 阅读:10161 # 例子 如下面这种,请求资源后面,在 `?` 后面的就是参数 [](https://www.malaoshi.top/upload/pic/jsp/QQ20210418155643.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,内容如下: ``` <form method="get" action="doReg.jsp"> 用户名:<input name="username" type="text"><br> 密码:<input name="password" type="text"><br> 性别:<input name="sex" value="0" type="radio">女 <input name="sex" value="1" type="radio">男<br> 爱好:<input name="like" value="wzry" type="checkbox">王者荣耀 <input name="like" value="cj" type="checkbox">吃鸡 <input name="like" value="dy" type="checkbox">抖音 <br> <input value="注册" type="submit"> </form> ``` 创建 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+"<br>"); out.write("密码:"+password+"<br>"); out.write("性别:"+sex+"<br>"); out.write("数组长度:"+like.length+"<br>"); out.write("爱好:"); for(String item:like){ out.write(item+"<br>"); } //out.write("爱好:"+like+"<br>"); %> ``` # 中文乱码 如果用 chrome、火狐、微软的edge浏览器,一般不会乱码,不需要额外处理 如果用 IE8以前的浏览器,可能会出乱码,解决方法: ``` String username = req.getParameter("username"); //先以 iso8859-1 进行编码 ,再以 utf-8 进行解码 username = new String(username.getBytes("iso-8859-1"), "UTF-8"); ``` 原文出处:/show_1IXy5OVgzYh.html