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常见用法

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

JSP内置对象request 常用方法 案例

JSP九大内置对象有 request,out,response,application,session,pageContext,page,confid,exception 下面我写一个关于reque...
  • qq_36074042
  • qq_36074042
  • 2017-05-08 14:07:42
  • 826

JSP中request属性的用法

一、request.getParameter() 和request.getAttribute() 区别 1.request.getParameter()取得是通过容器的实现来取得通过类似post...
  • luofeixiongsix
  • luofeixiongsix
  • 2015-10-31 15:33:38
  • 3624

jsp中request经常是的获取参数的方法总结

下面将获取参数的方法都列出来说一说:request.getParameter(String name) //获取指定name的值,若name有多个则获取第一个value值 request.getPar...
  • xinghuo0007
  • xinghuo0007
  • 2017-04-28 19:14:26
  • 4477

JSP中的Request请求对象

该对象封装了用户提交的信息,通过调用该对象相应的方法可以获取封装的信息。 Request常用的方法如下 方法名 作用 getParameter(Strin...
  • qq208617107
  • qq208617107
  • 2016-04-22 20:56:43
  • 800

JSP request所有方法

  • java_pengjin
  • java_pengjin
  • 2010-12-22 15:23:00
  • 8044

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

/* request是jsp的内置对象 与 HttpServletRequest类相关  实现了 javax.servlet.ServletRequest接口  用来处理用户提交的数据   *...
  • yue7603835
  • yue7603835
  • 2011-11-14 23:32:44
  • 9072

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

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

JavaWeb之Request对象和Response对象详解

一:概述 Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象、和代表响应的response对象 一、Response对象     1.Res...
  • yuanjian19900610
  • yuanjian19900610
  • 2013-04-14 14:28:30
  • 13992

JSP的9个内置对象之request对象

request对象是JSP中重要的对象,每个request对象封装着一次用户请求,并且所有的请求参数都被封装在request对象中,因此request对象是获取请求参数的重要途径。 除此之外,req...
  • qq_34342083
  • qq_34342083
  • 2017-01-01 09:50:23
  • 195
收藏助手
不良信息举报
您举报文章:JSP学习笔记三之response对象和request对象
举报原因:
原因补充:

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