「这是我参与11月更文挑战的第23天,活动详情查看:2021最后一次更文挑战」
前言
大家好,我是程序猿小白 gw_Gw,很高兴能和大家一起学习进步。
以下内容部分来自于网络,如有侵权,请联系我删除,本文仅用于学习交流,不用作任何商业用途。
摘要
本文主要介绍JSP脚本中的9个内置对象中的application对象。
1. JSP脚本中的9个内置对象
JSP脚本中包含9个内置对象,这九个内置对象其实就是JSP页面对应生成的Servlet类中的_jspService()方法中的形参或局部变量。
来看看什么是_jspService方法:
public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)
throws java.io.IOException, javax.servlet.ServletException {
final java.lang.String _jspx_method = request.getMethod();
if (!"GET".equals(_jspx_method) && !"POST".equals(_jspx_method) && !"HEAD".equals(_jspx_method) && !javax.servlet.DispatcherType.ERROR.equals(request.getDispatcherType())) {
response.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, "JSP 只允许 GET、POST 或 HEAD。Jasper 还允许 OPTIONS");
return;
}
final javax.servlet.jsp.PageContext pageContext;
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;
所以可以直接在JSP脚本中调用这些对象。
1.1 application对象
application对象用来操作application范围内的数据。application范围是整个Web应用,JSP和Servlet将数据放入到application中,该数据可以被整个Web应用下的Jsp和Servlet使用。
application对象的作用:
- 使得整个Web应用的JSP和Servlet可以共享数据。
- 可以访问web应用的配置参数。
1.1.1 共享数据
application对象通过使用setAttribute(String attrName,Object value)方法来设定共享数据的属性(attrName)和值(value)。
JSP和Servlet访问属性值需要使用getAttribute(String attrName)。
实例展示:
在index.jsp中定义变量并使用setAttribute来设置属性和值,并输出值。
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<title>JSP - Hello World</title>
</head>
<body>
<%!
int num;
%>
<%application.setAttribute("age",String.valueOf(++num));%>
<%=num%>
</body>
</html>
在test.jsp页面中使用getAttribute来获取对应属性的值并输出。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%=application.getAttribute("age")%>
</body>
</html>
applocation就相当于一个Map容器,把数据根据键(属性)放入到容器中,其他JSP和Servlet根据键来获取对应的值。
使用Servlet来获取属性值和JSP获取有些区别,使用Servlet来获取需要先创建ServletContext实例。
ServletContecxt sc = getServletConfig().getServletContext();
sc.getAttribute("age");
1.1.2 获得Web应用配置参数
使用application对象的getInitParameter(String paramName)方法来获取web应用的配置参数。
web应用的配置参数在web.xml中使用context-param元素配置。
格式如下:
<context-param>
<param-name>name</param-name>
<param-value>value</param-value>
</context-param>
所以在使用getInitParameter(String paramName)方法来获取参数之前,需要先配置应用参数。
小结
以上就是关于JSP的九大内置对象之一的Application对象,希望能对读者有所帮助,如有不正之处,欢迎留言评论。