# MVC in J2EE: mehrere JSPs über ein Servlet kontrollieren



## Macro (11. Jan 2006)

Nabend.
Wir erstellen im Rahmen des Studiums eine kleine Webapplikation und ich bin für die Servlets zuständig. Wir haben ca 20 JSPs und ich möchte nicht für jede JSP ein eigenes Servlet schreiben. Daher wäre meine Frage wie ich herausfinde, welche JSP das Servlet aufgerugfen hat?

Thx


----------



## BLiNK (11. Jan 2006)

http://java.sun.com/j2ee/1.4/docs/api/javax/servlet/http/HttpServletRequest.html#getRequestURI()

Das sollte dir helfen.


----------



## Macro (11. Jan 2006)

Ich bekomme immer nur die URL des Servlets zurück??


```
public class MainControllerServlet extends AbstractControllerServlet {

	
	public void doGet(HttpServletRequest req, HttpServletResponse resp)
		throws ServletException, IOException {
		processRequest(req, resp);
	}

	
	public void doPost(HttpServletRequest req, HttpServletResponse resp)
		throws ServletException, IOException {
		processRequest(req, resp);
	}

	private void processRequest(HttpServletRequest request, HttpServletResponse resüonse){
		String a = request.getRequestURI();
		System.out.println(a);
	}

}// end Servlet
```


----------



## BLiNK (11. Jan 2006)

Klar. Was willst du mehr? Jetzt kannst du einfaches Matching mit if else machen. Oder schöner mit einem Action Pattern(HashMap).


----------



## Macro (12. Jan 2006)

Schon mal Danke für deine Hilfe, aber es kommt leider nicht ganz das Ergebnis raus das ich benötige.

Login.jsp ---> MainControllerServlet
Register.jsp ---> MainControllerServlet
bla.jsp ---> MainControllerServlet

Das MainControllerServlet soll jetzt erkennen von welcher JSP der request kam und dementsprechend darauf reagieren. Mit der oben beschriebenen Methode gibt er mir aber nur *"/meinPfad/MainCotrollerServlet"* aus. Er soll aber z.B. "/meinPfad/JSP/Login.jsp" ausgeben.

Thx


----------



## Macro (12. Jan 2006)

Schon mal Danke für deine Hilfe, aber es kommt leider nicht ganz das Ergebnis raus das ich benötige.

Login.jsp ---> MainControllerServlet
Register.jsp ---> MainControllerServlet
bla.jsp ---> MainControllerServlet

Das MainControllerServlet soll jetzt erkennen von welcher JSP der request kam und dementsprechend darauf reagieren. Mit der oben beschriebenen Methode gibt er mir aber nur *"/meinPfad/MainCotrollerServlet"* aus. Er soll aber z.B. "/meinPfad/JSP/Login.jsp" ausgeben.

Thx


----------



## BLiNK (12. Jan 2006)

Das wundert mich ehrlich gesagt. Vielleicht stimmt aber mit deinem Mapping in der web.xml etwas nicht. D musst dort alle Aufrufe auf dein MainControllerServlet mappen. 
Ich nehme mal an, dass du in deinem Login ein form Element hast. Die Action dieses form-Element setzt du beispielsweise auf "Login". Login mappst du dann in der web.xml auf dein MainControllerServlet. Der Pfad ist dann "/meinPfad/Login". Du musst dann aber natürlich zwischen einem POST-Aufruf von Login und einem GET-Aufruf unterscheiden

Schau dir einfach mal das FrontController Pattern an. Das ist genau das, was du versuchst zu bauen. http://java.sun.com/blueprints/corej2eepatterns/Patterns/FrontController.html


----------



## Macro (12. Jan 2006)

Danke


----------

