Spring MVC
-
为什么要学Spring MVC
-
解决mvc层的问题 就是做相应的
-
MVC的是可以和其他的技术集成技术进行结合
-
其他的MVC框框
- Struts1 --> WebWork --> Struts2
- Spring MVC
- JSF
-
前端控制器
- 集中处理请求
- 可以把集中重复的事情在这里做
- 处理编码 启动Spring容器 就都走到这里来 这里就是前端控制器
- spring mvc 是用 servlet来实现的 /*
- 集中处理请求
-
mvc注解解析器
-
<!-- MVC 注解解析器 经常使用的注解 @RequestBody @ReponseBody @ExceptioHandler --> <mvc:annotation-driven/>
-
Tomcat内置Servlet对象
-
DefaulServlet
- /
-
JSPServlet
-
-
我们自己创建的
- /
-
如果内置的访问路径和我们的路径相等的时候,先访问我们的内置静态的文件被覆盖掉
-
前端控制器路径的配置
处理响应
-
转发和重定向
- 不是找视图所以 不能用视图解析器的后缀
处理简单类型的请求参数
过滤器和拦截器的区别
Tomcat启动会解析 web.xml
- 把里面配置的Servlet Filter Listtener 对象都创建存起来
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Tl5pN74E-1603424586899)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20201022223012656.png)]
用到的类对象
-
对象.addAttribute("后面值的名 字","传的值")
用到的注解和其功能
-
@Controller Controller只是定义了一个控制器类
-
@RequestMapping注解的方法才是处理请求的处理器。
- equestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径
- 也可以贴在方法上面
-
MVC的类可以直接在传参数里面传值和定义不用再进行非空判断
-
可以传数组date类型和其他的自定义类型等
-
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gWHhdPYG-1603424586907)(D:\学习文件夹\培训预习和复习文件\课后总培\第三阶段\day08\img\image-20201023104547230.png)]
-
传入自定义类型
-
可以直接从
-
lei.获取值的名字获取数据
-
pic.getContentType()
-
-
mvc.xml的代码应用
-
<!-- 配置 IoC DI 注解解析器,让 Spring 我们创建 HelloController 类的对象 --> <context:component-scan base-package="com.cen.web.controller"/>
-
component-scan : 扫描器
-
base-package : 包的路径
-
-
<mvc:annotation-driven/>
-
<!-- MVC 注解解析器 @RequestBody @ReposeBody @ExceptioHandler -->
-
-
<!--视图解析器 把逻辑视图解析成物理视图 String - File 就是把String类型的路径转成物理类型的视图 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/"/> <property name="suffix" value=".jsp"/> </bean>
- InternalResourceViewResolver:
- 内部资源视图解析器
- class的类就是这个
静态资源转发
- InternalResourceViewResolver:
-
<!-- 如果路劲处理不了静态资源 就交由静态资源器来处理来处理 *.do 可以不配置这个 <mvc:default-servlet-handler/>-->
配置上传解析器
-
<!--配置上传解析器--> <bean id="multipartResolver" class="org.springframework.web.multipart.support.StandardServletMultipartResolver"/>
- StandardServletMultipartResolver
- 标准Servlet多部分解析器
- StandardServletMultipartResolver
拦截器
-
<!--配置拦截器--> <mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/**"/> <bean class="com.cen.web.interceptor.MyInterceptor"/> </mvc:interceptor> </mvc:interceptors>
web.xml的代码分析
-
配置 Spring MVC 前端控制器
-
Spring MVC 前端控制器
-
<servlet-name>dispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
-
DispatcherServlet: 分派器
-
<!-- 指定 Spring 容器启动加载的配置文件--> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:mvc.xml</param-value> </init-param>
-
指定mvc.xml文件的位置
-
-
<!-- Tomcat 启动初始化 --> <load-on-startup>1</load-on-startup>
- load-on-startup:
- 元素标记容器是否应该在启动的时候加载这个servlet,(实例化并调用其init()方法)
- load-on-startup:
-
上传文件大小的限制:
-
<multipart-config> <max-file-size>52428800</max-file-size> <max-request-size>52428800</max-request-size> </multipart-config>
-
-
访问的时候带上后缀
-
<servlet-mapping> <servlet-name>dispatcherServlet</servlet-name> <!--路径资源都要带.do结尾--> <url-pattern>*.do</url-pattern> <!-- <url-pattern>/</url-pattern>--> </servlet-mapping>
-
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<!--路径资源都要带.do结尾-->
<url-pattern>*.do</url-pattern>
<!-- <url-pattern>/</url-pattern>-->
</servlet-mapping>
```