频道栏目
首页 > 程序开发 > Web开发 > Jsp > 正文
JSP Servlet基础学习之JSP脚本中的9个内置对象
2018-05-14 14:25:52      个评论    来源:CNAHYZ的博客  
收藏   我要投稿

1.JSP脚本中的9个内置对象

application:javax.servlet.ServletContext实例,代表JSP所属的WEB应用本身,可以用于JSP页面或在Servlet之间的信息交换

常用方法:getAttribute、setAttribute、getInitParameter

config:javax.servlet.servletConfig实例,该实例代表该JSP的配置信息。实际上,JSP页面无需配置,所以更多在Servlet上有效

常用方法:getInitParameter、getInitParameternames

exception:java.lang.Throwable实例,代表其他页面中的异常和错误。只有当页面是错误处理页面,即编译指令page的isErrorPage属性为true时,才可使用

常用方法:getMessage、printStackTrace

out: javax.servlet.jsp.JspWriter实例,代表JSP页面的输出流,用于输出内容,形成HTML页面

page:代表页面本身,没有太大用处。也就是Servlet中的this,其类型就是生成Servlet类,能用page就可以用this

pageContext: javax.servlet.PageCOntext实例,代表该JSP页面上下文,使用该对象可以访问页面中的共享数据。

常用方法:getServletContext、getServletConfig

request:javax.servlet.http.HttpServletRequest实例,该对像封装了一次请求,客户端的请求参数都在该对象中,获取客户端请求参数必须使用该参数

常用方法:getParameter、getParameterValues、setAttribute、getAttribute、setCharacterEncoding

response: javax.servlet.http.HttpServletResponse实例,代表服务器对客户端的相应,通常很少使用该对象直接响应,而是使用out对象,除非需要生成非字符响应

常用方法:getOutputStream、sendRedirect

session:javax.servlet.http.HttpSession实例,代表一次会话。当客户端浏览器与站点建立连接,会话开始;当客户端关闭浏览器,会话结束

常用方法:getAttribute、setAttribute

这9个内置对象都是ServletAPI接口的实例,只是JSP规范对它们进行了默认初始化(由_jspService()方法来创建这些实例)。

打开任一JSP页面对应的Servlet文件,可以看到如下代码:

public void <strong>_jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)</strong>  
      throws java.io.IOException, javax.servlet.ServletException {  
  
......  
  
    <strong>final javax.servlet.jsp.PageContext pageContext;  
    javax.servlet.http.HttpSession session = null;  
    final javax.servlet.ServletContext application;  
    final javax.servlet.ServletConfig config;  
    javax.servlet.jsp.JspWriter out = null;  
    final java.lang.Object page = this;  
    javax.servlet.jsp.JspWriter _jspx_out = null;  
    javax.servlet.jsp.PageContext _jspx_page_context = null;</strong>  
  
  
    try {  
      response.setContentType("text/html; charset=UTF-8");  
<strong>      pageContext = _jspxFactory.getPageContext(this, request, response,  
                null, true, 8192, true);  
      _jspx_page_context = pageContext;  
      application = pageContext.getServletContext();  
      config = pageContext.getServletConfig();  
      session = pageContext.getSession();  
      out = pageContext.getOut();  
      _jspx_out = out;</strong>  

通过以上代码可以看出JSP内置对象的实质:要么是_jspServic()方法的形参,要么是_jspService()方法的局部变量,所以可以直接在JSP脚本调用这些对象,无须创建它们。

上述代码之所以没有exception内置对象,是因为只有异常处理页面对应的Servlet才会初始化exception对象。

application对象

application对象代表Web应用本身,因此使用application来操作Web应用相关数据。application对象通常有如下两个作用:

1.在整个Web应用的多个JSP、Servlet之间共享数据。

2.访问Web应用的配置参数。

作用一:让多个JSP、Servlet共享数据

通过setAttribute(String attrName,Object value)方法设置属性,该属性的值对整个Web应用有效,访问属性的方法为getAttribute(String attrName)。

setAttribute()方法示例

<!-- 将i值自加后放入application的变量内 -->  
<%  
application.setAttribute("counter",String.valueOf(++i));  
%>  

可以把application理解成一个Map对象,任何JSP、servlet都可以把某个变量放入application中保存,并为之指定一个属性名;而该应用的其他JSP、Servlet就可以根据属性名来得到这个变量。

点击复制链接 与好友分享!回本站首页
上一篇:如果jsp页面中include(被包含)被包含的页面中有加载事件,那window.onload事件到底什么时候执行,会执行几次?
下一篇:jsp基础学习之特点、执行过程、语法、注释等
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站