SpringMVC理解
SpringMVC 的简介与运行原理如下:
Spring MVC 中的MVC (modal、view、controller)分别是 模型、视图、控制器
Spring的模型-视图-控制器(MVC),该框架是围绕一个DispatcherServlet来设计的,这个DispatcherServlet会把请求分发给各个处理器,并支持可配置的处理器映射、视图渲染、等,甚至还能支持文件上传等功能。
springMVC的执行流程如下:
1. 客户端发起请求到前端控制器(DispatcherServlet)
2. 前端控制器请求处理器映射器(HandlerMapping)查找Handler。(可以根据xml配置、注解的方式进行查找)
3. 处理器映射器向前端控制器返回Handler
4. 前端控制器调用处理器适配器(HandlerAdapter)去执行Handler
5. 处理器适配器执行Handler
6. Handler执行完成后给适配器返回ModelAndView
7. 处理器适配器向前端控制器返回ModelAndView
8. 前端控制器请求视图解析器(ViewResolver)进行视图解析
9. 视图解析器向前端控制器返回view
10. 前端控制器进行视图渲染
11. 前端控制器向用户响应结果
(总之,dispatcherServlet就相当于中央处理器,大脑一样,接收请求,做发出请求什么的)
MVC组件:
前端控制器DispacherServlet:
接收请求,相应结果,相当于转发器,中央处理器,减少其他组件的耦合度
处理器映射器HandlerMapping:
根据请求的url查找相应的Handler
Handler处理器:
是项目的controller,开发的时候,要按照HandlerAdapter开发,这样适配器才会去执行
处理器适配器HandlerAdapter:
按照特定的规则执行Handler
视图解析器ViewResolver:
根据视图的名称,解析成view
视图View:
一个接口,实现类可以去支持不同类型(jsp...freemarker)
springMVC也有两种形式来实现。xml配置实现,或者通过注解的形式实现
web.xml
<!-- 配置前端控制器 -->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/classes/config/springmvc_anno.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
默认去填写的路径去找Springmvc的配置文件,如果和web.xml同级,则直接写/web-inf/springmvc.xml。
<init-param>配置contextConfigLocation,配置映射器和处理器,如果不配置的话,默认加载的是web-inf下的名为:servlet名字-servlet.xml
<!-- post请求乱码 -->
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<error-page>
<error-code>404</error-code>
<location>/404.jsp</location>
</error-page>
springMVC.xml
<!-- 开启注解扫描 -->
<context:component-scan base-package="cn.com.mvc" />
<!-- 处理器解析器和适配器 -->
<mvc:annotation-driven />
<!-- 视图解析器 -->
<!-- 动态返回jsp路径(前缀+名称+后缀): /jsp/index+.jsp -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
然后在controller上加上注解标签@RequestMapping。定义了controller的方法对应的url。限制get和post请求的方法@RequestMapping(value="/queryUser",method={RequestMethod.POST,RequestMethod.GET,})Method默认不写的话,get和post都支持。@Controller方法的返回值作为方法参数的常见类型:基本类型,类类型,集合类型,request,response,session,Model
返回modelandView:addObject相当于setAttribute。setViewName设置jsp的名字,然后在视图解析器动态拼接。
返回String
通过形参中的model,将数据回传给页面。
返回void
Return “ forward:update.action”
Return “ redirect:update.action”
Request.getRequestDispatcher(“/WEB-INF/jsp/update.jsp”).forward(request,respons)
如果参数为javabean,则需要控件的name和javabean中的name一致。
多删除的话,可以直接通过表单跳转,后台会自动用int[] userid 数组接收。
queryPojo 接收批量提交的信息,存储在itemList集合里。
后台可以用pojo的类去接收。条件:表单;控件name一致。
作者:黑色幽默ma
来源链接:https://blog.csdn.net/weixin_42412462/article/details/80920247
版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。
2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。