# JSP und RESTful zusammen



## -akra- (24. Apr 2014)

Guten Tag!

(ich hoffe ich schreibe am richtigem Ort, wenn nicht bitte verschieben)

Was ich haben will:
Ich baue einen "server" nach mvc. 
Dieser soll 2 Funktionalitäten haben:
-soll über RESTfull mit meinem Client kommunizieren und Daten in mein model speichern oder auch an den Client schicken.
-soll eine View als JSP Seite besitzen, welche mir die Daten aus dem Model anzeigt.

Was ich habe:
- Eclipse, Dynamic Web Project, Maven, Tomcat 7
- Client Seite funktioniert
- simple Kommunikation über REST ist funktionsfähig ("allein")
- simples Anzeigen von JSP Seite und verschiedenen Sachen geht auch ("allein") 
(es sind also bis jetzt 2 klassen und eine JSP Seite)

Problem:
Ich kann leider nur entweder eine oder andere Funktionalität nutzen bzw im Projekt ausführen. 
Wie baue ich das Projekt so dass ich über JSP Sachen anzeigen kann und gleichzeitig mein RESTfull Service läuft und mit dem Client kommuniziert?
wenn ich in der _web.xml_ Einstellungen für den REST treffe, und das Projekt starte dann habe ich keinen Zugriff auf die "Home.jsp". 
Wenn ich die Einstellungen für die REST auskommentiere und das Projekt starte dann kann ich nicht mehr auf meine Methoden von Rest zugreifen.

ich vermute dass es an den Einstellungen in der web.xml liegt
web.xml:

[XML]
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="......>

	<display-name>server</display-name>
	<welcome-file-list>
		<welcome-file>/Home.jsp</welcome-file>
	</welcome-file-list>

<context-param>
		<param-name>resteasy.resources</param-name>
		<param-value>controller.ControllerRestArea</param-value>
	</context-param>

	<listener>
		<listener-class>
			org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap
		</listener-class>
	</listener>

	<servlet>
		<servlet-name>resteasy-servlet</servlet-name>
		<servlet-class>
			org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher
		</servlet-class>

	</servlet>

	<servlet-mapping>
		<servlet-name>resteasy-servlet</servlet-name>
		<url-pattern>/*</url-pattern>
	</servlet-mapping>


</web-app>

[/XML]

mein Pfad zur jsp Seite im Browser:

```
http://localhost:8080/server/Home.jsp
```

ausschnitt REST seite:
methoden:

```
@Path("/json/product")
public class ControllerRestArea {
	@GET
	@Path("/get")
	@Produces("application/json")
	public String methodGet() {
           //do stuff
        }


}
```
zugriff auf die Get Methode ist:

```
http://localhost:8080/server/json/product/get
```


hat jemand ein tipp was ich falsch mache? Oder wie ich weiter vorgehen soll?

mfg akra


----------



## turtle (24. Apr 2014)

Du mappst ja auch ALLE URLs an das Rest-Servlet, also auch Zugriffe auf jsp-Seiten

[XML]<servlet-mapping>
        <servlet-name>resteasy-servlet</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>
    [/XML]


----------



## -akra- (24. Apr 2014)

Danke für den Tipp!
ohne den * geht beides gleichzeitig. Meinst du es ist sauber so eine Einstellung in der web.xml?
oder kann man es etwas verbessern?

mfg akra


----------



## turtle (24. Apr 2014)

Ich finde es ok

PS:
Sehe, das du bereits unterscheidest:
[XML]@Path("/json/product") [/XML]
Das finde ich einerseits gut, andererseits schlecht

Der Zusatz json wird ja bei den Client-Aufrufen sichtbar und du weisst, dass hier ein REST-Aufruf kommt. (gut). Schlecht finde ich, das du hier festlegst, das da wohl json Ergebnisse kommen und du das nicht mehr so einfach ändern kannst. (schlecht)

Ich würde Path "/rest/product" nehmen, weil dann offensichtlich ein REST-Request kommt und das kannst du auch schön in web.xml mappen.


----------

