有关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()这两种写法有什么区别??
正在回答
同学你好,这里同学是将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()%>来获取。
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
同学你好,1、pageContext对象 这个对象代表页面上下文,该对象主要用于访问JSP之间的共享数据,使用pageContext可以访问page、request、session、application范围的变量。
但是在EL表达式中直接获取request范围内的内容需要使用requestScope来获取。
2、this.getServletContext()和request.getServletContext()都是获取ServletContext域,这两句没有区别,只不过是调用方式不同,获取的都是servlet的上下文,选择哪种写法都可以。就好像我们放学回家,走大路回家和走小路回家都是一样的,回去那个家。
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
- 参与学习 人
- 提交作业 676 份
- 解答问题 9666 个
本阶段将从前端网页搭建入手,到Java Web基础,前后端结合助你完成Java Web小白的蜕变!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星