2013-04-01 59 views
-1

訪問bean類包裝使用我轉發從Servlet類是在控制器封裝到一類是豆類package.Here請求請求調度是我的代碼..無法從控制器封裝類

private void credentialProcessing(HttpServletRequest request, 
      HttpServletResponse response) { 

     try{ 


      RequestDispatcher rd=request.getRequestDispatcher("algo");//this class is in bean package 
      rd.forward(request, response); 
     } 
     catch (ServletException e) { 

      e.printStackTrace(); 
     } catch (IOException e) { 

      e.printStackTrace(); 
     } 


    } 

Screen shot of project

錯誤: 當我試圖做到這一點Tomcat給我的錯誤,請求資源未找到..另一方面,如果我訪問控制包類它被訪問。

回答

2

RequestDispatcher使用路徑轉發請求,它不允許您指定轉發請求被轉發的類。

的getRequestDispatcher

Returns a RequestDispatcher object that acts as a wrapper for the resource located at the given path. A RequestDispatcher object can be used to forward a request to the resource or to include the resource in a response. The resource can be dynamic or static.

如果您要訪問從servlet algo類創建servlet中的類的實例。

private void credentialProcessing(HttpServletRequest request, 
      HttpServletResponse response) { 

     try{ 
      algo al = new algo(); 
      al.callSomeMethod(); 
     } 
     catch (ServletException e) { 

      e.printStackTrace(); 
     } catch (IOException e) { 

      e.printStackTrace(); 
     } 
    } 

在一個側面說明

查找到的命名約定的Java類,它要求類名要大寫。

+0

感謝reply..but你的網址是什麼意思? – james

+0

@james我應該說路徑。我所說的路徑是將URL映射到項目中的資源(servlet,jsp)。例如,如果您創建'/ myServlet'的servlet映射,則該servlet的路徑是〜domain/root/myServlet'。這導致對該路徑的請求被處理到我的servlet中。 RequestDispatcher以相同的方式工作。當您使用請求調度程序時,您基本上會使用用於查找相應資源的網址提交另一個請求。 –

+0

感謝它的工作。 – james

1

Algo是一個bean類我猜不是控制器,使用rd.forward轉發請求並不意味着請求可以從控制器轉發到bean類。

您按照代碼所做的操作就像是將請求從一個網址轉發到另一個網址。

如果您想轉發整個請求,請簡單實例化algo類,然後調用某個方法將請求作爲輸入參數。

在某些控制器方法

algo algoObj = new algo(); 
algo.processRequest (request, response); 
+0

+1和謝謝你的回覆。兩個回覆都是一樣的,我將不得不接受第一個迴應。 – james

+0

沒有probs,很高興你有解決方案。 –