[email protected] 深入学习之——初探spring mvc

  一、简介

    Spring MVC是Spring框架的最重要的模块之一,它构建于Spring IoC容器之上,大量使用容器的特性简化其配置。MVC模式消除了业务逻辑与UI的耦合。模式负责封装视图展示的应用数据;视图只显示数据,不包含任何业务逻辑;控制器负责接收用户请求并调用后端服务进行业务处理,处理之后,后端服务可能返回某些数据供视图显示。其核心思想是分离业务逻辑与UI,使系统能够独立修改,互不影响。

    Spring MVC应用,模式通常由服务层处理和持续层存储的领域对象组成。视图通常是用Java标准标记库(JSTL)编写的JSP模版,视图也可能定义为PDF文件、Excel文件、REST风格的Web服务以及Flex接口。

  二、框架原理

  Spring MVC 核心组件是一个控制器,通常称为调度Servlet(Dispatcher Servelet),配置在Java Web部署描述符(Web.xml文件)中。实现了JavaEE设计模式之一 (前端控制器Front controller),作为Spring MVC框架的前端控制器,每个Web请求通过它来管理整个请求处理过程。

  MVC处理流程:web请求-->控制器类(对应的处理程序方法)-->后台服务处理请求-->返回视图

  1>控制器类必须以@Controller注解标记,加上注解的控制器不需要实现框架专用的接口或者扩展框架专用的基类。

  2>控制器类的处理方法,必须用@RequestMapping注解修饰。

  3>处理程序方法结束请求处理之后,将控制委派给一个视图,其表现为处理程序方法的返回值。考虑程序的灵活性,处理程序方法返回值不代表视图的具体实现,而是一个逻辑视图,没有文件扩展名。处理程序方法的返回值可以是一个String类型值(代表逻辑视图名称 )或者Void,这种情况下,根据处理程序方法或者控制器名称确定默认逻辑视图名称。当控制器类接收一个视图时,它依靠一个视图解析器将逻辑视图名称解析为具体的视图实现。视图解析器是Web应用上下文中配置的一个实现ViewResolver接口的Bean,它的任务是返回逻辑视图名称的具体视图实现(HTML、JSP、PDF或其他实现).

  三、配置使用Spring @MVC

  1>在web.xml文件中定义DispatcherServlet实例;

    <servlet>

      <servlet-name>demo</servlet-name>

      <servlet-class>

        org.springframework.web.servlet.DispatcherServlet

      </servlet-class>

      <load-on-startup>1</load-on-startup>

    </servlet>

    <servlet-mapping>

      <servlet-name>demo</servlet-name>

      <url-pattern>/</url-pattern>

    </servlet-mapping>

  类型为DispatcherServlet的servlet接收web请求并为它们分配相关处理程序的核心servlet类,URL模式可以设置为更细粒度的模式,在较大应用中,为各种servlet分配不同的模式更有意义。另一方面,DispatcherServlet决定加载哪个Spring MVC配置文件,默认查找文件名为servlet名称加上-servlet.xml的文件,即demo-servlet.xml,可通过Servlet参数contextConfigLocation明确加载的配置文件。建议为每一层组件声明一个bean配置文件。

  2>加载其他配置文件

  在web.xml中定义servlet监听器ContextLoaderListener,默认加载配置文件/WEB-INF/applicationContext.xml,通过设置参数contextConfigLocation,指定要加载的其他配置文件。

    <context-param>

      <param-name>contextConfigLocation</param-name>

      <param-value>/WEB-INF/*-service.xml</param-value>

    </context-param>

    <listener>

      <listener-class>

        org.springframework.web.context.ContextLoaderListener

      </listener-class>

    </listener>

  ContextLoaderListener加载指定的bean配置文件到根应用上下文中,而每个DispachterServlet将其配置文件加载到自己的应用上下文,并且引用根应用上下文为其上级。因此,DispatcherServlet实例加载的上下文可以访问甚至覆盖根应用上下文中声明的bean,但DispatcherServlet实例加载的上下文无法互相访问。

  3>激活Spring MVC注解扫描

  在web.xml中添加<context:component-scan>元素启用Spring的组件扫描功能。因为@RequestMapping注解将URL请求映射到控制器类及其对应的处理程序方法,因此需再应用上下文中注册一个DefaultAnnotationHandlerMapping和一个AnnotationMethodHandlerAdapter实例,这些实例分别在类级别和方法级别处理@RequestMapping注解。

    <beans xmlns="http://www.springframework.org/schema/beans"

        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

        xmlns:context="http://www.springframework.org/schema/context"

        xsi:schemaLocation="http://www.springframework.org/schema/beans

          http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

          http://www.springframework.org/schema/context

         http://www.springframework.org/schema/context/spring-context-3.0.xsd">

        

        <context:conponant-scan base-package="组件所在的子包"/>

        <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/>

         <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>

    </beans>

  4>创建Spring MVC控制器

    创建控制器:在定义的任意类前添加@Control注解这个类;

    映射处理方法:类级别或者方法级别

    第一种映射策略是将一个特殊的URL模式映射到一个控制器类:在控制器类前添加@RequestMapping("/URL")

    然后映射特定的HTTP方法到每个处理程序方法:在方法名称前添加@RequestMapping(method=RequestMethod.GET)/(method=RequestMethod.POST)

    第二种映射策略是在方法级别使用@RequestMapping注解,同时声明两个值——URL路由和默认HTTP GET处理程序方法:在方法名称前添加@RequestMapping(vlaue="/URL",method=RequestMethod.GET)。

  5>创建JSP视图

  在Spring MVC应用中,视图常常是JSTL编写的JSP模版。当DispatcherServlet接受到处理程序返回的视图名称,它将逻辑视图名称解析为视图实现以供显示。例如,在demo-servlet.xml中配置InternalResourceViewResolver,将视图名称解析为/WEB-INF/jsp/目录中的JSP文件

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">

      <property name="prefix" vlaue="/WEB-INF/jsp/" />

      <property name="suffix" value=".jsp" />

    </bean>

  至此,Spring MVC基本的一个流程和配置讲解完毕,欢迎大家评论交流!

[email protected] 深入学习之——初探spring mvc

时间: 2024-12-24 09:04:26

[email protected] 深入学习之——初探spring mvc的相关文章

【WEB】初探Spring MVC框架

Spring MVC框架算是当下比较流行的Java开源框架.但实话实说,做了几年WEB项目,完全没有SpringMVC实战经验,乃至在某些交流场合下被同行严重鄙视“奥特曼”了.“心塞”的同时,只好默默的打开IDE从HelloWorld开始. 初步认识 宏观视野决定微观实现的质量,首先对Spring MVC框架组件及其流程做一个简单的认识.以下是从互联网中某Spring MVC教材扣来一张介绍图(懒得重复造轮子了): 从上图可以看出,Spring MVC框架的核心组件有DispatcherServ

【FunnyBear的Java之旅 - Spring篇】7步初探 Spring MVC

本文将介绍如何搭建一个简单的Spring MVC项目,其中包含依赖注入,视图控制,数据库连接,等关键功能. 在开始阅读前,你需要:MySQL Server, Eclipse EE,Maven Eclipse插件,Spring Eclipse插件,基本的Java Core和Servlet知识. 最终的项目结构如下图所示 1. 新建工程. 这里总的思路是,新建一个普通的Dynamic Web Project,然后把它转换成Maven工程,最后添加对Spring Framework的引用. 1.1 "

[技术分享][email&#160;protected] @After @AfterReturning @Around @AfterThrowing spring aop 的advise(通知)

今天在项目中成功实现了spring aop . @Before @After @AfterReturning @Around @AfterThrowing 这五个是实现spring aop常用的五个注解 相关的注解还有@Aspect @Component @PointCut 我在实践中发现: [email protected] @After @AfterReturning @Around 这四个通知只有用一种,如果使用两种及以上会发生一些问题. [email protected]@PointCu

Spring学习笔记之五----Spring MVC

Spring MVC通常的执行流程是:当一个Web请求被发送给Spring MVC Application,Dispatcher Servlet接收到这个请求,通过HandlerMapping找到Controller,将这个请求委派给Controller的某个Handler Method处理,这个Handler Method处理完这个请求,返回一个ModelAndView给Dispatcher Servlet,Dispatcher Servlet利用View Name,请求View Resolv

Spring学习记录(2) Spring MVC+Mybatis 注解配置

所有XML的配置如下: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springfr

Spring Mvc详解

一.spring mvc处理请求的流程. 客户端发出http请求,如果匹配到DispatcherServlet的请求映射路径,则web容器将请求转交给DispatcherServlet处理. DispatcherServlet接受到请求后,根据请求的信息和HandlerMapping的配置,找到处理请求的处理器(Handler).HandlerMapping类是路由控制器. 得到相对应的Handler后,通过HandlerAdapter对Handler进行封装,再以统一的适配器接口调用Handl

利用maven构建一个spring mvc的helloworld实例

刚开始学习maven和spring mvc,学的云里雾里的 这里提供一个hello world实例,记录自己的学习之路 首先看maven官网的介绍 Apache Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project's build, reporting and do

第一个Spring MVC程序

最近公司项目要开始使用Spring MVC替代Struts2了,就学习了一下Spring MVC的使用.这是第一个Spring mvc程序,分别使用xml和注解两种方式. 一.使用xml格式进行构建 1.使用SpringMVC,首选需要在web.xml中配置拦截器和过滤器 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XM

Spring MVC框架搭建

Spring MVC篇一.搭建Spring MVC框架 本项目旨在搭建一个简单的Spring MVC框架,了解Spring MVC的基础配置等内容. 一.项目结构 本项目使用idea intellij创建,配合maven管理.整体的目录结构如图: 其中java文件夹是sources文件夹,resources是资源文件夹.spring文件夹里是Spring上下文配置和Spring MVC配置文件. 需要注意的是,项目自动生成以后会有两个web文件目录,一个是web文件夹(我这里已经删除了),另一个