您的位置  > 互联网

李刚著《轻量级JavaEE企业应用实战++整合开发》

1. 简要说明

JSP 页面包含 9 个内置对象。 这9个内置对象都是API类或接口的实例。 不过,JSP规范已经完成了它们的默认初始化,即它们已经是对象了,可以直接使用。 这9个内置对象如下:

(1):javax..的实例,代表JSP所属的WEB应用程序本身。 它可以在 JSP 页面中使用或在它们之间交换信息。 常用的方法有( )、( , )和( Param )等。

(2):javax..的实例,代表JSP的配置信息。 常用的方法有()和()。 事实上,JSP页面通常不需要配置,因此没有配置信息。 所以该对象在 中更有效。

(3):java.lang.的实例,代表其他页面的错误和异常。 仅当该页面是错误处理页面时,即编译指令的属性为 true 时,才能使用该对象。 常用的方法有()和()等。

(4)out:javax..jsp.的实例,代表Jsp页面输出流,用于输出内容,形成HTML页面。

(5)Page:代表页面本身,通常没有多大用处。 这是this的类型,它的类型就生成了。

(6):javax..jsp.的实例,代表JSP页面的上下文。 该实例可用于访问页面中的共享数据。 常用的方法有()和()等。

(7):javax..http.的一个实例,这个对象封装了一个请求,所有的客户端请求都封装在这个对象中。 这是一个常用的对象,必须用于获取客户端请求参数。 常用的方法有:( )、( )、( , )、( ) 和( env)等。

(8): javax..http 的一个实例。 代表服务器对客户端的响应。 通常,这个对象很少用来直接响应。 Out对象用于输出响应对象,对象常用于重定向。 常用的对象有(java.lang.)等。

(9):javax..http.的一个实例,这个对象代表一个会话。 会话在客户端浏览器与站点建立连接时开始,在浏览器关闭时结束。常用的方法有( )、( 、 )等。

2. 对象

1.让JSP共享数据

该对象代表 Web 应用程序本身。 整个 Web 应用程序共享一个对象。 该对象主要用于多个JSP页面之间或者之间共享变量。 通过()方法将值放入某个属性中。 该属性的值对整个 Web 应用程序有效。 因此,Web 应用程序的每个 JSP 页面都可以访问该属性。 访问属性的方法是。

查看下面的 put-.jsp 页面。 该页面仅声明一个整型变量。 每次刷新页面时,变量的值就加1,然后放置变量的值。 这是该页面的代码:

<%@ page language="java" contentType="text/html; charset=gb2132"
    pageEncoding="ISO-8859-1"%>



APPLICATION测试

<body>
<%! int i;
%>
<%application.setAttribute("counter",String.valueOf(++i));%>
<%=application.getAttribute("counter"); %>

上述代码第13行实现了每次刷新页面时,都会先将变量自增,并设置为属性值,即属性值每次都会加1。

再看下面另一个JSP页面:

<%@ page language="java" contentType="text/html; charset=gb2132"
    pageEncoding="ISO-8859-1"%>



APPLICATION测试2

<body>
<%! int i;
%>
<%=application.getAttribute("counter"); %>

上述代码第13行也直接输出属性值。 虽然这个页面与 put-page 无关,但它也可以访问属性,因为属性是整个 Web 应用程序的 JSP 共享的。

注意:它不仅可以用于在两个JSP页面之间共享数据。 我们可以将其理解为一个Map对象。 任何jsp或者对象都可以往里面放一个变量来保存,并为它指定一个属性名; 应用程序中的其他 JSP 和页面可以基于此属性名称。 得到这个变量。 如下代码所示:

package ppp;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class GetApplication extends HttpServlet {
	public void service(HttpServletRequest request, HttpServletResponse response)
			throws IOException {
		response.setContentType("text/html;cahrset = gb2132");
		PrintWriter out = response.getWriter();
		out.println("");
		out.println("测试Application");
		out.println("<body>");
		ServletContext sc = getServletConfig().getServletContext();
		out.println("application当前的counter值为:");
		out.println(sc.getAttribute("counter"));
		out.println("");
	}
}

在上面的代码中,由于 中没有内置对象,因此上面程序中的第 18 行代码显示获取了 Web 应用程序的实例。 每个 Web 应用程序只有一个实例。 在JSP中,实例只能通过内置对象来访问,而在JSP中,必须通过代码来获取。

提示:这也需要编译成class文件才可以使用。 其实也是需要部署的。 由于没有添加环境变量,编译时可能会出现异常。 如果安装Java EE SDK,只需将Java EE SDK路径下的.jar文件添加到环境变量即可; 如果您没有安装Java EE SDK,您可以在lib路径中添加.jar文件。 将 jsp-api.jar 和 -api.jar 添加到环境变量中。

最后要指出的是:虽然使用(即实例)可以方便JSP和共享数据,但是不要仅仅为了共享数据而将数据放入对象中! 由于该对象代表整个应用程序,因此通常应该只将 Web 应用程序的状态数据放入其中。

2. 获取Web应用配置参数

还有另一个重要用途:可用于 Web 应用程序的配置参数。 请看下面的JSP页面。 该页面访问数据,但用于访问数据的驱动程序、URL、用户名和密码均在 web.xml 文件中给出。

<%@ page language="java" contentType="text/html; charset=gb2132"
	pageEncoding="ISO-8859-1"%>



APPLICATION测试

<body>
<%
	//从配置参数中获取驱动
	String driver = application.getInitParameter("driver");
	//从配置参数中获取数据库URL
	String url = application.getInitParameter("url");
	//从配置参数中获取用户名
	String user = application.getInitParamter("user");
	//从配置参数中获取密码
	String pass = application.getInitParamter("pass");
	//注册驱动
	Class.forName(driver);
	//获取数据库连接
	Connection conn = DriverManager.getParameter("url,user,pass");
	//创建Statement对象
	Statement stmt = conn.createStatement();
	//执行查询
	ResultSet rs = stmt.executeQuery("Select * from newsinf");
%>

	<%
		//遍历结果集
		while (rs.next()) {
	%>
	
	<%
		}
	%>
<%=rs.getString(1)%> <%=rs.getString(2)%>

在上面的程序中,代码的第10行到第17行使用()来获取Web应用程序的配置参数。 这些配置参数应使用 web.xml 文件中的 -param 元素进行配置。 每个-param 配置一个参数。 该元素下有以下两个子元素:

(1) param-name:配置web参数名称

(2)param-value:配置web参数值

为了配置 Web 应用程序的参数,应将以下代码添加到 web.xml 文件中:



		driver
		com.mysql.jdbc.driver


		url
		jdbc:mysql://localhost:3306/javaee


		user
		root


		pass
		32147

在浏览器中浏览.jsp页面时,可以看到数据库连接和数据查询完全成功。 可以看到,可以使用访问Web应用程序的配置参数。

注意:这样可以将一些信息放在web.xml文件中进行配置,避免使用代码中编写的一些硬编码方法,从而更好地提高程序的可移植性。