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

jsp

2016-05-03 13:24 369 查看
监听器

ServletContext

ServletContext是定义在javax.servlet包中的对象。它定义了用于WEB应用中的服务器端组件关联servlet容器的方法集合。

ServletContext经常被用于存储对象的区域,这些对象在WEB应用中的所有的服务器端组件中使用。你可以把ServletContext当作在WEB应用中共享的存储区域。把一个对象放置到ServletContext中时,它存在于WEB应用的整个生命周期中,除非它被明确的删除或替换。在ServletContext中定义了四个方法来实现存储区的共享功能。

表2.1描述了四个方法:

setAttribute(String name,Object obj)

通过名称绑定一个对象并存储对象到当前ServletContext。如果指定的名称已经被使用过,这个方法会删除旧对象绑定为新对象。

getAttribute(String name)

返回指定名称的对象,如果名称不存在返回null。

removeAttribute(String name)

从ServletContext中删除指定名称的对象

getAttributeNames()

返回在ServletContext中的指定名称的对象集合而ServletContext在jsp中所对应的就是application, application为ServletContext的一个引用

示例:

Servlet中

// 获取ServletContext

ServletContext context = getServletContext();

// 获取

String userName = (String)context.getAttribute(“USERNAME”);

在对应的Jsp中

String userName = (String)application.getAttribute(“USERNAME”);

application对象

(1) 当 Web 服务器启动时,Web 服务器会自动创建一个application 对象。 服务器启动时, 服务器会自动创建一个 对象。 application 对象一旦创建,它将一直存在,直到 Web 服务器关闭。对象一旦创建,它将一直存在, 服务器关闭。 一个 Web 服务器通常有多个 Web 服务目录 (网站),当 Web 服务器启动时, 它自动为每个 Web服务目录都创建一个 application 对象,这些 application 对象 各自独立,而且和 Web 服务目录一一对应。 对象, 因此,application 对象 访问同一个网站的客户都共享一个application 对象, 可以实现多客户间的数据共享。 访问不同网站的客户, 对象不同。访问不同网站的客户,对应的 application 对象不同。 (2) application 对象的生命周期: Web 服务器启动, 对象的生命周期 从的生命周期: 直到Web 服务器关闭。 注意: 应用程序启动后, 对象, 注意:一个 Web 应用程序启动后,将会自动创建一个 application对象,而 对象, 且在整个应用程序的运行过程中只有一个 application 对象,也即所有访问该网 只有一个 对象。 访问网站的客户都共享一个application 对象。

request 请求对象  类型 javax.servlet.ServletRequest 作用域 Request

response 响应对象 类型 javax.servlet.SrvletResponse 作用域 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 页面对象 类型 javax.lang.Object 作用域 Page

exception 例外对象 类型 javax.lang.Throwable 作用域 page

四个作用域

第一个作用域是page,他只在当前页面有效,也就是用户请求的页面有效,当当前页面关闭或转到其他页面时,page对象将在响应回馈给客户端后释放。

第二个作用域是request,他在当前请求中有效,request可以通过setAttribute()方法实现页面中的信息传递,也可以通过forward()方法进行页面间的跳转,需要注意的是request是转发不是重定向,转发相对于浏览器来说是透明的,也就是无论页面如何跳转,地址栏上显示的依旧是最初的地址。

第三个作用域是session,他在当前回话中有效。当一台电脑上的同一浏览器对服务器进行多次访问时,在这多次访问之间传递的信息就是session作用域的范围。它从浏览器发出第一个HTTP请求即可认为会话开始,但是会话结束的时间是不确定的,因为在浏览器关闭时并不会通知服务器,一般Tomcat设置的默认时间为120分钟,也可以通过setMaxInactiveInterval(int)方法进行设置,或是通过invalidate()方法强制结束当前会话。

第四个作用域是application,他在所有的应用程序中都有效,也就是当服务器开始到服务器结束这段时间,application作用域中存储的数据都是有效的,同样可以通过setAttribute赋值和getAttribute取值。

内置对象一(out):

out 对象用于在Web浏览器内输出信息,并且管理应用服务器上的输出缓冲区。在使用 out 对象输出数据时,可以对数据缓冲区进行操作,及时清除缓冲区中的残余数据,为其他的输出让出缓冲空间。待数据输出完毕后,要及时关闭输出流。其最常用的方法为print,可在页面中显示字符串信息。out的作用域为page:

<%out.print(“Hello”); %>

内置对象二(request):

request 对象是 javax.servlet.httpServletRequest类型的对象。 该对象代表了客户端的请求信息,主要用于接受通过HTTP协议传送到服务器的数据。(包括头信息、系统信息、请求方式以及请求参数等)。request对象的作用域为一次请求(也就是request作用域)。request的常用方法有getParameter(String name)根据表单组件名称获取页面提交数据,getParameterValues(String name)获取一组以相同名称命名的表单组件提交的数据,setCharacterEncoding(String charset)在调用getParameter()方法前进行设定,用于解决中文乱码,getRequestDispatcher(String path)返回一个javax.servlet.RequestDispatcher对象,该对象的forward()方法用于转发请求:

<%

Object obj = new Object();

request.getParameter(“uname”);

request.getParameterValues(“rid”);

request.setCharacterEncoding(“UTF-8”);

request.getRequestDispatcher(“目标页面”).forward(request,response);

%>

内置对象三(response ):

response 代表的是对客户端的响应,主要是将JSP容器处理过的对象传回到客户端。response对象也具有作用域,它只在JSP页面内有效。response的常用方法有addCookie(Cookie cookie)向客户端添加cookie,serContentType(String type)设置HTTP响应的contentType类型,setCharacterEncoding(String charset)设置响应所采用的字符编码类型,sendRedirect(String location)将请求重新定位到一个新的地址上,这是地址栏上的地址会改变:

<%

response.addCookie(cokkie);

response.setContentType(“type”);

response.setCharacterEncoding(“utf-8”);

response.sendRedirect(“重新定位的页面”);

%>

内置对象四(session):

session 对象是由服务器自动创建的与用户请求相关的对象。服务器为每个用户都生成一个session对象,用于保存该用户的信息,跟踪用户的操作状态。session对象内部使用Map类来保存数据,因此保存数据的格式为 “Key/value”。 session对象的value可以使用对象类型。session的常用方法有setAttribute(String key,Object value)以key/value的形式将对象保存到session中,getAttribute(String key)通过key值获取session中保存的value,invalidate()强制session对象失效,getId()获取sessionid,setMaxInactiveInterval(int interval)设置session的非活动时间,getMaxInactiveInterval()获取session的有效非活动时间,removeAttribute(String key)删除session中对应key的value值:

<%

Object obj = new Object();

session.setAttribute(“key”,obj);

session.getAttribute(“key”);

session.setMaxInactiveInterval(100);

session.getMaxInactiveInterval();

session.getId();

session.removeAttribute(“key”);

session.invalidate();

%>

内置对象五(application):

application 对象可将信息保存在服务器中,直到服务器关闭,否则application对象中保存的信息会在整个应用中都有效。与session对象相比,application对象生命周期更长,类似于系统的“全局变量”。application常用方法有setAttribute(String key,Object value)以key/value的形式将对象存储到application中,getAttribute(String key)通过key获取application中存储的对象,getRealPath(String path)返回相对路径的真实路径:

<%

Object obj = new Object();

application.setAttribute(“key”,obj);

application.getAttribute(“key”);

application.getRealPath(“路径名”);

%>

内置对象六(pageContext):

pageContext 对象的作用是取得任何范围的参数,通过它可以获取 JSP页面的out、request、reponse、session、application 等对象。pageContext对象的创建和初始化都是由容器来完成的,在JSP页面中可以直接使用 pageContext对象。pageContext的常用方法有getRequest()获取request对象,getResponse()获取response对象,getSession()获得session对象,getOut()获取out对象,setAttribute(String key,Object value)保存属性,getAttribute(String key)获取属性,include(“url”)请求指定的资源,并且将目标资源的响应结果包含在调用页面的响应中:

<%

Object obj = new Object();

pageContext.getRequest();

pageContext.getResponse();

pageContext.getSession();

pageContext.getOut();

pageContext.setAttribute(“key”,obj);

pageContext.getAttribute(“key”);

pageContext.include(“资源地址”);

%>

内置对象七(page):

page 对象代表JSP本身,只有在JSP页面内才是合法的。 page隐含对象本质上包含当前 Servlet接口引用的变量,类似于Java编程中的 this 指针。

内置对象八(config):

config 对象的主要作用是取得服务器的配置信息。通过 pageConext对象的 getServletConfig() 方法可以获取一个config对象。当一个Servlet 初始化时,容器把某些信息通过 config对象传递给这个 Servlet。 开发者可以在web.xml 文件中为应用程序环境中的Servlet程序和JSP页面提供初始化参数。

内置对象九(exception):

exception 对象的作用是显示异常信息,只有在包含 isErrorPage=”true” 的页面中才可以被使用,在一般的JSP页面中使用该对象将无法编译JSP文件。excepation对象和Java的所有对象一样,都具有系统提供的继承结构。exception 对象几乎定义了所有异常情况。在Java程序中,可以使用try/catch关键字来处理异常情况; 如果在JSP页面中出现没有捕获到的异常,就会生成 exception 对象,并把 exception 对象传送到在page指令中设定的错误页面中,然后在错误页面中处理相应的 exception 对象。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: