`

Spring MVC 基本使用

 
阅读更多

springMVC是一个MVC框架,他控制着请求相应的整个流程,从请求一进入到应用服务器到相应离开,都离不开mvc框架。

 

请求过程

  • DisptacherServlet接收到请求,并读取出请求中的数据
  • DisptacherServlet根据请求中的信息(url),去Handlermapping中查找url对应的资源(如果没有则报404)
  • 如果资源指向一个Controller,则将请求和请求数据发送给Controller
  • Controller处理请求(一般Controller将处理动作交给业务层处理),将处理好的数据和视图名返回给DisptacherServlet
  • DisptacherServlet根据视图名去查找ViewResolver视图解析器,将数据交给对应的视图处理
    视图(jsp,html等等)拿到数据后,渲染

使用一个mvc框架要进行几步配置

  • 初始化DisptacherServlet(配置Handlermapping和Controller的位置)
  • 配置Handlermapping(ServletMapping)
  • 标识Controler,配置Controler要处理的url以及返回的视图名
  • 配置视图解析器

第二步和第三步是在一起的,因为Controler就是Servlet。Handlermapping和Controller的配置在web.xml中就相当于<servlet-mapping><servlet>DisptacherServlet需要从web.xml中拿关于springmvc的配置(servlel,servletmapping),才能调度整个流程。

 

DisptacherServlet

通过注册DispatcherServlet来开启SpringMVC。DisptacherServlet是SpringMVC的调度中心,在这里请求会第一次进入到SpringMVC。
DisptacherServlet配置着SpringMVC运作的信息。

在Servlet3.0之前,在web.xml中配置SpringMVC,然后SpringMVC会根据web.xml中的配置初始化。

 

DisptacherServlet

在servlet3.0之后,出现了ServletContainerInitializer,在项目启动最开始时,会自动扫描实现了ServletContainerInitializer接口的类,对Servlet、Listener、Filter进行动态注册,利用此技术,可以通过实现ServletContainerInitializer来配置DisptacherServlet(注册controller,ViewResolve),达到SpringMVC零配置的效果。

 

ServletContainerInitializer

ServletContainerInitializer的作用和web.xml差不多,都是部署servlet,listener,filter,只是一个是用java代码配置,一个用xml配置。

在实现了ServletContainerInitializer接口的类上要注解上@HandlesTypes(//要动态注册的class,一定要是Servlet或者Listener或者Filter)
ServletContainerInitializer接口中只有一个方法onStart(Set<Class>,ServletContext)。
当应用启动的时候,会调用onStart方法,参数Set<Class>就是@HandlesTypes中的类,意味着这些类可以被动态注册

实现动态注册的核心方法:
addServlet(String name,Servlet servlet)
addFilter(String name,Filter filter)
addListener(Listener listener)
这些都是注册Servlet、listener、filter的方法

 

现在最简单就是继承AbstractAnnotationConfigDispatcherServletInitializer,重写getServletConfigClasses、getServletMappings、getRootConfigClasses来配置DisptacherServlet

 

配置DisptacherServlet

这一步,跟配置web.xml作用差不多,就是要部署注册servlet。
在这里我们采用继承重写AbstractAnnotationConfigDispatcherServletInitializer的方法,来配置DisptacherServlet

public class WebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer{

 // 得到中间层(service、dao、aop、po等)的配置
 // Spring配置,得到bean
 @Override
 protected Class<?>[] getRootConfigClasses() {
   return new Class[]{DAOConf.class,ServiceConf.class,AOPConf.class};
 }

 // 得到controler和ViewResolver的配置
 @Override
 protected Class<?>[] getServletConfigClasses() {
   return new Class[]{SpringMvcConf.class}; 
 }

 // 标识哪些url要经过这个DisptacherServlet处理
 @Override
 protected String[] getServletMappings() {
   return new String[]{"/"};//所有url都被DisptacherServlet处理
 }

}

 

SpringMvc配置

这一步是完成SpringMvcConf.class,这个类配置了一些controller和ViewResolver,相当于对DispatcherServlet进行配置。

@Configuration
@EnableWebMvc
// 扫描控制器
@ComponentScan(includeFilters=@ComponentScan.Filter(type=FilterType.ANNOTATION,
    value=Controller.class))
public class SpringMvcConf extends WebMvcConfigurerAdapter {
 
 // 配置视图解析器
 // html解析
 @Bean
 public ViewResolver htmlResolver(){
   InternalResourceViewResolver viewResolver=new InternalResourceViewResolver();
   viewResolver.setPrefix("/WEB-INF/view/");
   viewResolver.setSuffix(".html");
   return viewResolver;
 }
 // 静态资源处理
 // 当DisptacherServlet接收到了他匹配的请求,但是找不到相应的Controller,
 // 就会把这个请求返回给默认的处理(比如交给tomcat处理)
 @Override
 public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
   configurer.enable();
 }
}

 

这里关键有几步:
@EnableWebMvc,开启springmvc
@ComponentScan开启自动扫包,扫描所有带有@Controller的Bean
添加ViewResolver,这里的配置是使,视图路径为”/WEB-INF/view/”+Controller返回的视图名+”.html”
因为之前配置了所有路径都被DisptacherServlet接收,这会导致一些静态资源找不到controller去处理,结果出现404,configurer.enable()开启了之后,当springmvc不能处理的时候会交回给默认的处理

 

http://blog.zswlib.com/2016/07/15/springmvc%E5%9F%BA%E6%9C%AC%E4%BD%BF%E7%94%A8/

 

分享到:
评论

相关推荐

    Spring MVC jar包

    - **基本概念**:Spring MVC提供了一个灵活的MVC实现,包括请求映射、视图解析、模型绑定等功能。它通过DispatcherServlet作为前端控制器,负责接收请求并分发到相应的处理器。 - **组件**:主要包括Model、View、...

    基本的spring mvc + spring security实现的登录(无数据库)

    在本项目中,我们主要探讨的是如何利用Spring MVC和Spring Security框架构建一个基本的无数据库登录系统。Spring MVC是Spring框架的一部分,用于处理Web应用程序的请求-响应模型,而Spring Security则是一个强大的...

    spring mvc框架依赖全面jar

    这些jar文件共同构成了Spring MVC开发的基本环境,确保了项目可以正确运行并执行各种功能。在实际开发中,通常会使用构建工具(如Maven或Gradle)来自动管理这些依赖,但在某些情况下,手动添加这些jar到项目的lib...

    spring MVC 基本应用

    **Spring MVC 基本应用** Spring MVC 是一个基于 Java 的模型-视图-控制器(MVC)架构,用于构建可维护性和可测试性的 web 应用程序。它作为 Spring 框架的一部分,提供了丰富的功能,使得开发人员能够轻松地处理 ...

    spring-MVC.zip_Java spring mvc_spring mvc_spring mvc

    Spring MVC 是一款基于Java的轻量级Web应用框架,它是Spring框架的重要组成部分,主要用于构建Web应用...通过阅读和实践这份教程,你可以掌握Spring MVC的基本使用,为进一步深入学习和应用Spring框架打下坚实基础。

    spring MVC简单示例

    在本示例中,我们将深入探讨Spring MVC的基本概念、配置以及如何创建一个简单的应用程序。 1. **Spring MVC 概述** Spring MVC 是 Spring 框架的一部分,它简化了开发和测试Web应用程序的过程。通过分离业务逻辑、...

    Spring MVC框架简介和使用

    为了展示如何使用 Spring MVC 构建一个简单的 Web 应用,我们可以通过实现一个基本的 HelloWorld 示例来快速入门。 #### 步骤: 1. **添加必要的 JAR 包**:首先,需要在项目中添加 Spring MVC 及其依赖库。这些库...

    Spring MVC基本概念

    ### Spring MVC基本概念 在Java Web开发领域,Spring MVC框架是一种非常流行的模型-视图-控制器(Model-View-Controller,MVC)架构实现。它主要用于构建清晰、可维护的Web应用程序。对于初学者而言,了解Spring ...

    Spring MVC 简单Demo

    这个"Spring MVC 简单Demo"旨在帮助初学者理解如何设置和运行一个基本的Spring MVC项目。下面,我们将深入探讨Spring MVC的核心概念、工作原理以及如何创建一个简单的示例。 1. **Spring MVC 概述** Spring MVC是...

    Spring MVC 4.2.4.RELEASE 中文文档

    尽管如此,这份中文文档可以帮助开发者理解Spring MVC的基本概念和使用方法,以便于快速上手和解决问题。由于官方文档无法访问,这份文档成为了临时的学习资源,虽然不够最新,但对于理解4.2.4版本的功能是足够了。...

    spring mvc restful service

    以上就是关于使用Spring MVC创建RESTful服务的基本介绍。这个名为"springrest"的压缩包很可能包含了整个项目的源代码、配置文件和其他资源,你可以直接解压运行,学习其中的实现细节。通过这种方式,你可以更好地...

    Spring MVC Cookbook(PACKT,2016).pdf

    1. **Spring MVC基本概念**:首先,了解Spring MVC的基本架构,包括DispatcherServlet、Controller、Model、View和ViewResolver等组件的角色和交互方式。 2. **配置Spring MVC**:学习如何通过XML或Java配置来设置...

    spring MVC_快速入门

    在快速入门的过程中,了解其核心概念和基本使用方法是至关重要的。 1. **Spring MVC架构** Spring MVC通过分离关注点,将业务逻辑、数据处理和用户界面解耦。Controller接收HTTP请求,调用Service层处理业务,...

    Spring mvc5.0.3 所有jar包

    11. **MVC配置**: 使用Java配置或XML配置来设置Spring MVC的行为。Spring Boot简化了这个过程,通过自动配置来减少配置文件的复杂性。 12. **WebSocket支持**: Spring MVC 5.0.3版本引入了对WebSocket的支持,可以...

    Spring MVC 基础实例源码01

    这个"Spring MVC 基础实例源码01"的资源很可能是为了帮助初学者理解Spring MVC的核心概念和基本用法。下面我们将详细探讨Spring MVC的一些关键知识点。 1. **MVC模式**:MVC(Model-View-Controller)是一种设计...

    spring mvc集成webservice

    Spring MVC 是一个强大的Java Web开发框架,用于构建可维护、...通过理解Spring MVC的MVC模式,掌握Web服务的基本原理,以及学习如何在Spring环境中配置和调用Web服务,开发者可以构建更加灵活和可扩展的Web应用程序。

    最简单的用户登录与注册系统 spring mvc spring jdbc

    Spring MVC是Spring框架的一个模块,主要用于构建Web应用程序,而Spring JDBC则是Spring提供的用于简化数据库操作的工具。 【描述】"用spring4.0.5版本开发的,spring mvc,spring jdbc,最简单的用户登录,注册和...

    Spring MVC简单例子

    1. **Spring MVC 架构**:了解Spring MVC的基本组成部分,包括DispatcherServlet、Controllers、Models、Views以及Handlers。DispatcherServlet作为前端控制器,负责接收请求并分发给相应的处理器。 2. **...

    Spring Mvc——基本使用

    在本文中,我们将深入探讨 Spring MVC 的基本使用,包括它的架构、配置、控制器、模型视图解析以及数据绑定等关键概念。 ### 1. Spring MVC 架构 Spring MVC 的核心架构基于前端控制器(DispatcherServlet),它...

Global site tag (gtag.js) - Google Analytics