JSP入门——Application对象 1 JSP脚本中

「这是我参与11月更文挑战的第23天,活动详情查看:2021最后一次更文挑战

前言

1
复制代码大家好,我是程序猿小白 gw_Gw,很高兴能和大家一起学习进步。

以下内容部分来自于网络,如有侵权,请联系我删除,本文仅用于学习交流,不用作任何商业用途。

摘要

1
复制代码本文主要介绍JSP脚本中的9个内置对象中的application对象。
  1. JSP脚本中的9个内置对象

JSP脚本中包含9个内置对象,这九个内置对象其实就是JSP页面对应生成的Servlet类中的_jspService()方法中的形参或局部变量。

来看看什么是_jspService方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
java复制代码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对象的作用:

  1. 使得整个Web应用的JSP和Servlet可以共享数据。
  2. 可以访问web应用的配置参数。

1.1.1 共享数据

application对象通过使用setAttribute(String attrName,Object value)方法来设定共享数据的属性(attrName)和值(value)。

JSP和Servlet访问属性值需要使用getAttribute(String attrName)。

实例展示:

在index.jsp中定义变量并使用setAttribute来设置属性和值,并输出值。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
xml复制代码<%@ 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来获取对应属性的值并输出。

1
2
3
4
5
6
7
8
9
javascript复制代码<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
  <title>Title</title>
</head>
<body>
<%=application.getAttribute("age")%>
</body>
</html>

image-20211125215057967

image-20211125215116530

applocation就相当于一个Map容器,把数据根据键(属性)放入到容器中,其他JSP和Servlet根据键来获取对应的值。

使用Servlet来获取属性值和JSP获取有些区别,使用Servlet来获取需要先创建ServletContext实例。

1
2
ini复制代码ServletContecxt sc = getServletConfig().getServletContext();
sc.getAttribute("age");

1.1.2 获得Web应用配置参数

使用application对象的getInitParameter(String paramName)方法来获取web应用的配置参数。

web应用的配置参数在web.xml中使用context-param元素配置。

格式如下:

1
2
3
4
xml复制代码<context-param>
<param-name>name</param-name>
<param-value>value</param-value>
</context-param>

所以在使用getInitParameter(String paramName)方法来获取参数之前,需要先配置应用参数。

小结

以上就是关于JSP的九大内置对象之一的Application对象,希望能对读者有所帮助,如有不正之处,欢迎留言评论。

本文转载自: 掘金

开发者博客 – 和开发相关的 这里全都有

0%