靜態資源無法訪問的問題有三種解決方式:
1.使用Tomcat默認的servlet解決
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.jpg</url-pattern>
</servlet-mapping>
2.會將對靜態資源的訪問請求通過HandlerMapping映射到默認Servlet請求處理器DefaultServletRequestHandler對象。而該處理器調用了Tomcat的DefaultServlet來處理靜態資源的訪問請求。當然需要引入mvc約束
<mvc:defult-servlet-handler/>3.方式三 在Spring3.0.4之后,Spring定義了專門用於處理靜態資源請求的處理器ResourceHttpRequestHandler。
並且添加了<mvc:resources/>標簽,專門用於解決靜態資源無法訪問問題。 Location:靜態資源所在目錄
mapping: 對資源的請求
<mvc:resources location="/image/" mapping="/image / ** "></mvc:resources>
在沒有添加靜態資源的解決方法之前,jpg,js,css,都無法加載出來。下面使我們添加處理后的代碼。
搭建架構
FirstController
import javax.naming.ldap.Control; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.lang.annotation.Annotation; public class FirstController implements Controller { public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception { ModelAndView mv=new ModelAndView(); /* mv.setViewName("index.jsp");*/ mv.addObject("msg","hello mvc");//key he value mv.setViewName("index"); return mv; } }
Springmvc.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:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <bean id="/hello.do" class="cn.kitty.controller.FirstController"></bean> <!--方式一--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!--前綴 prefix --> <property name="prefix" value="/"></property> <!--后綴 suffix --> <property name="suffix" value=".jsp"></property> </bean> </beans>
index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ page isELIgnored="false"%> <html> <body> <img src="image/2.jpg"> <h2>Hello World!</h2> ${msg} </body> </html>
web.xml
<!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> <display-name>Archetype Created Web Application</display-name> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!--初始化 --> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.jpg</url-pattern> </servlet-mapping> </web-app>
運行結果 美美噠
后兩種方式的代碼都是寫在