Java Web实战详细教程(六)JSP内置对象

        JSP有九个内置对象,这是学习JSP绕不过去的重要知识点。几乎所有的JSP书籍都会着重介绍,但是大家需要注意的是因为实际项目开发中,多是使用模板引擎,即使是使用JSP,一般也是会使用MVC架构,即Servlet充当控制器,JSTL+EL负责显示层,因为JSP使用并不广泛,内置对象应用也不广泛,它们会在Servlet中以普通类和对象的形式出现,在JSTL中以另一种形式出现。
        但是了解一下内置对象对我们整体把握Java Web技术还是有必要的。

        九个内置对象中,其中四个是作用域对象,表达一个周期范围,需要格外重视

作用域对象

        作用域对象可以根据其生命周期,表示一个作用范围,它们都提供了

void setAttribute(String attrName,Object value)
Object getAttribute(String attrName)

方法, 让开发者可以方便的存储数据,以供页面级、请求级、会话级、应用程序级的共享。

1、pageContext
        pageContext 对象作用域是当前JSP页面,但是跟JSP中直接使用变量效果一样,所以对普通开发者使用PageContext,反而显得较为鸡肋。

<body>
	<%
		int num1 = 1;
		pageContext.setAttribute("num1", num1);
	%>
	<%=(int) pageContext.getAttribute("num1")%>
	<br />
	<%
	   //与使用pageContext效果一样
		int num2 = 2;
	%>
	<%=num2%>
</body>

效果图:
在这里插入图片描述

2、request
        request 对象的作用域是整个请求,如果从a页面转发到b页面,或者由Servelt转发到JSP页面,request可以实现数据的共享。这会在后续讲解“转发”的时候进行。

3、session
        Session是会话,会话是指可以记录一个浏览器与该网站系统的多次请求和响应的一个概念。通过会话,可以有效的知道某次请求来源于哪个浏览器,从而可以记录用户的登录信息。后续在实现登录功能的时候,会有更深入的认知。
        可以参考以下图形,理解会话:
在这里插入图片描述

4、application
         application是指整个网站应用程序,往application中存储的数据,可以实现所有session或request或页面的共享。

其他对象

5、response
response是实现服务器的响应,通过它可以实现“重定向”、设置响应报头信息等。

6、out
        out 对象可以输出内容到响应的内容,从而在浏览器页面上展示。

7.page
        page对象指代JSP当前页面,有点类似Java中的this关键字,但其源码中的定义又是Object类型,所以只能调用Object类型的方法。用处比较简单。

<body>
	<%=page.getClass()%>
	<%=page.toString()%>
</body>

效果如图:
在这里插入图片描述

8、config
        config对象可以从web.xml文件中获取配置信息。

        在Java Web项目的创建中,可以选择创建一个叫做web.xml的文件,改文件可以配置Servlet、监听器、过滤器。后来在流行注解后,web.xml变的不是name必须。
        新建一个testWeb02项目,输入了项目名后点击【next】按钮,在最后的界面中勾选如下图所示:
在这里插入图片描述
        会在WEB-INF文件夹下生成一个web.xml的文件。
在这里插入图片描述
        在web.xml中定义参数和对应的值:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>testWeb02</display-name>
	<servlet>
		<servlet-name>test</servlet-name>
		<jsp-file>/configs.jsp</jsp-file>  
		<init-param>
			<param-name>name</param-name>
			<param-value>Tom</param-value>
		</init-param>
	</servlet>
	<servlet-mapping>
	<servlet-name>test</servlet-name>
	<url-pattern>/configs</url-pattern>
	</servlet-mapping>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>

        对应的jsp页面代码:

<body>
<%=config.getInitParameter("name") %>
</body>

页面效果如图所示(注意要访问Servlet配置的url):
在这里插入图片描述

9、exception
        exception对象的出现提高了JSP的健壮性,在Java代码中,可以使用try-catch捕获异常,在JSP中可以使用exception将异常信息在专门的页面中打印出来,供测试之用。
        新建一个测试页面test.jsp,在里面书写代码,让其报一个异常:

<%@ page language="java" contentType="text/html; charset=utf-8"
	pageEncoding="utf-8"%>
<%--配置出现异常将转向的页面 --%>
<%@page errorPage="/neizhi/errors.jsp"%>
<!DOCTYPE>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
	<%
		Object obj = null;
		out.print(obj.toString());
	%>
</body>
</html>

        新建一个errors.jsp页面,打印出异常的类型和信息,需要注意需要在page指令中指定 isErrorPage=“true”,即显示错误信息:

<%@ page language="java" contentType="text/html; charset=utf-8"
	pageEncoding="utf-8" isErrorPage="true"%>
<!DOCTYPE>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
	<%=exception.toString()%>
	<br />
	<%=exception.getMessage()%>

</body>
</html>

        效果页面如图所示:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/GodBlessYouAndMe/article/details/120739068