Spring MVC

1.基本概念:

        Spring MVC(Model-View-Controller)是Spring Framework中的一个重要模块,用于构建基于Java的Web应用程序。它是一个强大且灵活的Web框架,遵循经典的MVC设计模式,将Web应用程序分为三个主要组件:模型(Model)、视图(View)和控制器(Controller)。这些组件分别负责不同的功能,有助于分离关注点,提高代码的可维护性和可测试性。

2.核心组件:

        (1).DispatcherServlet

        DispatcherServlet是Spring MVC的前端控制器(Front Controller)。所有的HTTP请求都首先到达DispatcherServlet,它负责协调不同组件的工作。DispatcherServlet的主要职责包括:

  • 接收并拦截所有的请求。
  • 根据请求URL调用HandlerMapping,找到对应的Controller
  • 调用对应的Controller处理请求。
  • Controller返回的ModelAndView对象传递给ViewResolver
  • 使用ViewResolver解析视图(View),并将响应返回给客户端。

        (2).Controller

  Controller是处理用户请求的主要组件。它包含请求处理逻辑、调用服务层(Service Layer),并返回ModelAndView对象。Controller通过注解(如@Controller@RequestMapping)来定义和映射请求路径。

  • @Controller:将类标记为Spring MVC的控制器。
  • @RequestMapping:用于映射URL到特定的类或方法。

        示例:

        

@Controller
@RequestMapping("/example")
public class ExampleController {

    @RequestMapping("/greeting")
    public ModelAndView greeting() {
        ModelAndView modelAndView = new ModelAndView("greeting");
        modelAndView.addObject("message", "Hello, World!");
        return modelAndView;
    }
}

        (3).Model

        Model负责在视图与控制器之间传递数据。它通常是一个包含应用程序数据的对象,可以在控制器中创建并传递给视图进行渲染。Model通常通过ModelAndView对象或@ModelAttribute注解来使用。

        (4).View

   View是用户界面的表现层,负责显示Model中的数据。Spring MVC支持多种视图技术,如JSP、Thymeleaf、FreeMarker、Velocity等。视图是通过ViewResolver来解析和渲染的。

        (5).HandlerMapping

   HandlerMapping是一个接口,用于根据请求的URL找到适当的控制器。Spring MVC提供了多种HandlerMapping实现,如RequestMappingHandlerMappingSimpleUrlHandlerMapping等。HandlerMapping的配置可以基于注解或XML文件。

        (6).ExceptionResolver

   ExceptionResolver用于处理控制器抛出的异常并返回合适的视图。常见的实现类是SimpleMappingExceptionResolver,可以将异常类型映射到特定的视图。

3.工作流程:

        (1).客户端请求:用户在浏览器中输入URL或单击链接,发起HTTP请求。

        (2).请求拦截:请求被前端控制器DispatcherServlet拦截,DispatcherServlet是Spring MVC的核心,它是一个Servlet,负责处理所有传入的请求。

        (3).处理器映射DispatcherServlet查询一个或多个HandlerMapping,根据请求URL找到对应的Controller

        (4).调用处理器:找到的Controller被调用,并执行对应的请求处理方法。该方法处理业务逻辑,可能涉及调用服务层和数据访问层,并将结果封装到一个ModelAndView对象中。

        (5).选择视图解析器:DispatcherServlet会查询一个或多个ViewResolver,根据ModelAndView对象中的视图名称找到对应的视图对象。

        (6).渲染视图ViewResolver返回视图对象(如JSP文件),视图使用模型数据(Model)来渲染最终的HTML页面。

        (7)返回响应:DispatcherServlet将渲染后的视图返回给客户端,用户在浏览器中看到最终的结果。

4.重要注解:

        Spring MVC使用注解驱动的编程模型,常见注解包括:

  • @Controller:定义一个类作为控制器。
  • @RequestMapping:映射请求URL到控制器类或方法。
  • @RequestParam:将请求参数绑定到控制器方法的参数上。
  • @PathVariable:将URL中的占位符绑定到控制器方法的参数上。
  • @ModelAttribute:将方法返回值或方法参数绑定到模型属性上。
  • @ResponseBody:将控制器方法的返回值转换为HTTP响应体内容(通常用于RESTful API)。
  • @ExceptionHandler:定义一个方法来处理控制器内的异常。

5.配置方式

        Spring MVC的配置方式多种多样,主要包括基于XML的配置和基于Java的配置(Java Config)。       

        (1).基于xml的配置方式

        在WEB-INF目录下的web.xml文件中配置DispatcherServlet

<servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

        然后在Spring的配置文件(如dispatcher-servlet.xml)中配置组件

<context:component-scan base-package="com.example.controller" />
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/views/" />
    <property name="suffix" value=".jsp" />
</bean>

        (2).基于Java的配置

        使用Java类进行配置,可以通过@Configuration@EnableWebMvc等注解来配置Spring MVC:

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.example.controller")
public class WebConfig implements WebMvcConfigurer {

    @Bean
    public InternalResourceViewResolver viewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/views/");
        resolver.setSuffix(".jsp");
        return resolver;
    }
}

5.优点:

  • 分离关注点(Separation of Concerns):通过MVC模式将数据处理、逻辑处理和视图处理分离,提高代码的可维护性和可读性。
  • 灵活性:支持多种视图技术和配置方式(XML、Java Config)。
  • 可扩展性:提供多种扩展点(如HandlerInterceptorExceptionResolver)以满足各种需求。
  • 强大的社区支持:Spring社区庞大,文档丰富,支持不断更新和扩展

6.总结:

        Spring MVC是企业级Java Web开发的一个强大框架,它不仅提供了灵活的配置和易于扩展的特性,还能够很好地集成Spring生态系统中的其他模块(如Spring Security、Spring Data等),使得开发过程更加高效和便捷。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值