2

我有一个非常简单的 JSP 文件,它或多或少地显示了一个 get 变量。

<p>Hello, <%= request.getParameter("name") %></p>

所以,如果我去webpage.jsp?name=Alice,我会得到Hello, Alicewebpage.jsp另一方面,如果我只是去,我会得到Hello, null.

如果未设置名称变量,我想发送一个错误请求。在一个 servlet 中,我会这样做:

  response.sendError(HttpServletResponse.SC_BAD_REQUEST);
  return;

我怎样才能从 JSP 页面做类似的事情?

4

1 回答 1

4

只需将相同的代码放入<% %>JSP 中即可。您只需要确保此时未提交响应,否则您将只面对IllegalStateExceptions. 因此,最好在发出所有 HTML 模板内容之前,在 JSP 文件的最顶部调用它。

不用说,JSP不是控制请求/响应的正确位置。在这种特殊情况下,如果涉及会话范围的登录,您希望在servlet过滤器中完成这项工作。此外,最好将“Hello”行作为<p>Hello, <c:out value="${param.name}" /></p>. 它不仅提高了可维护性,而且还可以防止您的网站遭受巨大的 XSS 攻击漏洞。

于 2011-10-26T14:20:10.810 回答