JSP内置对象(上)

内置对象简介

JSP内置对象是Web容器创建的一组对象,不使用new关键字就可以使用的内置对象。

 

 

JSP九大内置对象

 

 

Web程序的请求与响应模式

用户发送请求(request)

服务器给用户响应(response)

 

out对象

out对象是JspWriter类的实例,是向客户端输出内容常用的对象。

Eg:

<body>
     <h1>out内置对象</h1>
<%
      out.println("<h2>静夜思</h2>");
      out.println("床前明月光<br>");
      out.println("疑是地上霜<br>");
      out.println("举头望明月<br>");
      out.println("低头思故乡<br>");
%>
缓冲区大小:<%=out.getBufferSize() %>byte<br>
缓冲区剩余大小:<%=out.getRemaining()  %>byte<br>
是否自动清空缓冲区:<%=out.isAutoFlush()  %><br>

 

get与post

 

 request对象

客户端的请求信息被封装在request对象中,通过它才能了解客户的需求,然后做出响应。

它是HttpServletRequest类的实例。request对象具有请求域,即完成客户端的请求之前,该对象一直有效。

 常用方法

Eg:

reg.jsp

.....
<
body> <h1>用户注册</h1> <hr> <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> </body>
.....

request.jsp

......
<body>
<h1>request内置对象</h1>
<%
     request.setCharacterEncoding("utf-8");//解决中文乱码问题
%>
用户名:<%=request.getParameter("username") %><br>
爱好:<%
        String[] favorites = request.getParameterValues("favorite");
for(int i=0; i<favorites.length; i++)
{       out.println(favorites[i]+"&nbsp;&nbsp;");
}
%>
</body>
......

 

response对象

response对象包含了响应客户请求的有关信息,但在JSP中很少直接用到它。它是HttpServletResponse类的实例。

response对象具有页面作用域,即访问一个页面时,该页面内的response对象只能对这次访问有效,其它页面的response对象对当前页面无效。

常用方法:

response.jsp:

<%@ page language="java" import="java.util.*,java.io.*" pageEncoding="utf-8"%>
<%
    response.setContentType("text/html;charset=utf-8");//设置响应的MIMI类型
    
    out.println("<h1>response内置对象</h1>");
    out.println("<hr>");
    //out.flush();//强制清空缓存区,并且把缓冲区内容写到浏览器上,可测试有无这句话的效果。
    
    PrintWriter outer = response.getWriter();//获得输出流对象
    outer.println("response对象生成的输出流outer对象");
    response.sendRedirect("reg.jsp");//请求重定向,测试本句话需要为out.flush();加注释否则会抛出异常。

%>

 

 

请求转发与请求重定向

请求重定向:客户端行为,response.sendRedirect(),从本质上讲等同于两次请求,前一次的请求对象不会保存,地址栏的URL地址会改变。response对象的方法。

请求转发:服务器行为,request.getRequestDispatcher().forward(req,resp);是一次请求,转发后请求对象会保存,地址栏的URL地址不会改变。request对象的方法。

解释理解:

假设去办理护照

重定向:你先去了A局,A局的人说:这事不归我们管,去B局,然后,你就从A局退了出来,自己乘车去了B局。

转发:你去了A局,A局看了以后,知道这个事情其实应该B局来管,但是他没有把你退回来,而是让你坐一会,自己到后面办公室联系了B的人,让他们办好后送过来。

 

posted @ 2017-06-06 09:24  Lucky锦  阅读(188)  评论(0)    收藏  举报