首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

java_web 温习 2 jsp 与 servlet (3)jsp内置对象

2012-09-17 
java_web 复习 2 jsp 与 servlet (3)jsp内置对象jsp内置对象 JSP 有以下九种内置对象,包括: request,请求

java_web 复习 2 jsp 与 servlet (3)jsp内置对象

jsp内置对象


JSP 有以下九种内置对象,包括:
request,请求对象
response,响应对象
pageContext,页面上下文对象
session,会话对象
application,应用程序对象
out,输出对象
config,配置对象
page,页面对象
exception,异常对象

从本质上讲,JSP的这些内置对象其实都是由特定的Java类所产生的,在服务器运行时根据情况自动生成,一下是内置对象相对应的类的对应表,在jsp中可以直接使用对象的实例,内置对象 服务器帮忙创建好了。

java_web 温习 2 jsp 与 servlet (3)jsp内置对象
?
“request” 对象代表的是来自客户端的请求,例如我们在FORM表单中填写的信息等,是最常用的对象 。 关 于 它 的 方 法 使 用 较 多 的 是getParameter 获得对应name的参数值、 getParameterNames 获得参数名的enumeration 通过调用 hasMoreElements()和nextElement()来遍历整个集合?和getParameterValues()返回string数组,通过调用这几个方法来获取请求对象中所包含的参数的值

?

 <body>     <%        Enumeration e = request.getParameterNames();     while(e.hasMoreElements())   {System.out.println(e.nextElement());      }       String[] values = request.getParameterValues("age");          for(String value : values)     {System.out.println(value);          }          String value = request.getParameter("age");          System.out.println(value);    %>

?

?“response” 对象代表的是对客户端的响应,也就是说可以通过“response”对象来组织发送到客户端的数据。但是由于组织方式比较底层,所以不建议普通读者使用,需要向客户端发送文字时直接使用“out” 对象即可。

?

“pageContext”? 对象直译时可以称作“页面上下文”对象,代表的是当前页面运行 的 一 些 属 性 , 常 用 的 方 法 包 括findAttribute 、 getAttribute 、getAttributesScope 和getAttributeNamesInScope,一般情况下“pageContext” 对象用到得也不是很多,只有在项目所面临的情况比较复杂的情况下,才会利用到页面属性来辅助处理。一般Servlet容器会使用该对象。

?

“session” 对象代表服务器与客户端所建立的会话,当需要在不同的JSP页面中保留客户信息的情况下使用,比如在线购物、客户轨迹跟踪等。

?

HTTP是无状态(stateless)协议;
Web Server 对每一个客户端请求都没有历史记忆;
Session用来保存客户端状态信息;

?

void setAttribute(String name,Object value)

?

Binds an object to this session, using the name specified. If an object of the same name is already bound to the session, the object is replaced.

?

Object getAttribute(String name)

?

Returns the object bound with the specified name in this session, or null if no object is bound under the name.

?

<HTML>   <BODY>   <%     String Name=request.getParameter("UserName");     session.setAttribute("LogName", Name);   %>   你的名字"<%=Name%>"已经写入session    <br>   <a href='./check_session.jsp'>check</a>   </BODY> </HTML> 

?

<HTML><BODY>   <%     String yourName=(String)session.getAttribute("LogName");     if (yourName= =null)     {     %>您还未登录     <%     }else     {     %>     "<%=yourName%>"已经登录     <%     }   %> </BODY></HTML> 

??

“out” 对象代表了向客户端发送数据的对象,与“response” 对象不同,通过“out” 对象发送的内容将是浏览器需要显示的内容,是文本一级的,可以通过“out” 对象直接向客户端写一个由程序动态生成HTML文件。常用的方法除了print和println之外,还包括clear、clearBuffer 、 flush 、 getBufferSize 和getRemaining,这是因为“out” 对象内部包含了一个缓冲区,所以需要一些对缓冲区进行操作的方法。

?

“config” 对象提供一些配置信息,常用的方法有getInitParameter和getInitParameterNames,以获得Servlet初始化时的参数。
“page” 对象代表了正在运行的由JSP文件产生的类对象,不建议一般读者使用。
“exception” 对象则代表了JSP文件运行时所产生的异常对象,此对象不能在一般JSP文件中直接使用 , 而只能在使用了 “ <%@? page isErrorPage="true "%>”的JSP文件中使用?
?

要想 getAttribute 必须先放进去 setAttribute

?

request 的 setAttribute 与 getAttribute 方法一般都是成对出现的,首先通过 setAttribute 方法设置属性与属性值,然后通过getAttribute 方法根据属性获取到与该属性对应的对象值(获取到之后一般都需要进行向下类型转换,将属性值转换为真正的对象)setAttribute与 getAttribute方法都是在服务器端内部执行的,客户端不知道服务器端是否执行过这两个方法。

?

request对象内数据的存活范围就是在request对象的存活范围内,当客户端向服务器端发送一个请求,服务器向客户端返回一个响应后,该请求对象就被销毁了;之后再向服务器端发送新的请求时,服务器会创建新的 request 对象,该request 对象与之前的request 对象没有任何关系,因此也无法获得在之前的 request 对象中所存放的任何数据。

session对象内数据的存活范围也就是session对象的存活范围(?只要浏览器不关闭,session对象就会一直在?) ,因此在同一个浏览器窗口中,无论向服务器端发送多少个请求,session 对象只有一个。?

application(应用对象) :存活范围最大的对象,只要服务器没有关闭,application对象中的数据就会一直存在。在整个服务器运行过程当中,application 对象只有一个。

?

request、 session以及application这3个对象的范围是逐个增加的:
equest只在一个请求的范围内; ?session 是在浏览器窗口的范围内?;application则是在整个服务器的运行过程中。

?

关于session作用范围(网站找了一些资料)?

String username = req.getParameter("username");req.setAttribute("username", username);RequestDispatcher rd = req.getRequestDispatcher("myResult.jsp"); rd.forward(req, resp);

HttpServletResponse 对象的 sendRedirect(String location)方法称作重定向。如果 location 地址前面加上“/”,则表示相对于 Servlet容器的根来请求,即 http://localhost:8080,如果location地址前没有加上“/”,则表示相对于当前请求的 URI来寻找地址。?
RequestDispatcher的forward(request, response)方法称作请求转发。?

请求转发与重定向的区别。

请求转发,整个过程处于同一个请求当中

?

重定向。实际上客户端会向服务器端发送两个请求。

?

RequestDispatcher 是 通 过 调 用 HttpServletRequest 对象的getRequestDispatcher()方法得到的,是属于请求对象的方法。


sendRedirect()是 HttpServletResponse 对象的方法,即响应对象的方法,既然调用了响应对象的方法,那就表明整个请求过程已经结束了,服务器开始向客户端返回执行的结果。

热点排行