(1)直接在web contain中进行对象的实例化。
内置对象 |
类型 |
作用域 |
pageContext |
javax.servlet.jsp.PageContext |
page |
request |
javax.servlet.http.HttpServletRequest |
request |
response |
javax.servlet.http.HttpServletResponse |
page |
session |
javax.servlet.http.HttpSession |
session |
application |
javax.servlet.ServletContext |
application |
config |
javax.servlet.ServletConfig |
page |
out |
java.servlet.jsp.JspWriter |
page |
page |
java.lang.Object |
page |
exception |
java.lang.Throwable |
page |
(2)jsp内置对象分类
与servlet有关的隐含对象:page,config
与input/output有关的隐含对象:out,request,response
与jsp执行时有关的context的隐含对象:session,application,pageContext
与error有关的隐含对象:exception
(3)属性的设置和取得
设置属性:public void setAttribute(String name,Object.value)
取得属性:public void getAttribute(String name)
(4)四种属性保存范围
在一个页面范围内:page
在一次服务器请求范围内:request
在一次会话范围内:session
在一个应用服务器范围内:application
(5)page范围
Page范围通过PageContext对象来设置,将属性保存在一次请求范围之内,必须使用服务器端跳转<jsp:forward/>
(6)session范围
只保留一个用户的信息
(7)application范围
所有的用户都可以取得此信息,此信息在整个服务器上被保留。Application属性范围值,只要设置一次,则所有的网页窗口都可以取得数据。
Application,session,request都需要跨多个页,属性保存时内存开销的
如果能使用request就不适用session,能使用session的就不要使用application。
(8)pageContext默认情况下表示一个页面的保存范围
public void setAttribute(String name,Object value,int scope)
public static final int APPLICATION_SCOPE:application范围
public static final int SESSION_SCOPE:session范围
public static final int REQUEST_SCOPE:request范围
public static final int PAGE_SCOPE:page范围
四种属性范围都是依靠pageContext展开的,但是在开发中,往往使用session,request范围
六,response对象
(1)主要功能
Response对象是服务器端回应客户端的请求。
所属的接口:javax.servlet.http.HttpServletResponse
HttpServletResponse是ServletResponse接口的子接口
(2)设置头信息
response.setHeader("refresh","刷新的时间");
response.setHeader("refresh","刷新的时间;URL=跳转的页面");
(3)重定向
response.sendRedirect("跳转的页面");地址栏改变所以是客户端跳转,所有代码执行完再跳转
response.sendRedirect("跳转的页面?属性=值");
(4)设置cookie
Cookie是服务器端保存在客户端的一组资源。
Cookie对象:Cookie 对象名=new Cookie("cookie名称","cookie的值")
通过response对象将cookie设置到客户端:response.addCookie("cookie对象")
通过resquest对象在服务器端取得cookie:request.getCookies()得到Cookie的对象数组
Cookie c[ ]=request.getCookies();实际上客户端的Cookie是通过http头信息 发送到服务器端上的
Cookie对象的方法:cookie对象名。getName()得到cookie的名字;cookie对象名。getValue()得到cookie的值;Jsessionid表示在服务器上的唯一标示;cookie对象名。setMaxAge()设置最大保存的时间。
(5)两个跳转的区别
1,<jsp:forward page=""/>
服务器端跳转,地址栏不改变;执行到跳转语句后无条件立刻跳转,之后的代码不再被执行;如果使用forward跳转,则一定要在跳转之前释放掉全部的资源;使用forward时,request设置的属性依然能保留在下一个页面(setAttribute);通过<jsp:param name="属性名" value="值"/>,传递参数。
2,response.sendRedirect("地址")
客户端跳转,地址栏改变;所有代码执行完毕后再跳转;不能保存request属性,因为地址改变了。使用客户端跳转,可以使用重写URL将内容传递。
七,session对象
(1)session功能
Session对象主要用于保存用户的各种信息,知道它的生命周期超过或被人为释放掉为止
可以通过session对象来判断此用户是否是合法用户。
Session对象是javax。Servlet。http。HttpSession接口的实例化对象,session属于http协议范畴之内的对象,所以只有唯一http包下有此接口,没有任何继承关系,用户只要一连接到服务器,则立刻分配一个session给用户。
(2)主要方法
session。getID():服务器上通过session来分别不同的用户,sessionID:任何链接到服务器上的用户,服务器都会为之分配唯一的一个不会重复的sessionID。由服务器统一管理,人为不能控制。
session。getId()。length():id的长度为32位
session。isNew():判断是否是新的用户
session。invalidate():使session失效
session。getCreationTime():得到session的创建时间,返回long类型,通过Date得到时间
session。getLastAccessedTime():得到最后一次操作时间,返回long类型
实例:
<%@page contentType="text/html;charset=gb2312"%>
<%@page import="java.util.*"%>
<%
long l = session.getCreationTime() ;
long l2 = session.getLastAccessedTime() ;
%>
<h1>session CREATE : <%=new Date(l)%></h1>
<h1>session last access: <%=new Date(l2)%></h1>
<h1><%=(l2-l)/1000%></h1>
假如需要求出用户在线时间,使用以下公式:最后操作时间—创建的时间
(3)session属性的设置
session.setAttribute(String name,Object value)
session.getAttribute(String name)
session.removeAttribute(String name)
(4)两种写法的区别
if(name.equals("mldn")&&pass.equals("password")):假如其中的name和pass没有被初始化,那么在执行此句子的时候会出现nullpointexception;但是如果使用该写法则不会出现错误,
if("mldn".equals(name)&&"password".equals(pass))。
(5)session用法
验证用户是否登陆。
(6)session与cookie
Session和cookie用于跨网页共享数据。
Session记录独有的个人信息,在不同页面中传递,使用setAttribute,getAttribute方法
Cookie保存于客户端,供浏览器与web服务器互通数据用的纯文字文件,当ie执行的时候会在计算机中产生一个cookie。
Session比cookie更安全,session比cookie更占用资源,session使用了cookie的机制,如果cookie被禁用,则session也无法使用
八,application与config对象
(1)application简介
Application对象主要的作用就是保存公共信息,属于javax。Servlet。ServletContext,此工作目录的路径不是固定的,有可能此工作目录在c盘上或是在d盘得到的工作目录的真实路径。Application是在整个服务器中保持的只有一个实例的对象。
(2)属性操作
setAttribute(),getAttribute(),removeAttribute()
(3)真实路径
application。getRealPath(String path),其中String path是"/"。
在实际使用中用getServletContext()方法代替application
getServletContext()。getRealPath("/")或者使用this。getServletContext。getRealPath("/")
(4)Jsp安全性Config对象
(a)在j2ee中安全性体现在工作目录的WEB-INF文件夹,页面保存在此文件夹下,外面无法发现此文件夹内的文件,如果要使此文件夹内的文件能被用户访问,则修改WEB-INF文件夹
下存在的web.xml文件,web.xml文件属于整个web站点的配置文件。
<……mapping start>
<servlet>
<servlet-name></servlet-name>
<jsp-file></jsp-file>
<init-param>
<param-name></param-name>
<param-value></param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name></servlet-name>
<url-pattern>/浏览器中输入的地址</url-pattern>
</servlet-mapping>
<……mapping end>
修改web.xml之后重启服务器。
(b)config对象
Config对象一般用来取得服务器的初始化配置参数,但若要使用此对象应在WEB-INF/web.xml之中配置。
Config对象在javax。Servlet。servletConfig中取得初始化参数的方法:
public string getInitParameter(String name)
通过此种功能,可以将数据库链接的一些信息写在配置文件之中—JDBC程序的时候
public Enumeration getInitParameterNames()
与request.getParameterNames()方法类似,是取得全部配置参数的。