jsp内置对象request 和pageContext.request区别?

esolve 2016-11-03 09:45:26
JSP页面里取得相对路径的方法:


<LINK href="${pageContext.request.contextPath}/css/buttonstyle.css" type="text/css" rel="stylesheet">


我在想,request不是jsp的内置对象吗?
为何不直接

href="${request.contextPath}/css/buttonstyle.css"

...全文
1401 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
renkeyutian 2018-01-08
  • 打赏
  • 举报
回复
EL表达式是一种简单的数据访问方式,其语法为${表达式},它是为了在JSP页面中不使用Java脚本语言而引进的。它有11个内置对象,而JSP有9个内置对象。它的内置对象里并没有request对象,也没有response、session和page对象,但有个pageContext对象和JSP中的pageContext对象是相同的,所以,要获取request、response、session对象,只能通过${pageContext.request}、${pageContext.response}、${pageContext.sessiont}来获取,那么由EL表达式获取项目路径,就只能通过${pageContext.request.contextPath}获得。你应该是把EL表达式和JSP的内置对象弄混淆了。
木头的派对 2016-11-05
  • 打赏
  • 举报
回复
引用 9 楼 qq_33540911 的回复:
[quote=引用 8 楼 qq_33540911 的回复:] [quote=引用 6 楼 esolve 的回复:] [quote=引用 4 楼 qq_33540911 的回复:] El表达式的写法:${pageContext.request.contextPath} jsp的写法:<%=request.getContextPath()%> 只是两种不同的写法
为何EL表达式里不能直接用${request}? 我看这个文章里说: http://www.it610.com/article/55889.htm 重点:${request}不是内置对象,如果其他四大域对象没有它的话,它什么也不输出! request不是页面9大内置对象吗?为啥又说不是内置对象?[/quote] el表达式中取得是servlet中的对象。就不是js代码,js和java不一样。不相干 [/quote] 说错了,,这个和JS没关系。。。sorry[/quote] request对象是用来获取用户提交的参数的,但是它的生命周期分成了四种,pageContext是证明周期最小的一种,而applicationContext是生命周期最大的一种,直接写${request.}则是默认为最下生命周期的request即${pageContext.request}, jsp的写法:<%=request.getContextPath()%> 则默认调用的是本类中的request,即本页面的request。可以去看JSP页面对应的servlet源码
木头的派对 2016-11-05
  • 打赏
  • 举报
回复
引用 8 楼 qq_33540911 的回复:
[quote=引用 6 楼 esolve 的回复:] [quote=引用 4 楼 qq_33540911 的回复:] El表达式的写法:${pageContext.request.contextPath} jsp的写法:<%=request.getContextPath()%> 只是两种不同的写法
为何EL表达式里不能直接用${request}? 我看这个文章里说: http://www.it610.com/article/55889.htm 重点:${request}不是内置对象,如果其他四大域对象没有它的话,它什么也不输出! request不是页面9大内置对象吗?为啥又说不是内置对象?[/quote] el表达式中取得是servlet中的对象。就不是js代码,js和java不一样。不相干 [/quote] 说错了,,这个和JS没关系。。。sorry
木头的派对 2016-11-05
  • 打赏
  • 举报
回复
引用 6 楼 esolve 的回复:
[quote=引用 4 楼 qq_33540911 的回复:] El表达式的写法:${pageContext.request.contextPath} jsp的写法:<%=request.getContextPath()%> 只是两种不同的写法
为何EL表达式里不能直接用${request}? 我看这个文章里说: http://www.it610.com/article/55889.htm 重点:${request}不是内置对象,如果其他四大域对象没有它的话,它什么也不输出! request不是页面9大内置对象吗?为啥又说不是内置对象?[/quote] el表达式中取得是servlet中的对象。就不是js代码,js和java不一样。不相干
qq_27019683 2016-11-04
  • 打赏
  • 举报
回复
九大隱式對象必須通過pageCcontext來獲取的,在jsp文件中el表達式只能通過pageContext.request的方式來獲取request對象,可以看看,jsp翻譯後的.java文件程序是怎麼樣的。ps:個人看法
bcsflilong 2016-11-04
  • 打赏
  • 举报
回复
不同表达式不同的写法
esolve 2016-11-04
  • 打赏
  • 举报
回复
引用 4 楼 qq_33540911 的回复:
El表达式的写法:${pageContext.request.contextPath} jsp的写法:<%=request.getContextPath()%> 只是两种不同的写法
为何EL表达式里不能直接用${request}? 我看这个文章里说: http://www.it610.com/article/55889.htm 重点:${request}不是内置对象,如果其他四大域对象没有它的话,它什么也不输出! request不是页面9大内置对象吗?为啥又说不是内置对象?
fri_yu 2016-11-03
  • 打赏
  • 举报
回复
你可以看下JSP发布之后生成的对应的“.java”文件中,那个request变量。
木头的派对 2016-11-03
  • 打赏
  • 举报
回复
El表达式的写法:${pageContext.request.contextPath} jsp的写法:<%=request.getContextPath()%> 只是两种不同的写法
esolve 2016-11-03
  • 打赏
  • 举报
回复
引用 1 楼 c_sdn910826 的回复:
你可以看下JSP发布之后生成的对应的“.java”文件中,那个request变量。
啥意思?没看懂
技术控_ 2016-11-03
  • 打赏
  • 举报
回复
page<request<session<application.

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧