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 + "&nbsp;&nbsp;");
%><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请求中的中文乱码问题。

原文地址:https://www.cnblogs.com/moonlightpoet/p/5599605.html