Spring MVC 解决无法访问静态文件和"全局异常处理"
我们都知道,Spring MVC的请求都会去找controller控制器,若果我们页面中引入了一个外部样式,这样是没效果的,
我们引入样式的时候是通过<like href="..."></like>
这也算请求,若果我们href中的URL是http://localhost:8080/Text/statics/css/main.css
他不会去找样式表,而是去拆解URL,在根据HandlerMapping去找对应的Handler,但是,这个地址是没有预支对应的Handler,也就会报错!
我们可以这样解决,很简单 在Xxx-servlet.xml配置文件中加入如下代码:
<mvc:resources location="/statics/" mapping="/statics/**" />
mapping中的"**"的意思是,去statics文件夹下迭代查找文件
这样就解决了问题!
全局异常处理:
第一步:创建一个自己的异常类,继承至运行时异常(RuntimeException)
package cn.happy.entity; public class UserException extends RuntimeException { public UserException() { super(); } //简单的异常类,用到的是这个构造 public UserException(String message){ super(message); } }
第二步:在Spring MVC核心配置文件中配置如下代码:
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> <property name="exceptionMappings"> <props> <prop key="cn.happy.entity.UserException">error</prop> </props> </property> </bean>
prop节点的key就是异常类,error就是异常页面也就是Value(可配置多个)
第三步:在一个Handler中手动抛出一个异常并且不做处理:
package cn.happy.controller; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import cn.happy.entity.Student; import cn.happy.entity.UserException; @Controller public class HelloController { @RequestMapping(value="/hello") public String hello(Student stu,Model model){ throw new UserException("Sorry, the server was wrong."); } }
第四步:创建error异常页面:
第五步:访问该地址:(http://localhost:8080/项目名/hello)
异常成功处理到自己的异常页面!