为了账号安全,请及时绑定邮箱和手机立即绑定

Java Servlet 标头隐式对象

Java Servlet 标头隐式对象

婷婷同学_ 2023-04-26 16:59:41
我一直在使用 Java servlet 并注意到以下代码中的一个特殊问题:protected void doPost(HttpServletRequest request, HttpServletResponse     response) throws ServletException, IOException {    response.setContentType("text/html");    String url = "/Display.jsp";    CSVFileOperations csvfo = new CSVFileOperations();    String header = csvfo.getHeaders().remove();    System.out.println(header);    request.setAttribute("header", header);    request.getServletContext().getRequestDispatcher(url).forward(request,     response);特别是,这一行:request.setAttribute("header", header);我将字符串标识符和变量名设置为相同。当我通过 调用我的 .jsp 文件中的这个变量时${header},我得到以下输出:{accept-language=en-US, ua-cpu=AMD64, cookie=JSESSIONID=1E0C2784352A46D6EFDE0F8A522F4, host=localhost:8080, connection=Keep-Alive, cache-control=no-cache, accept-encoding=gzip, deflate, accept=image/gif, image/jpeg, image/pjpeg, application/x-ms- application, application/xaml+xml, application/x-ms-xbap, */*, user- agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64; Trident/7.0; rv:11.0) like Gecko}但是,当我将字符串标识符从更改为"header"并"head"在 ${head}.jsp 页面中调用时,我得到了预期的输出。我的问题是,这是怎么回事?
查看完整描述

1 回答

?
呼唤远方

TA贡献1856条经验 获得超11个赞

JSP 定义了一些隐式对象,以允许 JSP 访问 Servlet 代码具有的相同信息。

这些隐式对象在页面范围内分配,因此它们取代了任何同名的请求属性。

解决方案:

  1. 不要使用与隐式对象名称匹配的请求属性名称。

  2. 使用 限定访问权限,即在您的 JSP 中requestScope使用。${requestScope.header}

我推荐选项 1。

JSP 表达式语言定义了一组隐式对象:

  • pageContext:JSP 页面的上下文。提供对各种对象的访问,包括:

  • servletContext:JSP 页面的 servlet 和同一应用程序中包含的任何 Web 组件的上下文。请参阅访问 Web 上下文。

  • session:客户端的会话对象。请参阅维护客户端状态。

  • request:触发JSP页面执行的请求。请参阅从请求中获取信息。

  • response:JSP页面返回的响应。请参阅构建响应。

此外,还有几个隐式对象可用,可以轻松访问以下对象:

  • param: 将请求参数名称映射到单个值

  • paramValues:将请求参数名称映射到值数组

  • header:将请求标头名称映射到单个值

  • headerValues:将请求标头名称映射到值数组

  • cookie: 将 cookie 名称映射到单个 cookie

  • initParam:将上下文初始化参数名称映射到单个值

最后,有些对象允许访问使用范围对象中描述的各种范围变量。

  • pageScope:将页面范围的变量名称映射到它们的值

  • requestScope:将请求范围的变量名称映射到它们的值

  • sessionScope:将会话范围的变量名称映射到它们的值

  • applicationScope:将应用程序范围的变量名称映射到它们的值


查看完整回答
反对 回复 2023-04-26
  • 1 回答
  • 0 关注
  • 88 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信