在jsp文件中添加参数

时间:2012-04-13 12:42:18

标签: java jsp servlets

有没有办法在servlet或jsp中添加参数?因为据我搜索,参数只能在表格中设置。 为什么java中没有命令手动添加参数? 我的另一个疑问是,当从一个jsp页面转发到另一个时,输入请求(带有参数,属性等)是否转发到下一个jsp页面? 如果我不想转发某些参数或属性怎么办?

4 个答案:

答案 0 :(得分:3)

可以使用<jsp: param>

传递请求参数

此标记包含两个属性:

  1. 姓名
  2. 值。
  3. 例如:

    <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>
    

答案 1 :(得分:2)

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

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

答案 2 :(得分:1)

  

有没有办法在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。但是如我的snipplet所示,也可以将不同的ServletRequest传递给转发/包含的servlet / jsp。

  

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

请参阅上面的代码段。您可以使用自己的HttpServletRequestWrapper

过滤转发的参数或属性

答案 3 :(得分:0)

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