2013-04-01 3 views
-1

Использования запроса диспетчера Я переадресация запроса от класса сервлета, который находится в пакете контроллера к классу, который находится в фасоли 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.

Если вы хотите получить доступ к algo класс от сервлета создать экземпляр класса внутри сервлета.

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, что вы имеете в виду по URL? – james

+0

@james Я должен был сказать дорожки. То, что я подразумеваю под путями, - это сопоставление URL-адреса ресурсу (сервлет, jsp) в вашем проекте. Так, например, если вы создаете отображение сервлета '/ myServlet', путь к сервлету равен ~ domain/root/myServlet'. Это вызывает запрос, направленный на этот путь, для обработки моего сервлета. RequestDispatcher работает таким же образом. Когда вы используете диспетчер запросов, вы в основном отправляете другой запрос с URL-адресом, который используется для поиска соответствующего ресурса. –

+0

Спасибо, сработало. – james

1

Algo - это класс боба. Я думаю, что не контроллер, использование запросов rd.forward для пересылки не означает, что запрос может быть перенаправлен с контроллера на класс bean.

Что вы делаете в соответствии с кодом, это как пересылка запроса с одного URL на другой.

Если вы хотите переслать весь запрос простой экземпляр класса algo и вызвать некоторый метод, который принимает запрос в качестве входного параметра.

В некоторых контроллер метод

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

+1 и Спасибо за ответ .. ответы были одинаковыми, я должен принять тот, который пришел первым. – james

+0

Нет проблем, рад, что у вас есть решение. –