Show jsp-Seite innerhalb der jar-Datei mit Spring MVC
Ich bin der Entwicklung einer web-Anwendung in java mit Spring MVC 3.2.2. Ich habe Probleme beim laden der jsp-Seite innerhalb der jar-Datei.
Den Frühling MVC web-Anwendung, die die folgende Struktur:
|-META-INF
|-WEB-INF
|-spring
| |- app-config.xml
|-classes
|-lib
| |-external.jar
| |-WEB-INF
| | |-views
| | |-external.jsp
| |-classes
| |-controller-for-external.class
|-views
|-... jsp
Config in app-config.xml
<context:annotation-config />
<context:component-scan base-package="com" />
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView"></property>
<property name="prefix" value="/WEB-INF/views/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
<mvc:resources mapping="/views/**" location="classpath:/WEB-INF/views/" />
<mvc:annotation-driven />
Controller für externe.jsp
@Controller
public class ExternalController {
protected final Log logger = LogFactory.getLog(getClass());
@RequestMapping(value="/external.htm")
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
Map<String, Object> myModel = new HashMap<String, Object>();
myModel.put("msg", "External page loaded");
return new ModelAndView("external", "model", myModel);
}
}
web.xml Datei
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<display-name>Springapp</display-name>
<servlet>
<servlet-name>springapp</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/app-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/app-config.xml</param-value>
</context-param>
<servlet-mapping>
<servlet-name>springapp</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
</web-app>
Wenn Sie versuchen, um zu zeigen externe.jsp-Seite, spring nicht wollen, suchen Sie und zeigen Fehler HTTP 404 - /springapp/WEB-INF/views/"extern".jsp
InformationsquelleAutor user2565228 | 2013-07-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie dies tun, wenn Sie mit Servlet 3.0. Allerdings funktioniert es nicht mit der Art und Weise haben Sie Ihre JSPs verpackt. Sie haben, um Paket-Ressourcen in eine JAR-Datei in einer bestimmten Weise:
META-INF/resources
- Verzeichnis der JAR.web-fragment.xml
Datei inMETA-INF
. Dies ist ähnlich wie eine typischeweb.xml
mit einigen unterschieden. Sehen hier für einige details. Es ist auch ein Beispiel, das ich gefunden hier. Dies ist optional.WEB-INF/lib
euren KRIEG.Nun sollten Sie in der Lage sein, auf diese zu verweisen JSPs innerhalb des app-Kontext. Im Grunde
META-INF/resources
zugeordnet ist, um die Dokument-root von deiner webapp. Blick auf diese für mehr details. Beachten Sie, dass dies ist nicht beschränkt auf JSPs. Sie können Bilder, JavaScript-oder auch CSS.InformationsquelleAutor Vivin Paliath
Dank Vivin für Ihre Lösung. Es funktionierte für mich.
In meinem Fall hatte ich:
testModule.jar
testProject.Krieg
Kann es wichtig sein zu sagen, dass der Servlet 3.0 - nicht Griff-Fragmente auf eine Eclipse deployment-Szenario in Glassfish 3.1.2 (es vielleicht Werke in JBoss oder anderen bestätigt werden). Eigentlich habe ich eingestellt testModule.jar im deployment-assembly von testProject.Krieg und wenn ich eine Bereitstellung über Eclipse, die es erzeugt einen Ordner testModule.jar statt einer JAR-Datei.
Aber es funktioniert beim exportieren als KRIEG.
EDIT:
Um es arbeiten mit Eclipse deployment, Sie haben zu prüfen, eine option in Glassfish 3.1.2 Eigenschaften : Bereitstellen als jar. Ich denke, es ist eine neue Möglichkeit implementiert, im letzten plugin-version. Sichtbar auf Kepler, aber nicht auf Juno.
Hast du die Arbeit mit Spring MVC? Können Sie mir ViewResolver bean config dieser Struktur Folgen?
InformationsquelleAutor Ludovic Guillaume
Habe ich es mit Vivin Lösung. Hier ist die Ordner-Struktur meiner JAR in Eclipse.
Enthalten die jar in das WEB-INF/lib-Ordner von mein KRIEG:
Fügte auch die folgende in meinem pom.xml der KRIEG:
Enthalten die jsp in meinem Web-Projekt mit :
InformationsquelleAutor Hasan K
Struktur funktioniert für mich
- Glas-Modul (jar)
Haupt-web-app-Modul (Krieg)
Und ViewResolver config (ich bin mit Thymeleaf):
InformationsquelleAutor tranductrinh