JSP内置对象——request 及其响应get和post请求的实例
request对象
客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应。它是HttpServletRequest类的实例。request对象具有请求域,即完成客户端的请求之前,该对象一直有效。常用方法如下:
String getParameter(String name) 返回name制定参数的参数值
String[] getParameterValues(String name) 返回草含参数name的所有值的数组
void setAttribute(String,Object) 存储此请求中的属性。
object getAttribute(Stirng name) 返回iu指定属性的属性值
String getContentType() 得到请求体的MIME类型
String getProtocol() 返回请求用的协议类型及版本号
String getServerName() 返回接受请求的服务器主机名
request对象响应post请求
首先我们在reg.jsp中写一个表单用于提交包含用户名和爱好的表单:
<form name="regForm" action="request.jsp" method="post"> <table> <tr> <td>用户名:</td> <td><input type="text" name="username"></td> </tr> <tr> <td>爱好:</td> <td> <input type="checkbox" name="favorite" value="read">读书 <input type="checkbox" name="favorite" value="music">音乐 <input type="checkbox" name="favorite" value="movie">电影 <input type="checkbox" name="favorite" value="internet">上网 </td> </tr> <tr> <td colspan="2"><input type="submit" value="提交"></td> </tr> </table> </form>
表单的目标页面是"request.jsp",我们可以新建一个request.jsp用于显示表单提交的信息。
为了避免中文乱码,我们统一使用utf-8格式编码,所以(特别是在输入——比如用户名——为中文的时候)我们需要为request设置一下编码,如下:
<% request.setCharacterEncoding("utf-8"); %>
然后我们可以通过如下代码显示表单提交的信息:
用户名:<%=request.getParameter("username") %><br> 爱好: <% String[] favorites = request.getParameterValues("favorite"); for (String favorite : favorites) out.println(favorite + " "); %><br>
效果如下:
request对象同样可以响应get请求。
为了模拟这个过程,我们需要在reg.jsp页面中添加一段超链接的代码模拟以模拟一个get请求:
<a href="request.jsp?username=月光诗人&favorite=read&favorite=movie">get请求</a>
效果如下:
可能存在一些情况是get请求传参的时候出现了中文乱码(我这里没有出现),解决办法是:
打开tomcat目录下conf目录下的server.xml文件,找到如下内容:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
在Connector标签中加上属性URIEncoding="utf-8",如下:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="utf-8"/>
既可解决get请求中的中文乱码问题。