JSP学习笔记三之response对象和request对象

原创 2016年02月27日 15:24:28

接着上一篇,我们接着讲JSP中的内置隐式对象。这篇博客介绍的是request和response对象。

A. request对象

     request对象是javax.servlet.http.HttpServletRequest 类的实例。每当客户端请求一个JSP页面时,JSP引擎就会制造一个新的request对象来代表这个请求。request对象提供了一系列方法来获取HTTP头信息,cookies,HTTP方法等等。客户端的请求信息被封装在request对象中,通过它才能了解到用户的需求,然后做出响应。它是HttpServletRequest类的实例。request对象具有请求域,即完成客户端的请求之前,该对象一直有效。常用方法如下:

String getParameter(String name) 返回name指定参数的参数值

String[] getParameterValues(String name) 返回包含参数name的所有值的数组

void setAttribute(String, Object) 存储此请中的属性

object getAttribute(String, Object) 返回指定属性的属性值

String getContentType() 得到请求体的MIME类型

String getProtocol() 返回请求用的协议类型及版本号

String getServerName() 返回接受请求的服务器主机名

代码实例:

reg.jsp

<body>
    <h1>用户注册</h1><br/>
    <hr>
        <form action="03/request.jsp" name="regForm" 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="movie"/>电影
    				<input type="checkbox" name="favorite" value="internet"/>上网
    				<input type="checkbox" name="favorite" value="football"/>足球
    			</td>
    		</tr>
    		<tr>
    			<td colspan="2"><input type="submit" value="登陆" /></td>
    		</tr>
    	</table>
    </form>
  </body>

request.jsp

 <body>
    <h1>request的内置对象</h1><br/>
    <hr>
    <% 
    //设置默认的字符
    request.setCharacterEncoding("utf-8");
    %>
             用户名:<%=request.getParameter("username") %><br>
             爱好:<%
             if(request.getParameterValues("favorite")!=null){
            	 String[] favorite=request.getParameterValues("favorite");
                 for(String f:favorite){
                	 out.println(f);
                	 }
             }
            
             %>
  </body>

结果显示:



             <%request.setCharacterEncoding("utf-8"); %>//解决中文乱码,但不能解决URL传递中文出现的乱码

注意:

            但是在测试超链接<a href="request.jsp?username=李四">测试url传参数</a>的时候,我们将参数的value直接在URL上进行赋值。如果赋值的结果是中文,在这种情况下如果使用request的setCharacterEncoding方法来进行修改字符集是无法解决中文乱码的问题的。

            正确的解决方法为:在Tomcat服务器中,在server.xml文件修改Connector,在里面添加:URLEncoding="utf-8"即可。

B、response对象

          response对象是javax.servlet.http.HttpServletResponse类的实例。当服务器创建request对象时会同时创建用于响应这个客户端的response对象。同时response对象具有页面Page作用域,即访问一个页面时,该页面的response对象只对本次访问有效,其他页面的response对象对当前页面无效。

          response对象也定义了处理HTTP头模块的接口。通过这个对象,开发者们可以添加新的cookies,时间戳,HTTP状态码等等。

常用方法:

String setCharacterEncoding()//设置响应字符编码格式

String getCharacterEncoding()//获取响应字符编码格式

void setContentType(String type)//设置响应MIME类型

sendRedirect(java.lang.String location)//请求重定向

PrintWriter getWriter()//获取打印输出对象

注意:PrintWriter对象的输出先于内置out对象。
解决方法:
out.println();
out.flush();//清空缓冲区并将缓冲区内容输出到浏览器
PrintWriter outer=response.getWriter();
outer.println();

-------------------------------------------*-----------------------------------------------------

代码实例:

reg.jsp

<body>
    <h1>用户注册</h1><br/>
    <hr>
    <form action="03/response.jsp" name="regForm" 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="movie"/>电影
    				<input type="checkbox" name="favorite" value="internet"/>上网
    				<input type="checkbox" name="favorite" value="football"/>足球
    			</td>
    		</tr>
    		<tr>
    			<td colspan="2"><input type="submit" value="登陆" /></td>
    		</tr>
    	</table>
    </form>
  </body>

response.jsp

<body>
   <%
   	 out.println("<h1>内置对象response</h1>");
   	 out.println("<hr>");
   	 //out.flush();//添加缓冲区域刷新
   	 PrintWriter pw=response.getWriter();
   	 pw.println("这里是从内置对象response中获取的输出流。");
   
   	 //进行服务器响应的重定向操作
   	 response.sendRedirect("request.jsp");
   
   	 //进行客户端的转发请求操作
   	 //request.getRequestDispatcher("request.jsp").forward(request, response);
   %>
  </body>

request.jsp

<body>
    <h1>request的内置对象</h1><br/>
    <hr>
    <% 
    //设置默认的字符
    request.setCharacterEncoding("utf-8");
    %>
             用户名:<%=request.getParameter("username") %><br>
             爱好:<%
             if(request.getParameterValues("favorite")!=null){
            	 String[] favorite=request.getParameterValues("favorite");
                 for(String f:favorite){
                	 out.println(f);
                	 }
             }
            
             %>
  </body>

注意:在response.jsp的中分别使用的是服务器的请求重定向和客户端的请求转发操作。

首先看看请求重定向的结果:




接下来看看请求转发的结果:




这里总结一下重定向和转发请求的作用:

请求重定向:客户端行为,相当于两次请求,前一次请求的内容不会被保存,url路径会改变(查看上面的图片中的URL)。
response.sendRedirect("request.jsp"
请求转发:服务器行为,一次请求,转发后请求对象会保存,url路径不变(查看上面的图片中的URL)
requst.getRequestDispatcher("st.jsp").forward(request,response




相关文章推荐

JSP内置对象request的方法的使用

/* request是jsp的内置对象 与 HttpServletRequest类相关  实现了 javax.servlet.ServletRequest接口  用来处理用户提交的数据   *...

JSP 内置对象request常见用法

1、访问请求参数 传递参数 login.jsp关键 代码 说明:如果指定的参数不存在,将返回null;如果指定了参数名,但未指定参数值,将返回空的字符串"。 因为所有的req...

JSP中request属性的用法

一、request.getParameter() 和request.getAttribute() 区别 1.request.getParameter()取得是通过容器的实现来取得通过类似post...

JSP脚本中的9个内置对象---06 request对象

request对象是获取请求参数的重要途径. 每个request对象封装着一次用户请求,所有的请求参数都被封装在requset对象中.request可代表本次请求范围,可用于操作request范围的...
  • sjbzl
  • sjbzl
  • 2017年01月03日 13:42
  • 235

JSP内置对象(一)——request对象

request对象是从客户端向服务器发出请求,包括用户提交的信息以及客户端的一些信息。 客户端可通过HTML表单或在网页地址后面提供参数的方法提交数据,然后通过request对象的相关方法来获取这些...
  • cq1982
  • cq1982
  • 2015年02月28日 12:53
  • 584

request对象JSP学习

1、request对象是JSP中的重要对象,每个request对象封装着一次用户请求,并且所有的请求参数都被封装在request对象中,因此request对象获取请求参数的重要途径。 2、另外requ...

Request对象详细介绍

在做Web端程序开发时,少不了与这两个内置对象打交道。可以说整个客户端与服务端之间的交互都是通过这两个内置对象做关联,下面来详细的说一下。  1.Request对象   该对象用来在服务器端处理客户端...

request对象和response对象

web服务器收到客户端的HTTP请求,会针对每一次请求分别创建一个用于代表请求的request对象和代表响应的response对象。 1.要得到客户机提交过来的数据,只需要找request对象就行了...

Response对象通过字节流输出中文内容

Response对象通过字节流输出中文内容:

JSP学习笔记之response对象

response对象表示服务器端对客户端的回应,response本身是HttpServletResponse的对象,HttpServletResponse对象本身也是ServletResponse对象...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JSP学习笔记三之response对象和request对象
举报原因:
原因补充:

(最多只允许输入30个字)