tricks body attribute css maven pom.xml

css - body - html title attribute



¿A dónde van los archivos CSS y JavaScript en un proyecto de aplicación web Maven? (3)

org.springframework.web.servlet.PageNotFound: no se encontró una asignación para la solicitud HTTP con URI [/appname/css/myStyles.css] en DispatcherServlet

Esto indica un problema de configuración con su archivo web.xml / spring context. DispatcherServlet no debe procesar una solicitud de un recurso css .

Si esto no ayuda a solucionar el problema, puede publicar fragmentos relevantes de su archivo web.xml y de contexto de primavera.

Estoy cambiando para usar Maven para mis proyectos de aplicaciones web Spring y me encuentro con un problema simple. No estoy seguro de dónde colocar los archivos CSS y JS en la nueva estructura del proyecto.

Estructura de aplicación web tradicional

En una estructura de aplicación web Java tradicional (en Eclipse, creado como un Proyecto web dinámico) puse los archivos CSS, Javascript e Imágenes bajo la siguiente estructura

WebContent |__css/myStyles.css |__js/myjs.js |__images/myImage.gif |__WEB-INF

Luego, en mi jsp, si quiero hacer referencia a un archivo CSS, lo hago de la siguiente manera:

<link rel="stylesheet" href="<%=request.getContextPath()%>/css/myStyles.css">

Esto funciona bien

Estructura de la aplicación web Maven

En un proyecto de Maven, he colocado los archivos css en estas ubicaciones:

Primer intento

Debajo de la carpeta de aplicaciones web al mismo nivel que WEB-INF, como en un proyecto web dinámico tradicional. Pero cuando hago lo siguiente

mvn clean tomcat:run

Recibo el siguiente error del Spring Framework:

org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/appname/css/myStyles.css] in DispatcherServlet

Segundo intento

Coloqué mi carpeta css en src / main / resources Pero cuando hago lo siguiente:

mvn clean tomcat:run

Recibo el siguiente error del Spring Framework:

org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/appname/css/myStyles.css] in DispatcherServlet

Tercer intento

Colocado mi carpeta css src / main / resources

Resultados: igual que arriba

Estoy seguro de que es algo simple pero estoy atascado, tal vez estoy pasando por alto algo. Gracias por adelantado

ACTUALIZACIÓN : Agregar pom.xml para ver si puede ayudar a solucionar el problema:

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.dariopardo</groupId> <artifactId>jfreechartdemo</artifactId> <name>abc</name> <packaging>war</packaging> <version>1.0.0-BUILD-SNAPSHOT</version> <properties> <java-version>1.6</java-version> <org.springframework-version>3.0.6.RELEASE</org.springframework-version> <org.aspectj-version>1.6.9</org.aspectj-version> <org.slf4j-version>1.5.10</org.slf4j-version> </properties> <repositories> <repository> <id>spring-maven-release</id> <name>Spring Maven Release Repository</name> <url>http://maven.springframework.org/release</url> </repository> <repository> <id>spring-maven-milestone</id> <name>Spring Maven Milestone Repository</name> <url>http://maven.springframework.org/milestone</url> </repository> <repository> <id>spring-roo-repository</id> <name>Spring Roo Repository</name> <url>http://spring-roo-repository.springsource.org/release</url> </repository> <repository> <id>JBoss Repo</id> <url>https://repository.jboss.org/nexus/content/repositories/releases</url> <name>JBoss Repo</name> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>spring-maven-release</id> <name>Spring Maven Release Repository</name> <url>http://maven.springframework.org/release</url> </pluginRepository> <pluginRepository> <id>spring-maven-milestone</id> <name>Spring Maven Milestone Repository</name> <url>http://maven.springframework.org/milestone</url> </pluginRepository> <pluginRepository> <id>spring-roo-repository</id> <name>Spring Roo Repository</name> <url>http://spring-roo-repository.springsource.org/release</url> </pluginRepository> </pluginRepositories> <dependencies> <!-- Spring --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${org.springframework-version}</version> <exclusions> <!-- Exclude Commons Logging in favor of SLF4j --> <exclusion> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${org.springframework-version}</version> <exclusions> <exclusion> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${org.springframework-version}</version> <scope>test</scope> <exclusions> <exclusion> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>${org.springframework-version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>${org.springframework-version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>${org.springframework-version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${org.springframework-version}</version> <classifier /> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>${org.springframework-version}</version> <classifier /> </dependency> <dependency> <groupId>commons-pool</groupId> <artifactId>commons-pool</artifactId> <version>1.5.4</version> <classifier /> <exclusions> <exclusion> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> <version>1.3</version> <classifier /> <exclusions> <exclusion> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> </exclusion> <exclusion> <groupId>commons-pool</groupId> <artifactId>commons-pool</artifactId> </exclusion> <exclusion> <groupId>xerces</groupId> <artifactId>xerces</artifactId> </exclusion> <exclusion> <groupId>xerces</groupId> <artifactId>xercesImpl</artifactId> </exclusion> <exclusion> <groupId>xml-apis</groupId> <artifactId>xml-apis</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${org.springframework-version}</version> <classifier /> <exclusions> <exclusion> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${org.springframework-version}</version> </dependency> <!-- AspectJ --> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjrt</artifactId> <version>${org.aspectj-version}</version> </dependency> <!-- Hibernate --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>3.6.4.Final</version> <classifier /> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> <version>3.6.4.Final</version> <classifier /> <exclusions> <exclusion> <groupId>cglib</groupId> <artifactId>cglib</artifactId> </exclusion> <exclusion> <groupId>dom4j</groupId> <artifactId>dom4j</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.hibernate.javax.persistence</groupId> <artifactId>hibernate-jpa-2.0-api</artifactId> <version>1.0.0.Final</version> <classifier /> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>4.1.0.Final</version> <classifier /> <exclusions> <exclusion> <groupId>javax.xml.bind</groupId> <artifactId>jaxb-api</artifactId> </exclusion> <exclusion> <groupId>com.sun.xml.bind</groupId> <artifactId>jaxb-impl</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>javax.validation</groupId> <artifactId>validation-api</artifactId> <version>1.0.0.GA</version> <classifier /> </dependency> <dependency> <groupId>cglib</groupId> <artifactId>cglib-nodep</artifactId> <version>2.2</version> <classifier /> </dependency> <dependency> <groupId>javax.transaction</groupId> <artifactId>jta</artifactId> <version>1.1</version> <classifier /> </dependency> <!-- Logging --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>${org.slf4j-version}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>jcl-over-slf4j</artifactId> <version>${org.slf4j-version}</version> <scope>runtime</scope> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>${org.slf4j-version}</version> <scope>runtime</scope> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.15</version> <exclusions> <exclusion> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> </exclusion> <exclusion> <groupId>javax.jms</groupId> <artifactId>jms</artifactId> </exclusion> <exclusion> <groupId>com.sun.jdmk</groupId> <artifactId>jmxtools</artifactId> </exclusion> <exclusion> <groupId>com.sun.jmx</groupId> <artifactId>jmxri</artifactId> </exclusion> </exclusions> <scope>runtime</scope> </dependency> <!-- @Inject --> <dependency> <groupId>javax.inject</groupId> <artifactId>javax.inject</artifactId> <version>1</version> </dependency> <!-- Servlet --> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <!-- Test --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.7</version> <scope>test</scope> </dependency> <!-- To bring jfree chart in, iText & Apache POI --> <dependency> <groupId>net.sf.jasperreports</groupId> <artifactId>jasperreports</artifactId> <version>4.1.2</version> </dependency> <dependency> <groupId>org.codehaus.groovy</groupId> <artifactId>groovy-all</artifactId> <version>1.5.5</version> </dependency> <!-- Oracle jdbc drivers --> <dependency> <groupId>com.oracle</groupId> <artifactId>oracle</artifactId> <version>10.2.0.1.0</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>${java-version}</source> <target>${java-version}</target> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <configuration> <warName>abc</warName> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <executions> <execution> <id>install</id> <phase>install</phase> <goals> <goal>sources</goal> </goals> </execution> </executions> </plugin> </plugins> </build>

ACTUALIZACIÓN: Agregar Web.xml

<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <!-- The definition of the Root Spring Container shared by all Servlets and Filters --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/spring/root-context.xml classpath*:META-INF/spring/applicationContext*.xml </param-value> </context-param> <!-- Creates the Spring Container shared by all Servlets and Filters --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- Processes application requests --> <servlet> <servlet-name>appServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>appServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>


Entonces, si tiene su DispatcherServlet configurado en un REST como patrón de URL como / entonces los archivos css irían a src / main / webapp / resources

Solo para aclarar esto, es lo que tenía que hacer:

  1. Asegúrese de que en su servlet-context.xml tenga lo siguiente:

    <resources mapping="/resources/**" location="/resources/" />

  2. Cree una carpeta si aún no existe en webapps llamados recursos

  3. Coloque su carpeta css junto con los archivos css allí

  4. Referencia mi archivo css de la siguiente manera:

    <link rel="stylesheet" href="<%=request.getContextPath()%>/resources/css/960.css"/>


Me enfrenté a la misma pregunta en un proyecto de maven. Parece que no hay una buena respuesta para mi problema. Así que hice un experimento simple y funcionó perfectamente.

Este es un proyecto maven simple, tengo la siguiente estructura de directorios: (No se muestran directorios irrelevantes)

───src └───main ├───java ├───resources └───webapp ├───javascript │ ├───test.js │ ├───example.js │ └───jquery-library.js ├───WEB-INF │ └───web.xml └───example.jsp

Mis páginas JSP pueden referirse a mis bibliotecas de JavaScript simplemente como

<script src=javascript/jquery-library.js></script>

No hay necesidad de ninguna configuración especial.