检查 JSP 欢迎文件中的 getQueryString 方法的有效配置

此规则会在 Web 模块的 JSP 欢迎文件中检测方法调用 request.getQueryString()。 会标记这些调用,以便用户可以验证用法是否正确,并避免在查询字符串中使用空值。

在 WebSphere 中,如果使用在 URL 中不含欢迎文件名的查询字符串直接或通过转发来调用欢迎文件,那么方法 request.getQueryString() 将返回空值。 例如,如果欢迎文件是 index.jsp,并且用户输入 URL(或者另一个系统组件转发至 URL)http://mycompany.com/?param=value,那么 WebSphere 会将请求发送至 index.jsp。 然而,index.jsp 中的调用 request.getQueryString() 将返回 null,而不是 param=value。 这仅适用于 web.xml 部署描述符中定义的欢迎文件。

用户可以采用下列三种方式来获取 JSP 欢迎文件中的查询字符串值:

  1. 确保 URL 包含 JSP 欢迎文件名。 例如,将 URL 从 http://mycompany.com/?param=value 更改为 http://mycompany.com/index.jsp?param=value。 此解决方案将适用于转发至 JSP 的组件,但不适用于可以由外部用户直接访问的 JSP 欢迎文件,例如,外部用户可以使用 Web 浏览器直接输入 URL 进行访问。
  2. 用户可以通过调用 request.getAttribute("javax.servlet.forward.query_string")(而不是 request.getQueryString())来获取查询字符串。
  3. 用户可以在 Web 容器属性中将 WebSphere 定制属性 com.ibm.ws.webcontainer.provideQStringToWelcomeFile 设为 true。 将此属性设为 true 将更改容器的行为,以将查询字符串传递至欢迎文件。

有关更多信息,请参阅: