2013-04-30 159 views
0

我有一個jsp文件:發送請求到Java

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

爲什麼?

+3

你工作與傳統的應用程序?如果沒有,嘗試從你的視圖分離你的邏輯,並使用MVC框架。混合使用JSP和控制器邏輯被認爲是不好的做法 – 2013-04-30 06:56:15

+0

您正在使用哪個Web服務器?錯誤究竟是什麼,它是一個例外嗎?你能分享堆棧跟蹤嗎? – 2013-04-30 06:58:16

+0

你對MVC框架有什麼意義?你能舉個例子嗎? – user1860908 2013-04-30 07:00:04

回答

0

implicit objectsJSP

不messup.Use JSP隱式對象的Java對象JSP容器使其可在每個頁面和開發者開發者可以直接調用它們沒有被明確聲明。 JSP隱式對象也稱爲預定義變量。

只寫

<% 
ExampleClass cl = new ExampleClass(request); 
%> 
+0

我以前試過,但是出現同樣的錯誤! – user1860908 2013-04-30 06:53:18

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}"/> 
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>