JSP Servlet基础学习之JSP脚本中的9个内置对象
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..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就可以根据属性名来得到这个变量。
上一篇: PHP 匿名函数和匿名类介绍
下一篇: 重庆市车联网科技产业园建设进度顺利