springmvc的介绍和框架的原理
1、作用:
- 接收页面传递的数据
- 将数据交给业务成处理,将处理完成的后数据响应给用户
2\SpringMVC的原理图:
第一步:用户发起请求到前端控制器(DispatcherServlet)
第二步:前端控制器请求处理器映射器(HandlerMappering)去查找处理器(Handle):通过xml配置或者注解进行查找
第三步:找到以后处理器映射器(HandlerMappering)像前端控制器返回执行链(HandlerExecutionChain)
第四步:前端控制器(DispatcherServlet)调用处理器适配器(HandlerAdapter)去执行处理器(Handler)
第五步:处理器适配器去执行Handler
第六步:Handler执行完给处理器适配器返回ModelAndView
第七步:处理器适配器向前端控制器返回ModelAndView
第八步:前端控制器请求视图解析器(ViewResolver)去进行视图解析
第九步:视图解析器像前端控制器返回View
第十步:前端控制器对视图进行渲染
第十一步:前端控制器向用户响应结果
springMVC中的几个组件:
前端控制器(DispatcherServlet):接收请求,响应结果,相当于电脑的CPU。
处理器映射器(HandlerMapping):根据URL去查找处理器
处理器(Handler):(需要程序员去写代码处理逻辑的)
处理器适配器(HandlerAdapter):会把处理器包装成适配器,这样就可以支持多种类型的处理器,类比笔记本的适配器(适配器模式的应用)
视图解析器(ViewResovler):进行视图解析,多返回的字符串,进行处理,可以解析成对应的页面
绑定简单类型
支持的数据类型
@RequestParam注解使用
使用对象接收请求参数
自定义参数绑定
绑定数组
绑定集合
Controller返回
特点:
- url地址发生改变
- 数据没有共享 两个request。
特点:
- url地址没有发生改变
- 数据可以共享(一个请求,一个request)
springmvc的统一异常处理
一、自定义一个异常实体类
@SuppressWarnings("serial")
public class CustomException extends Exception {
private String msg;
/**
* @param msg
*/
public CustomException(String msg) {
super();
this.msg = msg;
}
/**
* @return the msg
*/
public String getMsg() {
return msg;
}
/**
* @param msg the msg to set
*/
public void setMsg(String msg) {
this.msg = msg;
}
}
二、自定义异常处理器
public class CustomExceptionResolver implements HandlerExceptionResolver {
/* (non-Javadoc)
* @see org.springframework.web.servlet.HandlerExceptionResolver#resolveException(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.lang.Object, java.lang.Exception)
*/
@Override
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler,
Exception ex) {
// TODO Auto-generated method stub
CustomException customException;
if (ex instanceof CustomException) {
customException = (CustomException) ex;
} else {
customException = new CustomException("系统哥哥跑丢了,联系管理员吧!");
}
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("error", customException.getMsg());
modelAndView.setViewName("error");
return modelAndView;
}
}
三、Spring配置文件中加载自定义异常处理器组件
<!-- 加载自定义异常处理器组件 -->
<bean class="com.cashier.util.CustomExceptionResolver"></bean>
四、添加error界面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>错误界面</title>
</head>
<body>
${error}
</body>
</html>
五、测试异常
@RequestMapping("/ceshiyichang")
public String ceshiyichang(Model model) throws CustomException {
try {
System.out.println("123");
int a = 100/0;
} catch (Exception exception) {
System.out.println("3211");
throw new CustomException("查询库存中分店名称列表-除零异常了-测试的异常");
}
return "index";
}
六、效果展示