SpringMvc

SpringMvc

1重要组件

DispacterServlet:前端控制器,接受所有请求,当配置为 " / "时,jsp除外

HandlerMapping:解析请求格式,判断要执行的方法

HandlerAdapter:负责执行方法

ViewResolver:视图解析器

运行原理图

SpringMvc_第1张图片

二 配置方式

首先在web.xml配置前端控制器的servlet,名字可以随便起,initparam一定要这样配,配置文件写在src下,要不读不到

SpringMvc_第2张图片

顺带可以配置字符编码过滤器,里面封装的代码和平时写的一样

SpringMvc_第3张图片

springmvc.xml配置文件,先导入约束,一般静态资源配置js,css,img等,因为前端控制器配置了" / ",所以除jsp外请求都被视为servlet请求,jsp内有可能要引用静态文件

SpringMvc_第4张图片

三 控制器怎么写,@ResponseBody 恒不跳转

不用再继承httpservlet,在类上加@Controller,servlet@RequestMapping("")内名字和方法名一样

SpringMvc_第5张图片

传递参数

基本数据类型,保证参数名一样

SpringMvc_第6张图片

当参数名不一样的时候,可以用@RequestParam注释("jsp内名称")

SpringMvc_第7张图片

可用@RequestParam设置默认值,这样防止500错误,就算没传值也会有值

SpringMvc_第8张图片

当强制要求必须有值

SpringMvc_第9张图片

当值是符合对象里面属性名时,可以直接用对象接,会自动匹配

SpringMvc_第10张图片

当需要接收的是同一名称多值时,复选框的名称是hover

SpringMvc_第11张图片

resultful风格传值

SpringMvc_第12张图片

四 自定义视图解析器

prefix是在前面加东西,suffix是在后面加,假如java中写的是return "show";会变成 /show.jsp

如果希望不执行自定义视图解析器,在方法返回值前面添加forward:或 redirect:
 

SpringMvc_第13张图片

5 作用域传值,这个demo,就是HanlderMethod

其中,map方式和model方式都会放在request中

SpringMvc_第14张图片

6 文件下载

首先导入两个包,resp.setHeander的content-disposition属性,默认浏览器都是inline,能显示就显示,不能显示就下载,修改成attachment;filename=下载文件名就优先下载,req.getServletContext().getRealPath()是获得文件夹files的具体路径,

new的一个file就是下载的全路径,用工具包转成字节数组直接写入地址

SpringMvc_第15张图片

7 文件上传

添加enctype,表示表单中包含二进制文件内容
 

SpringMvc_第16张图片

在配置文件中配置解析器

SpringMvc_第17张图片

异常解析器,当出现异常时跳到指定页面

SpringMvc_第18张图片

SpringMvc_第19张图片

SpringMvc_第20张图片

8 自定义拦截器

1 发送请求时被拦截器拦截,拦截器针对控制器拦截,只拦截控制器

2 与aop区别,aop在方法上设置切点,拦截器在控制器前后执行

3 与filter区别,filter拦截所有请求,拦截器针对控制器拦截

拦截器如何实现?

实现HandlerInterceptor接口

preHandle,在进入控制器之前,return true代表放行

控制器后,进入jsp前

//日志记录.
//敏感词语过滤

jsp后

//记录执行过程中出现的异常.
//可以把异常记录到日志中

在springmvc配置文件配置,默认拦截所有

SpringMvc_第21张图片

拦截指定控制器

SpringMvc_第22张图片

拦截器栈

在多个拦截器命名后,按照在配置文件定义的先后执行,按照后进先出的原则

假如有 A,B拦截器,A先定义,拦截顺序就是

preHandler :AB post:BA after :BA

preHandle(A) --> preHandle(B) --> 控制器方法 --> postHandle(B)
--> postHanle(A) --> JSP --> afterCompletion(B) --> afterCompletion(A)

 

 

 

 

 

 

你可能感兴趣的:(SpringMvc,后端,java框架)