1

Is there any way to add parameters in a servlet or jsp? Because as far as I have searched, parameters can only be set in forms. Why is there no command in java to add parameters manually? Another doubt I have is that, when forwarding from one jsp page to other, is the input request(with the parameters, attributes etc) forwarded to the next jsp page? What if I don't want certain parameters or attributes to be forwarded?

4

4 回答 4

3

请求参数可以通过使用传递<jsp: param>

该标签包含两个属性:

  1. 姓名
  2. 价值。

例如:

<jsp: param name="myParam" value="Amar Patel"/>

此标记用作<jsp:forward><jsp:include>块内的嵌套标记。

例如:

<jsp: forward page="ssParameters.jsp">
  <jsp: param name="myParam" value="Amar Patel"/>
  <jsp: param name="Age" value="15"/>
</jsp: forward>
于 2012-04-13T12:49:12.220 回答
3

有没有办法在 servlet 或 jsp 中添加参数?

-- 将其附加到 URL。如果您正在考虑一些假设函数,例如request.setParameter,那么没有提供这样的方法。你不认为这将是一个安全漏洞吗?

于 2012-04-13T12:50:04.203 回答
2

有没有办法在 servlet 或 jsp 中添加参数?

是的。如果可以使用RequestDispatcher.forward(ServletRequest, ServletResponse)或者 RequestDispatcher.include(ServletRequest, ServletResponse)您可以使用HttpServletRequestWrapper来添加或过滤请求参数

// assuming this code is part of a Servlet or JSP
HttpServletRequest request = ...;
final Map<String,String> additionalParameters = ...;

RequestDispatcher dispatcher = this.getServletConfig().getServletContext().getRequestDispatcher("/");

dispatcher.forward(new HttpServletRequestWrapper(request){

    public String getRequestParameter(String parameterName) {
        if (additionalParameters.contains(parameterName)) {
           return additionalParameters.get(parameterName);
        } else {
           if (!"filteredParameter".equals(parameterName)) {
              return super.getParameterMap().get(parameterName());
           } else {
              return null;
           } 
        }
    }
}
, response);

如果您只想将其他“参数”传递给转发/包含的页面/servlet,建议使用ServletRequest.setAttribute(String, Object). ServletRequest 属性可以在处理请求期间添加/删除,并允许在使用请求参数时添加完整的 java 对象而不是字符串。

为什么java中没有手动添加参数的命令?

ServletRequest 请求参数通常应该被视为不可修改,因为它是从客户端发送到服务器的请求的 Warpper。如果要添加参数,请使用请求属性。

我的另一个疑问是,当从一个 jsp 页面转发到另一个页面时,输入请求(带有参数、属性等)是否会转发到下一个 jsp 页面?

大多数时候,原件HttpServletRequest被传递给转发的页面/servlet。但正如我的片段所示,也可以将不同的 ServletRequest 传递给转发/包含的 servlet/jsp。

如果我不想转发某些参数或属性怎么办?

请参阅上面的代码片段。您可以使用自己的过滤转发参数或属性HttpServletRequestWrapper

于 2012-04-14T14:04:25.573 回答
0

您可以通过在您的网址中使用它来传递您的参数。关于您对请求的问题。如果您转发到另一个 jsp/servlet,您的所有参数和属性都将在请求中。如果您不想在那里看到它,那么您应该改用重定向 (response.sendRedirect(url))

于 2012-04-13T13:05:13.537 回答