how2j.cn

JSP的隐式对象指的是不需要显示定义,直接就可以使用的对象,比如request,response

JSP一共有9个隐式对象,分别是
request,response,out

pageContext, session,application

page,config,exception

步骤 1 : request,response,out   
步骤 2 : pageContext, session,application   
步骤 3 : page   
步骤 4 : config   
步骤 5 : exception   

步骤 1 :

request,response,out

这三个已经很熟悉了
request 代表请求 请参考 request常见方法
response 代表响应 请参考 response 用法
out 代表 输出
步骤 2 :

pageContext, session,application

pageContext 代表当前页面作用域

session 代表当会话作用域

application 代表当全局作用域

更多的关于作用域的请参考 作用域
步骤 3 :

page

page 对象即表示当前对象
JSP 会被编译为一个Servlet类 ,运行的时候是一个Servlet实例。 page即代表this
page
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="java.util.*"%> page:<%=page%> <br> this:<%=this%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="java.util.*"%>
     
page:<%=page%>
<br>
this:<%=this%>
步骤 4 :

config

config可以获取一些在web.xml中初始化的参数。
在JSP中使用config比较复杂,需要如下几个步骤
1. 在web.xml中进行配置
2. 创建一个testconfig.jsp
通过config.getInitParameter("database-ip") 获取参数
3. 访问路径,获取web.xml中配置的参数

http://127.0.0.1/testconfig

注1: 不能通过 http://127.0.0.1/testconfig.jsp 获取参数,只能通过/testconfig路径

注2:
这种用法不常见,不推荐使用
<servlet> <!-- 把 testconfig.jsp配置为一个 servlet --> <servlet-name>testconfig</servlet-name> <jsp-file>/testconfig.jsp</jsp-file> <!-- 配置初始化参数 --> <init-param> <param-name>database-ip</param-name> <param-value>127.0.0.1</param-value> </init-param> </servlet> <!-- 将路径 testconfig映射到testconfig.jsp --> <servlet-mapping> <servlet-name>testconfig</servlet-name> <url-pattern>/testconfig</url-pattern> </servlet-mapping>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="java.util.*"%> database-ip: <%=config.getInitParameter("database-ip")%>
步骤 5 :

exception

exception 对象只有当前页面的<%@page 指令设置为isErrorPage="true"的时候才可以使用。

同时,在其他页面也需要设置 <%@page 指令 errorPage="" 来指定一个专门处理异常的页面。

1. 准备一个try.jsp
设置errorPage="catch.jsp",表示有异常产生的话,就交给catch.jsp处理
故意在里面造成数组越界异常

2. 准备一个catch.jsp
设置 isErrorPage="true",表示当前页面可以使用exception对象
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" errorPage="catch.jsp"%> <% int[] a = new int[10]; a[20] = 5; %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8" errorPage="catch.jsp"%>

<%
	int[] a = new int[10];
	a[20] = 5;
%>

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isErrorPage="true"%> <%=exception%>

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8" isErrorPage="true"%>
	
<%=exception%>


HOW2J公众号,关注后实时获知布最新的教程和优惠活动,谢谢。


问答区域    
2017-09-14 exception
OnePunch



老师,这里会调用errorPage.jsp的原理是类似服务端跳转吗? 我在存在异常的代码之前写了个输出元素并没有显示。
<%@page language="java" contentType="text/html;charset=GBK"
	pageEncoding="GBK" import="java.util.*" errorPage="catch.jsp"%>

<%=666%>
	
<%
	int[] a = new int[5];
	a[10] = 1;
%>

							


1 个答案

how2j 答案时间:2017-09-15
<%=是在当前页面输出,即便是输出你也看不见了呀~




答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到





2017-09-13 config
OnePunch



老师,我照着代码敲,显示null啊 ,我就把编码格式改成GBK了
testconfig.jsp:

<%@page language="java" contentType="text/html;charset=GBK" pageEncoding="GBK" import="java.util.*"%>

<%=config.getInitParameter("database-id")%>

web.xml:

	<servlet>
		<servlet-name>testconfig</servlet-name>
		<jsp-file>/testconfig.jsp</jsp-file>
		<init-param>
			<param-name>database-id</param-name>
			<param-value>127.0.0.1</param-value>
		</init-param> 
	</servlet>
	<servlet-mapping>
		<servlet-name>testconfig</servlet-name>
		<url-pattern>/testconfig</url-pattern>
	</servlet-mapping>

							


2 个答案

OnePunch 答案时间:2017-09-14
嗷,是访问成testconfig.jsp了,太粗心了

how2j 答案时间:2017-09-14
注1: 不能通过 http://127.0.0.1/testconfig.jsp 获取参数,只能通过/testconfig路径 你访问的地址是哪里呢?




答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到





2017-09-13 config
2017-07-11 exception




提问之前请登陆
关于 J2EE-JSP-隐式对象 的提问

尽量提供截图代码异常信息,有助于分析和解决问题。 也可进本站QQ群交流: 389538688
站长会在每个工作日早上尽量回答提问(如果有漏掉没有回答的,请进群提醒一下)
提问尽量提供完整的代码,环境描述,越是有利于问题的重现,您的问题越能更快得到解答。
对教程中代码有疑问,请提供是哪个步骤,哪一行有疑问,这样便于快速定位问题,提高问题得到解答的速度
站长是玻璃心,提问的时候请语气温柔些 kiss~
截止2017-5-19日累计提问 1638个,站长回答了 1546个
截止2017-8-15日累计提问 2788个,站长回答了 2544个

上传截图