我有一个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
为什么?
答案 0 :(得分:0)
不要搞砸。使用JSP
的{{3}}
JSP隐式对象是JSP容器在每个页面中向开发人员提供的Java对象,开发人员可以直接调用它们而无需显式声明。 JSP隐式对象也称为预定义变量。
写一下
<%
ExampleClass cl = new ExampleClass(request);
%>
答案 1 :(得分: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}"/>
答案 2 :(得分: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>