SpringMVC und statische Ressourcen
Im neu in java und spring. Ich versuche, mich app "hello world" und nicht bekommen, was mache ich falsch.
hier ist meine Verzeichnis Struktur:
test_app
-pom.xml
-src
--main
---java
----com.example.web
-----IndexController.java
---webapp
----static
-----img
------example.jpg
----WEB-INF
-----web.xml
-----dispatcher-servlet.xml
-----jsp
------index.jsp
und Quellen:
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>Movie Reminder WebApp</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>WEB-INF/dispatcher-servlet.xml</param-value>
</context-param>
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
</web-app>
dispatcher-servlet.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<context:annotation-config/>
<context:component-scan base-package="com.example.web"/>
<bean id="viewResolver"
class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView"/>
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
</beans>
IndexController.java
package com.example.web;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class IndexController {
@RequestMapping(value = "/")
public ModelAndView index() {
return new ModelAndView("index");
}
}
index.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>Hello Spring!</title>
</head>
<body>
<img src="<c:url value="/static/img/example.jpg" />" />
</body>
</html>
wenn ich mich bereitstellen, meine app und Anfrage , bekomme ich 404 auf Bild-Anfrage
http://localhost:8081/ --- http 200 ok
http://localhost:8081/static/img/example.jpg - http 404 not found
wenn ich mvc:Ressourcen dispatcher-servlet.xml
<context:annotation-config/>
<context:component-scan base-package="com.example.web"/>
<mvc:resources mapping="/static/**" location="/static/" />
und neu kompilieren, ich bin immer 404 auf Anfrage /
http://localhost:8081/ --- http 404 not foundok
http://localhost:8081/static/img/example.jpg - http 200 ok
Mir bitte helfen herauszufinden, was ich falsch mache
- Im Apache Tomcat7 auf windows 7, spring-mvc-3.2.1.RELEASE
- java-version 1.7.0_11-b21
- hinzufügen <mvc:annotation-driven /> in der spring-config-Datei
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fügen Sie einfach diese beiden Zeilen, um Ihre
dispatcher-servlet.xml
Hier ist, was die Dokumentation für
default-servlet-handler
sagt:Es ist, weil der das servlet-mapping. Alle Anfragen werden an das servlet. Aber das servlet weiß nicht, wie zu Ehren der Anforderungen für statische Ressourcen. Müssen Sie eine Zuordnung für statische Ressourcen. Es gibt ein paar verschiedene Ansätze:
Verwenden Sie den Weg durch den mitgelieferten web-server. Leider variiert ein bisschen je nachdem, welche server Sie haben.
Verwenden Sie ein servlet, das dienen können statische Ressourcen.
Welche web-server benutzt du?
Als von Spring 3.0 und höher müssen Sie die folgenden zu Ihrem Spring-Konfiguration:
Dieser erzählt eine dispatcher-servlet, wie Sie zu beheben statische Ressourcen.
Ich hoffe, das hilft.
Verwenden Sie diese , wird es immer funktionieren.Viel Glück 🙂
Konfiguriere ich die Standard-servlet in web.xml dienen alle statischen Elemente, also einfach route request erreichen die Controller: