1、SpringMVC
1)什么是Spring MVC
Spring MVC是Spring框架中的一个功能模块,实现MVC结构,便于简单地、快速开发MVC结构的WEB应用,SpringMVC提供的API封装WEB开发中常用的功能,简化WEB开发过程。
2)Spring MVC的核心组件
* DispatcherServlet(控制器,请求入口)
* HandlerMapping(控制器,请求派发)
* Controller(控制器,请求处理)
* ModelAndView(封装业务处理结果和跳转视图)
* ViewResolver(视图显示处理器)
3)Spring MVC的处理流程
浏览器向服务器发送请求,请求交给前端控制器DispatcherServlet,前端控制器通过HandlerMapping找到相对应的Controller组件
来处理请求执行Controller组件的约定方法,在约定方法中调用模型层组件来完成业务处理,约定方法返回一个ModelAndView对象,此
对象封装处理结果和跳转的视图名称,前端控制器接收到ModelAndView对象之后,调用ViewResolver组件定位View(JSP),传递数据信息,
生成响应页面
2、基于XML配置的MVC应用
1)搭建Spring MVC环境
step1:创建WEB工程,导入Spring相关开发包(Spring ioc,web,webmvc)
step2:在src下添加Spring XML配置文件,名称可以自定义,例如spring-mvc.xml
在web.xml中配置DispatcherServlet前端控制器,配置DispatcherServlet时,同时指定XML配置文件路径
2)Controller组件负责执行具体业务处理,编写时需要实现Controller接口及约定方法handleRequest
3)handleRequest方法返回一个ModelAndView对象,此对象封装处理结果和跳转视图名称
4)ModelAndView(String viewName)
ModelAndView(String viewName,Model model)
viewName是视图名称,model是处理的结果数据
5)HandlerMapping组件,映射请求URL和请求处理器Controller组件对应关系
6)SimpleUrlHandlerMapping维护一个个HTTP请求和Controller映射关系列表(Map),根据列表对应关系调用Controller
7)ViewResovler组件,对ModelAndView对象封装的视图名称进行解析
8)InternalResourceViewResolver,它支持对Servlet和JSP及子类JstlView支持
3、基于注解配置的MVC应用
1)Controller注解应用
推荐使用@Controller注解声明Controller组件,可以使得控制器定义更加灵活,可以不用实现Controller接口,请求处理方法也可以灵活定义
为了使@Controller注解生效,需要在Spring的XML配置文件中开启组件扫描定义
<context:component-scan base-package=""/>
2)RequestMapping注解应用
@RequestMapping注解可以用在类定义前和方法定义上,表明此组件类的方法与哪一个请求对应
为了使@RequestMapping注解生效,需要在Spring的XML配置文件中开启MVC注解扫描
<mvc:annotation-driven/>
4、接受请求参数
Spring MVC请求提交数据到控制器有以下方式
1)使用HttpServletRequest获取
Spring自动将参数注入到HttpServletRequest
优点直接,缺点需要自己处理数据类型的转换
2)使用@RequestParam注解
Spring会自动将参数注入到方法参数(名称一致)
使用@RequestParam注解映射不一致的名称
优点参数类型自动转换,但可能出现类型转换异常
3)使用自动封装成Bean对象
定义实例类,属性名必须与请求参数名相同
5、向页面传值
当Controller组件处理后,需要向JSP传值的方法
1)直接使用HttpServletRequest或HttpSession
2)使用ModelAndView对象
3)使用ModelMap参数对象
在Controller处理方法中追加一个ModelMap类型的参数
注意:数据会利用HttpServletRequest的attribute传递到页面
6、重定向
Spring MVC默认采用转发方式定位视图,如果需要重定向,可以采用以下方式:
1)使用RedirectView
2)使用redirect:前缀
如果Controller的请求处理方法返回的是ModelAndView对象,可以使用RedirectView方式重定向
示例代码:
public ModelAndView checkLogin(){
RedirectView view=new RedirectView(重定向URL);
retrun new ModelAndView(view);
}
如果Controller的请求处理方法返回的是String类型,可以使用"redirect:前缀"方式重定向
示例代码:
public String checkLogin(){
return "redirect:重定向URL";
}