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学习笔记之response对象

response对象表示服务器端对客户端的回应,response本身是HttpServletResponse的对象,HttpServletResponse对象本身也是ServletResponse对象...
  • hanxuehen
  • hanxuehen
  • 2012年12月21日 16:49
  • 15888

JSP response用法

我正在学习response对象的setContentType方法将当前页面保存为word文档吗?                  if(str==null)     {str="";     }  ...
  • qsd007
  • qsd007
  • 2007年03月21日 19:04
  • 5199

JSP程序中response对象实现文件下载的两种方式

内容提要:JSP程序中response对象实现文件下载的两种方式,这篇文章主要介绍了JSP隐含对象response实现文件下载的两种方法,很简单,但很实用,需要的朋友可以参考下。   这篇文章主...
  • axl19530209
  • axl19530209
  • 2015年01月14日 08:44
  • 1747

【JSP开发】关于下载文件response的设置

package cn.edu.Response; import java.io.FileInputStream; import java.io.FileOutputStream; import j...
  • u013517797
  • u013517797
  • 2015年01月30日 11:33
  • 836

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

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

JSP 内置对象request常见用法

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

实例详解JSP内置对象--response对象

  • 2010年12月09日 09:10
  • 105KB
  • 下载

response.end 在 jsp下的代替

问:程序终止与输出终止   答:   程序中止:return;   输出中止:out.close();这一句相当于ASP的response.end...
  • zynovo
  • zynovo
  • 2006年01月22日 17:53
  • 2181

JSP request所有方法

  • java_pengjin
  • java_pengjin
  • 2010年12月22日 15:23
  • 7947

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

下面将获取参数的方法都列出来说一说:request.getParameter(String name) //获取指定name的值,若name有多个则获取第一个value值 request.getPar...
  • xinghuo0007
  • xinghuo0007
  • 2017年04月28日 19:14
  • 1261
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JSP学习笔记三之response对象和request对象
举报原因:
原因补充:

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