一 url-pattern的问题:
<!-- No mapping found for HTTP request with URI [/WEB-INF/jsp/homePage.jsp] in DispatcherServlet with name ‘dispatcher‘ 其中/和/*的区别: <url-pattern> / </url-pattern> 不会匹配到*.jsp,即:*.jsp不会进入spring的 DispatcherServlet类. <url-pattern> /* </url-pattern> 会匹配*.jsp,会出现返回jsp视图时再次进入spring的DispatcherServlet 类,导致找不到对应的controller所以报404错 --> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
二 访问静态资源的三种方式
(1)最后匹配,此处理器允许当dispatcherServlet的mapping为"/"时利用容器加载静态资源,会处理所有其它请求没有匹配后指向的缺省 servlet.比如的webapp下有一个1.jpg,不写这句无法加载.因为DispatcherServlet拦截“/”,拦截了所有的请求,同时 对*.js,*.jpg的访问也就被拦截了
<mvc:default-servlet-handler/>
(2)
<mvc:resources location="/img/" mapping="/img/**"/> <mvc:resources location="/js/" mapping="/js/**"/> <mvc:resources location="/css/" mapping="/css/**"/
(3)web.xml里添加如下的配置
<servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.css</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.gif</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.jpg</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.js</url-pattern> </servlet-mapping>
三 <mvc:annotation-driven/>
这个标签不写的话,404,识别不了@controller标签.<mvc:annotation-driven/>相当于注册了AnnotationMethodHandlerAdapter的bean,里面有很多预先处理,即解决了@Controller注解的解析使用
四 重复打印各种无用日志
tomcat部署springmvc(什么也没配置的..)显示启动成功,但一直在重复打印下面几句话.浏览器访问可以:
19:49:07.507 [http-bio-8080-exec-10] DEBUG o.s.web.servlet.DispatcherServlet - Successfully completed request
19:49:07.510
[http-bio-8080-exec-10] DEBUG o.s.web.servlet.DispatcherServlet -
DispatcherServlet with name ‘dispatcher‘ processing HEAD request for [/]
19:49:07.510 [http-bio-8080-exec-10] DEBUG o.s.w.s.m.m.a.RequestMappingHandlerMapping - Looking up handler method for path /
19:49:07.511 [http-bio-8080-exec-10] DEBUG o.s.w.s.m.m.a.RequestMappingHandlerMapping - Did not find handler method for [/]
19:49:07.511
[http-bio-8080-exec-10] WARN o.s.web.servlet.PageNotFound - No mapping
found for HTTP request with URI [/] in DispatcherServlet with name
‘dispatcher‘
网上查了不少原因,什么jar包冲突,配置错误,dispatcher路径等,均不管用. 最后多次尝试得到这个结论:
如果配置了tomcat after launch且并没有index.jsp首页就会发生这个情况.若是没有勾选after launch,则有无index.jsp都无所谓,都能正常启动不刷info 和 debug
五 全局异常处理器模板
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> <!-- 定义默认的异常处理页面 --> <property name="defaultErrorView" value="errorPage"/> <!-- 定义异常处理页面用来获取异常信息的变量名,如果不添加exceptionAttribute属性,则默认为exception --> <property name="exceptionAttribute" value="exception"/> <!-- 定义需要特殊处理的异常,用类名或完全路径名作为key,异常页面名作为值 --> <property name="exceptionMappings"> <props> <!--<prop key="IOException">errorIOPage</prop>--> <!--<prop key="java.sql.SQLException">error/sql.jsp</prop>--> </props> </property> </bean>
六 读取配置文件
<util:properties id="properties" location="classpath:properties/authority.properties"/>