关于jsp内置对象:
jsp内置对象有9个,是在jsp编译成servlet后的_jspServide()方法中自动定义的,故可以在jsp页面脚本中直接使用。分别为:application、config、out、page、pageContext、session、exception、request、response,其中request和response为_jspService()方法的参数,其余除去exception外都在_jspService()方法中定义,exception对象只有在页面出错时才会初始化。
Tomcat中 work\Catalina\localhost\webName\packagePath\pageName_jsp.java 下_jspService()源码:
public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)
throws java.io.IOException, javax.servlet.ServletException {
//...
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;
//...
}
关于application
application是jsp的一个内置对象,数据存储结构类似于map,作用域为整个web应用(application范围)即application中的数据可以被本web应用的所有jsp或者servlet中访问。
application的作用为:在整个web应用中共享数据;访问web应用的配置参数;
1、jsp访问application:
<%
application.setAttribute("key",value); //value为Object
application.getAttribute("key");
%>
2、Servlet中访问application:
//Servlet中没有application对象,需要显示获取web应用的ServletContext实例,每个web应用只有一个ServletContext实例
ServletContext sc = getServletConfig().getServletContext();
sc.setAttribute("key", value);
sc.getAttribute("key");
3、用于获取web应用配置参数
可以在web.xml中使用context-param标签设置web配置参数,用application的getInitParameter()方法获取配置参数
web.xml配置web参数:
<context-param>
<param-name>key</param-name>
<param-value>value</param-value>
</context-param>
jsp与servlet中获取使用 application.getInitParameter("key") 即可