0

我有一个jsp文件:

... import <%@ page import="classPath.ExampleClass" %>
 <% 
 ExampleClass cl = new ExampleClass(request); 
 %> 

ExampleClass (Java) 的代码:

private HttpServletRequest req;
public ExampleClass(HttpServletRequest req) {
    this.req = req;
}

所以我想收到用Java评估它的完整请求。但是在部署过程中会出现以下错误:

Cannot process HttpRequest to Servlet

为什么?

4

3 回答 3

0

不要搞砸。使用隐含对象JSP

JSP 隐式对象是 JSP 容器在每个页面中提供给开发人员的 Java 对象,开发人员可以直接调用它们而无需显式声明。JSP 隐式对象也称为预定义变量。

写吧

 <% 
 ExampleClass cl = new ExampleClass(request); 
 %> 
于 2013-04-30T06:51:52.863 回答
0

像创建 bean 类。

public class ExampleClass{          

      HttpServletRequest request;          

      public HttpServletRequest getRequest() {
        return request;
      }

      public void setRequest(HttpServletRequest request) {
        this.request = request;
      }    

    }

现在传递隐式request对象jsp tag

<jsp:useBean id="exampleClass" class="classPath.ExampleClass" scope="request"/>
 <jsp:setProperty name="exampleClass" property="request" value="${pageContext.request}"/>
于 2013-04-30T07:16:20.543 回答
0

在您的 jsp 中添加以下指令:

<jsp:useBean id="bean" class="classPath.ExampleClass" scope="request">
    <jsp:setProperty name="bean" property="*" />
    <jsp:setProperty name="bean" property="request" value="${pageContext.request}" />
</jsp:useBean>

属性“*”表示来自请求的所有属性都将设置在 bean(类)上,例如带有各种输入字段的表单提交。

属性“request”会将 HttpServletRequest 设置为最后一个参数,因此此方法可用作启动逻辑的指标。

您的课程可能如下所示:

public class ExampleClass {          

    private HttpServletRequest request;
    private String fieldValue;

    public void doLogic() {
        // do your controller logic here
    }

    public HttpServletRequest getRequest() {
        return request;
    }

    public String getFieldValue() {
        return fieldValue;
    }   

    public void setRequest(HttpServletRequest request) {
        this.request = request;
        doLogic();
    }

    public void setFieldValue(String fieldValue) {
        this.fieldValue = fieldValue;
    }   

}

请注意,该属性fieldValue是您可以添加的自定义字段,并且可以通过上述表单提交进行设置:

<form method="post">
    <input name="feildValue" type="text" value="${bean.fieldValue}"/>
    <input name="btnSubmit" type="submit" value="Submit"/>
</form>
于 2013-04-30T07:22:29.677 回答