SpringMVC

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";
}

 

原文地址:https://www.cnblogs.com/xslzwm/p/9603524.html