Montrer la page jsp à l'intérieur de jar fichier à l'aide de Spring MVC
Je suis de développement d'une application web en java à l'aide de Spring MVC 3.2.2. Je vais avoir des problèmes de chargement de page jsp à partir de dans le fichier jar.
Le Sring application web MVC que la structure suivante:
|-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 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 />
Contrôleur 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 fichier
<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>
Lors d'un essai pour montrer externe.page jsp, le printemps ne veux pas de rechercher et d'afficher le message d'erreur HTTP 404 - /springapp/WEB-INF/vues/externe.jsp
OriginalL'auteur user2565228 | 2013-07-09
Vous devez vous connecter pour publier un commentaire.
Vous pouvez le faire si vous utilisez Servlet 3.0. Cependant, il ne fonctionnera pas avec la manière que vous avez de votre Jsp emballés. Vous avez des ressources du package dans un fichier JAR dans une manière spécifique:
META-INF/resources
répertoire de votre POT.web-fragment.xml
fichier dansMETA-INF
. Ceci est similaire à un type deweb.xml
avec quelques différences. Voir ici pour certains détails. Il y a aussi un exemple que j'ai trouvé ici. Cette option est facultative.WEB-INF/lib
de votre GUERRE.Maintenant, vous devriez être en mesure de vous référer à ces pages Jsp au sein de votre application à un contexte. Fondamentalement
META-INF/resources
est mappé à la racine du document de votre webapp. Regardez cette pour plus de détails. Gardez à l'esprit que ce n'est pas limité aux pages Jsp. Vous pouvez mettre des images, JavaScript, ou même CSS.OriginalL'auteur Vivin Paliath
Grâce Vivin pour votre solution. Il a travaillé pour moi.
Dans mon cas, j'ai eu:
testModule.jar
projet d'essai.la guerre
Il peut être important de dire que le Servlet 3.0 ne pas manipuler des fragments sur une Éclipse scénario de déploiement dans Glassfish 3.1.2 (il peut-être travaille dans JBoss ou autres, à confirmer). En fait, j'ai mis testModule.jar dans le déploiement de l'assemblée du projet d'essai.la guerre et quand je le déployer via Eclipse, il génère un dossier testModule.jar au lieu d'un fichier JAR.
Mais il travaille lors de l'exportation d'une GUERRE.
EDIT:
Pour qu'il fonctionne avec de l'Éclipse de déploiement, vous devez cocher une option dans Glassfish 3.1.2 propriétés : Déployer dans le bocal. Je pense que c'est une option récente mise en œuvre dans la dernière version du plugin. Visible sur Kepler, mais pas sur Juno.
Avez-vous travaillé avec Spring MVC? Pouvez-vous me donner ViewResolver bean config suivre cette structure?
OriginalL'auteur Ludovic Guillaume
Je l'ai fait à l'aide de Vivin de la solution. Voici la structure de dossiers de mon POT dans Eclipse.
Inclus le jar dans le dossier WEB-INF/lib du dossier de ma GUERRE:
Ajouté ce qui suit dans mon pom.xml de la GUERRE:
Inclus la jsp dans mon Projet Web à l'aide :
OriginalL'auteur Hasan K
Structure fonctionne pour moi
pot module (jar)
principale de l'application web (module de guerre)
Et ViewResolver config (je suis en utilisant Thymeleaf):
OriginalL'auteur tranductrinh