有关PageContext的问题

有关PageContext的问题

<li><a href="${pageContext.request.contextPath }/login.jsp">登录</a></li>
和
<li><a href="${request.contextPath }/login.jsp">登录</a></li>
有什么区别?

不是说pageContext可以得到request吗,那为什么直接使用request(就像第二行代码那样)程序就运行错误呢?

还有一个问题:

this.getServletContext()和request.getServletContext()这两种写法有什么区别??

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,这里同学是将JSP的内置对象和EL表达式的内置对象混淆了。例如:

1、JSP中的内置对象:

application:是servletContext的实例,代表JSP所属的web项目本身
config:是servletConfig的实例,代表当前JSP的配置信息
exception:是java.lang.Throwable的实例,该对象只有在JSP页面中设置了isErrorPage为true时,才能使用
out:jspWriter的实例,代表JSP页面的输出流
page:代表该页面本身,没有太大用处
pageContext:页面上下文对象
request:是httpservletrequest的实例,代表一次请求
response:是httpservletresponse的实例,代表服务器的响应
session:是Httpsession的实例,代表一次会话

EL表达式的11个内置对象:(EL表达式的格式${表达式})

pageContext:代表该页面的pageContext对象,和JSP的pageContext对象相同
pageScope:用于获取page范围内的属性值
requestScope:用于获取request范围内的属性值
responseScope:用于获取response范围内的属性值
sessionScope:用于获取session范围内的属性值
applicationScope:用于获取application范围内的属性值
param和paramValues:用于获取请求的参数值
header和headerValues:用于获取请求头信息
cookie:用于获取cookie中的值
initParam:用于获取web应用的初始化信息

    2、如上所述,${pageContext.request}是一个确切的HttpServletRequest对象,而requestScope是request作用域,通过requestScope获取的数据,必须在之前已经通过set方法set进了request才能获取。

        EL表达式中只有pageContext对象,而没有request对象,request对象是JSP的内置对象。对应在EL表达式中获取request对象,只能通过${pageContext.request}获取,对应Java语言中<%=request.getContextPath()%>来获取。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • qq_平常心_61 提问者 #1
    十分感谢!!!!
    2019-11-17 19:39:40
好帮手慕小班 2019-11-17 10:55:03

同学你好,1、pageContext对象  这个对象代表页面上下文,该对象主要用于访问JSP之间的共享数据,使用pageContext可以访问page、request、session、application范围的变量。

        但是在EL表达式中直接获取request范围内的内容需要使用requestScope来获取。

http://img1.sycdn.imooc.com//climg/5dd0b4b909d881fd09090488.jpg

    2、this.getServletContext()和request.getServletContext()都是获取ServletContext域,这两句没有区别,只不过是调用方式不同,获取的都是servlet的上下文,选择哪种写法都可以。就好像我们放学回家,走大路回家和走小路回家都是一样的,回去那个家。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 qq_平常心_61 #1
    那我为啥改成: requestScope.contextPath还是不对呢?它和pageContext.request.contextPath有啥区别啊?????
    2019-11-17 18:46:02
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师