您的位置:首页 > Web前端 > JavaScript

JSP内置对象

2010-07-01 14:52 204 查看
1.JSP内置对象概览
内置对象 类型 作用域
request javax.servlet.http.HttpServletRequest request
response javax.servlet.http.HttpServletRequest page
pageContext javax.servlet.jsp.PageContext page
session javax.servlet.http.HttpSession session
application javax.servlet.ServletContext application
out javax.servlet.jsp.JspWriter page
config javax.servlet.servletConfig page
page java.lang.Object page
exception java.lang.Throwable page

在总结上面的几种重要的内置对象之前,我先总结一下jsp中的四种作用域

2.JSP四种作用域
page
request
session
application
在JSP中共享数据时,其中有三个重要的方法
 public void setAttribute(String name, Object object)
public Object getAttribute(String name)
public void removeAttribute(String name)
(1)page
表示在整个页面之中有用,通过pageContext来实现,区分于page对象,一般的,
page对象不常用,在设置页面的属性的时候用page指令就足够了。
应用:在纯粹的jsp代码开发,这个显不出其功能
(2)request
表示在一次请求中有用,满足<jsp:forword>和getRequestDispatcher跳转就可以,<jsp:forword>
是服务器端的跳转,跳转后,其url不会变
(3)session
表示在一个会话范围内有用,只要是一个会话(或一个用户)不管怎么跳转都可以
应用:用于验证用户是否登录
(4)application
表示整个应用程序都有用
(5)使用以上的作用域来共享数据的原则是:
能用request就不要用session,能用session就不要用application
以内存的开销(即性能上)的考虑
(6)上面不是说了三种重要的方法么,其实这都可以用pageContext来完成:
setAttribute(java.lang.String name, java.lang.Object o, int scope)
其中scope是表示的PageContext静态常量,就是以上的四种范围,这里就不一一例举了,下来可以去看看api文档便知道
(7)有人说,我开销了内存去共享数据,那我不要共享数据的时候怎么办呢?
呵呵!仔细看看aip文档中在PageContext下有一个方法可以移处:
removeAttribute(java.lang.String name, int scope)
这里的scope和上面说的一样
(这个本人做了一个实验,有需要的人可以call me)
说完了这四种作用域,我们下面就来具体看看在这9种内置对象中比较重要的几种内置对象吧!

3.内置对象
概述:内置对象是由web容器实例化出来的,所以可以直接使用。
(1)request对象
request实际上就是服务器端接受客户端请求的信息,接受后进行进一步的处理,常用的方法有getParameter(String name),getParameterValues(Sting name),getParameterNames()。
getParameter这个方法用于接受一个请求信息时用的最多
getParameterValues这个方法接受回来的是一个字符串数组,在有复选框,多个下拉列表项时用的多
getParameterNames这个方法返回一个枚举(参数名称),用熟练了和上面两种方法结合使用是最好的(个人认为)

(2)response对象
response主要是用于向客户端发送响应的信息(设置Http头信息,重定向,设置Cookie)
·设置头信息:
response.setHeader("头信息内容","头信息参数")
比如:
response.setHeader("refresh","2")表示2秒刷新一次页面
response.setHeader("refresh","2;URL=页面名称")表示2秒跳转到URL中指定的页面上
·重定向
response.sendRedirect("path")
我们在前面学过的<jsp:forword page=""/>,这两个又有什么区别呢?
简单的说response.sendRedirect是客户端跳转,而<jsp:forword page=""/>是服务器端的跳转(这里就不详细的分析了)
·设置Cookie
response.addCookie(cookie);这个就不用多说了,在servlet中已经讲的很清楚了。呵呵!

(3)session对象
主要用来保存用户的各种信息和判断用户是否登录(合法),一般的保存时间是(900秒),可以人为的释放session.invalidate()(可以用来做用户注销功能)
session的主要的方法:
·只要在page指令中不把其中的session属性设置为false,那么在用户一连接到服务器就立刻给用户分配一个sessionID(不会重复),这个id是服务器统一管理的,人为是不能控制,那怎么来获取这个id呢?看下面的方法:
session.getID() 其中取得的id长度为32位
·判断是否是新的session
session.isNew();
·还可以通过getCreationTime()得到session创建的时间和getLastAccessedTime()得到最后操作时间来求出用户的在线时间
·在总结的开头已经总结了session中放置数据,这里就不再重复了。
这里总结下Cookie和session区别和联系
·区别
Cookie是保存在客户端的,安全性不高
session是服务器端的,安全性高些,但是更占用资源
·联系
session使用了Cookie的机制,如果Cookie被禁用,那么session也没用。

(4)application对象
application和session都是用来保存用户的各种信息,但是application是所有用户共享的,而session是用户私有的。这里保存属性的方法在总结开头也说了,这里也不重复了。

(5)config对象
config对象一般用来取得服务器的初始化配制参数,这里要去配制WEB-INF/web.xml(这个是关于xml的一些知识了,就不说了,超出了总结的范畴)呵呵!补充一点:去配制*.property文件也可以哈!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: