zoukankan      html  css  js  c++  java
  • 关于在JSP页面中为什么一定要用${pageContext.request.contextPath}来获取项目路径,而不能用${request.contextPath}?

    这里的疑问在于pageContext和request都是JSP中的内置对象之一,为什么不直接用${request.contextPath}来获取项目路径?

    出现这种疑问,其实是将JSP的内置对象和EL表达式的内置对象混淆了。

    JSP的9大内置对象:

    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表达式的格式${表达式},它是一种简单的数据访问方式,是为了在JSP页面中不使用Java脚本语言而引进的)

    pageContext:代表该页面的pageContext对象,和JSP的pageContext对象相同

    pageScope:用于获取page范围内的属性值

    requestScope:用于获取request范围内的属性值

    responseScope:用于获取response范围内的属性值

    sessionScope:用于获取session范围内的属性值

    applicationScope:用于获取application范围内的属性值

    param和paramValues:用于获取请求的参数值

    header和headerValues:用于获取请求头信息

    cookie:用于获取cookie中的值

    initParam:用于获取web应用的初始化信息

    通过以上比较,不难发现EL表达式中只有pageContext对象,而没有request对象,request对象是JSP的内置对象。那么在EL表达式中获取request对象,只能通过${pageContext.request}获取,同理,response和session对象也得这样获得。所以在获取项目绝对路径时,只能通过${pageContext.request.contextPath}来获取,对应于Java脚本语言中的<%=request.getContextPath()%>的方式

  • 相关阅读:
    POJ
    POJ
    POJ1753 Flip Game(位运算+暴力枚举)
    20160326 javaweb 请求转发和请求包含
    将博客搬至CSDN
    javaweb 中的乱码问题
    20160324 javaweb 之request
    20160322 javaweb 学习笔记--response验证码实现
    20160322 javaweb 学习笔记--response 重定向
    深入分析 Java 中的中文编码问题 (文章来自网络)
  • 原文地址:https://www.cnblogs.com/jpfss/p/9144459.html
Copyright © 2011-2022 走看看