广告
返回顶部
首页 > 资讯 > 后端开发 > Python >如何理解SpringMVC
  • 668
分享到

如何理解SpringMVC

2024-04-02 19:04:59 668人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录一、springMVC简介二、springmvc核心组件2.1、DispatcherServlet2.2、HandlerMapping2.3、HandlerInterceptor

一、SpringMVC简介

MVC是我们开发WEB应用程序的通用架构方式

MVC的核心思想是业务数据抽取和业务数据呈现相分离。

MVC:M(Model)+V(View)+C(Controller)

M(模型层):业务数据的信息表示,通常是业务实体

V(视图层):为用户呈现数据的页面

C(控制层):调用业务逻辑产生合适的数据(Model),同时传递数据(Model)给视图层(View)呈现给用户

MVC:是一种架构模式,将业务逻辑和页面展示分离,使程序分层、分工合作,既相互独立,又协同合作。

二、SpringMVC核心组件

2.1、DispatcherServlet

前端控制器,核心

作用:接收请求,响应结果,相当于转发器,中央处理器,降低了组件之间的耦合性。

用户发送请求交给DispatcherServlet,DispatcherServlet是整个流程控制的中心,由它调用其他组件处理用户请求,分发到具体的对应Controller,从而获取到需要的业务数据Model,Model再通过DispatcherServlet传递给View完成页面呈现;DispatcherServlet的存在降低了组件的之间的耦合性。

2.2、HandlerMapping

处理器映射器

作用:根据请求的URL,找到对应的Handler,帮助DispatcherServlet找到对应的Controller

HandlerMapping负责根据用户请求找到Handler即处理器,SpringMVC提供了多种不同的映射器实现不同的映射方式,例如:配置文件方式,实现接口方式,注解方式等。

2.3、HandlerInterceptor

Handler执行前后拦截器

HandlerInterceptor是个接口,里面包含三个方法:preHandle、postHandle、afterCompletion

分别在Handler执行前、执行中、执行完成后执行的三个方法

2.4、HandlerExecutionChain

HandlerMapping返回给DispatcherServlet的执行链

HandlerMapping返回给DispatcherServlet的不光有Handler,还有HandlerInterceptor

preHandle——>ControllerMethod——>postHandle——>afterCompletion

这个链如何实现的呢?使用了Java的反射机制reflection

2.5、HandlerAdapter

处理器适配器

作用:将各种Controller适配成DispatcherServlet可以使用的Handler,通过特定规则(HandlerAdapter要求的规则)去执行Handler

通过HandlerAdapter对处理器进行执行,这是适配器模式的应用,通过扩展适配器可以对更多类型的处理器进行执行。

2.6、Handler

处理器(需要工程师开发)

注意:编写Handler时需要HandlerAdapter的要求去做,这样HandlerAdapter才可以正确执行Handler

Handler是继DispatcherServlet前端控制器的后台控制器,在DispatcherServlet控制下对用户请求进行处理,Handler涉及业务需求,所以需要工程师针对用户需求进行开发,最终返回业务数据

2.7、ModelAndView

SpringMVC中对Model的一种表示形式

SpringMVC中有Model、Map,但是SpringMVC都会将其转化为ModelAndView,Model、Map都是ModelAndView的具体表现

2.8、ViewResolver

视图解析器

作用:进行视图解析,根据逻辑视图名解析成真正的视图View

ViewResolver负责将处理结果生成View视图,ViewResolver首先根据逻辑视图名解析成具体的页面地址,然后对View进行渲染,将处理结果通过页面展示给用户;SpringMVC提供了很多类型View视图,包括:jstlView、freemarkerView、pdfView、jsp、html等。

2.9、View

视图(需要工程师开发jsp、html)

View是一个接口,实现类支持不同的类型(jsp、html、freemarker、pdf等)

三、配置Maven环境变量

3.1、Maven介绍

pom:pom.xml配置文件,通过配置完成依赖关系

DependencyManagement:通过<dependencies><dependency></dependency></dependencies>节点配置

3.2、Maven下载安装

3.2.1、Maven下载

Http://maven.apache.org/download.cgi

3.2.2、配置环境变量

添加M2_HOME:指向Maven解压后文件夹所在根目录

编辑Path:添加%M2_HOME%\bin;

3.2.3、配置Maven配置文件(本地仓库路径、镜像)

将Maven安装文件夹下conf文件夹中的settings.xml拷贝一份放在电脑home下的.m2文件夹中

对本地home下.m2中的settings.xml进行修改:

(1)可以修改本地仓库的存储位置(可选),默认存储在home下.m2文件夹中:

(2)可以修改中央仓库的访问路径,修改为英文的这个路径,可以加快访问速度,减小中央仓库压力:

3.2.4、用Maven创建项目

(1)首先用Eclipse集成Maven,推荐使用4.3(Kepler)及以上版本Eclipse,因为自己集成了Maven插件m2e

(2)配置Eclipse使用刚刚下载的Maven,以及刚刚配置的settings.xml配置文件:

    在eclipse中选择Window-Preferences,弹出以下窗口,然后点击Installations,在右侧点击Add添加按钮:

找到下载安装的Maven文件夹根目录,点击Finish:

勾选刚刚添加的maven,点击Apply,最后点击OK,配置完成:

(3)创建一个Maven项目:

Eclipse中左侧栏右键,选择New-Project

选择Maven Project,点击Next:

再次Next:

选择一个符合类型的,点击Next:

填写Group Id,Artifacted Id,Version,Package,点击Finish:

(4)修改pom.xml


<!-- 加入变量,替代我们用到的工程版本 -->
 <properties>
 	<commons-lang-version>2.6</commons-lang-version>
 	<slf4j-version>1.7.6</slf4j-version>
 	<spring-version>4.1.3.RELEASE</spring-version>
 </properties>
 
 <!-- 配置依赖管理:让maven帮我们管理传递依赖 -->
 <dependencyManagement>
 	<dependencies>
 		<dependency>
 			<groupId>org.springframework</groupId>
 			<artifactId>spring-framework-bom</artifactId>
 			<version>${spring.version}</version>
 			<scope>import</scope>
 		</dependency>
 	</dependencies>
 </dependencyManagement>
 
 <!-- 配置这个项目所依赖的包 -->
 <dependencies>
   <dependency>
     <groupId>junit</groupId>
     <artifactId>junit</artifactId>
     <version>3.8.1</version>
     <scope>test</scope>
   </dependency>
   
   <dependency>
   	<groupId>org.springframework</groupId>
   	<artifactId>spring-webmvc</artifactId>
   	<version>4.1.3.RELEASE</version>
   </dependency>
   
   <dependency>
   	<groupId>commons-lang</groupId>
   	<artifactId>commons-lang</artifactId>
   	<version>2.6</version>
   </dependency>
   
   <dependency>
   	<groupId>org.slf4j</groupId>
   	<artifactId>slf4j-log4j12</artifactId>
   	<version>1.7.6</version>
   	<exclusions>
   		<exclusion>
   			<groupId>org.slf4j</groupId>
   			<artifactId>slf4j-api</artifactId>
   		</exclusion>
   	</exclusions>
   </dependency>
   
 </dependencies>
 
 <!-- 添加组件:jetty是为了方便测试运行 -->
 <build>
 	<plugins>
 		<plugin>
 			<groupId>org.eclipse.jetty</groupId>
 			<artifactId>jetty-maven-plugin</artifactId>
 			<version>9.2.2.v20140723</version>
 		</plugin>
 	</plugins>
 </build>

如果当前包本地仓库,不存在,可以点击项目,右键,选择Maven-Add Dependency

填写Group Id, Artifacted Id, Version之后,点击OK,Maven就会自动从Maven仓库下载对应版本的jar包到本地仓库中:

(5)配置WEB应用,修改web.xml


<?xml version="1.0" encoding="UTF-8"?>
<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"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    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
    http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
    
    <!-- 激活@Required @Autowired @Resource等标注 -->
    <context:annotation-config/>
    
    <!-- DispatcherServlet上下文,只搜索@Controller标注的类,不搜索其他标注的类 -->
    <context:component-scan base-package="com.ztl.springmvc.controller">
    	<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    </context:component-scan>
    <!-- 让DispatcherServlet启用基于Annotation的HandlerMapping -->
    <mvc:annotation-driven/>
    
    <!-- 将静态文件指定到某个特殊的文件夹中统一处理 -->
    <mvc:resources location="/resources/" mapping="/resources/**"/>
    
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    	<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
    	<property name="prefix" value="/WEB-INF/jsp/"/>
    	<property name="suffix" value=".jsp"/>
    </bean>
    
    <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
    	<property name="exceptionMappings">
    		<props>
    			<prop key="com.ztl.springmvc.UserException">error</prop>
    			<prop key="java.lang.NullPointException">exception</prop>
    		</props>
    	</property>
    </bean>
</beans>

(6)创建一个Controller,以及对应的页面,写个简单demo

写一个HelloMvcController类:


package com.ztl.springmvc.controller;
 
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
 
@Controller
@RequestMapping("/hello")
public class HelloMvcController {
	@RequestMapping("/sayhello")
	public String sayHello(){
		return "home";
	}	
}

通过pom.xml中配置的jetty插件来进行启动测试:

使用cmd命令行,找到项目地址,然后找到当前这个模块项目:

当看见Started Jetty Server时,则代表启动完成了,可以在浏览器访问了

在浏览器地址栏输入http://localhost:8080/hello/sayhello进行访问:

以上就是如何理解SpringMVC的详细内容,更多关于SpringMVC的资料请关注编程网其它相关文章!

--结束END--

本文标题: 如何理解SpringMVC

本文链接: https://www.lsjlt.com/news/129124.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何理解SpringMVC
    目录一、SpringMVC简介二、SpringMVC核心组件2.1、DispatcherServlet2.2、HandlerMapping2.3、HandlerInterceptor...
    99+
    2022-11-12
  • 如何理解Spring AOP原理以及SpringMVC过程
    这篇文章给大家介绍如何理解Spring AOP原理以及SpringMVC过程,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Spring AOP 原理简单说说 AOP 的设计:每个 Bean 都会被 JDK 或者 Cgl...
    99+
    2023-06-17
  • SpringMVC注解之@ResponseBody注解原理
    目录一、介绍二、作用范围三、源码分析四、总结一、介绍 @ResponseBody 注解的作用是将方法的返回值通过适当的转换器转换为指定的格式之后,写入到 response ...
    99+
    2022-11-12
  • SpringMVC源码分析6:SpringMVC的视图解析原理
    转自 SpringMVC视图机制详解[附带源码分析]...
    99+
    2023-06-02
  • Java SpringMVC异步处理详解
    目录1、本篇内容2、看段代码,分析问题3、springmvc 中异步处理4、模拟非超时请求5、模拟超时请求6、总结1、本篇内容 本文让大家掌握 springmvc 中异步处理请求,特...
    99+
    2022-11-12
  • SpringMVC之异常处理解读
    目录背景源码分析DispatcherServletExceptionHandlerExceptionResolverExceptionHandlerMethodResolver自定义...
    99+
    2023-03-21
    SpringMVC异常处理 SpringMVC异常 处理SpringMVC异常
  • 深入理解SpringMVC参数解析器
    这篇文章主要讲解了“深入理解SpringMVC参数解析器”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“深入理解SpringMVC参数解析器”吧!1.参数解析...
    99+
    2022-10-19
  • SpringMVC中RequestParam注解的简单理解
    目录1、前言2、name/value属性3、required属性4、defaultValue属性总结1、前言 作用:主要用于对前端请求的参数进行一些约束,包括参数名不匹配问题、是否必...
    99+
    2022-11-13
  • 详解SpringMVC中的异常处理
    目录1.SpringMVC默认三个异常处理类2.@ExceptionHandler注解异常3.@ResponseStatus注解异常4.DefaultHandlerException...
    99+
    2022-11-11
  • Springmvc ModelAndView原理及用法详解
    Spring MVC是一个基于Java的Web框架,它使用了Model-View-Controller(MVC)的架构模式来开发We...
    99+
    2023-08-17
    Springmvc
  • SpringMVC响应处理详细解读
    目录数据处理及跳转1.结果跳转方式2.ResponseBody响应json数据1、导入关键jar导入依赖2、标签配置不过滤静态资源数据处理及跳转 1.结果跳转方式 ①.ModelAn...
    99+
    2022-11-13
  • SpringMVC注解之@ResponseBody注解原理是什么
    这篇文章主要介绍SpringMVC注解之@ResponseBody注解原理是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、介绍@ResponseBody 注解的作用是将方法的返回值通过适当的转换器转换为指定的...
    99+
    2023-06-15
  • java springmvc乱码解决归纳整理详解
    springmvc的中文乱码问题主要有以下几种情形:页面传值到后台:    工程编码(最后一开始建立工程就设置整个工程的编码)    页面的几种编码属性的设置    get提交方式乱码的处理    post提交方式乱码的处理后台到数据库乱码...
    99+
    2023-05-31
    java springmvc 乱码
  • Java SpringMVC异常处理机制详解
    目录异常处理的思路测试环境准备异常处理两种方式方式一:简单异常处理器方式二:自定义异常处理器总结异常处理的思路 测试环境准备 首先写一个DemoController控制层的类作为测...
    99+
    2022-11-12
  • Java SpringMVC 异常处理SimpleMappingExceptionResolver类详解
    Spring3.0 对异常的处理方式总共有两种: 一种是使用 HandlerExceptionResolver 接口,并且 Spring 已经提供默认的实现类 Simple...
    99+
    2022-11-12
  • @RequestParam注解如何在SpringMVC中使用
    这期内容当中小编将会给大家带来有关@RequestParam注解如何在SpringMVC中使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。自SpringMVC4.2之后,RequestParam内部有4...
    99+
    2023-05-31
    springmvc @requestparam ue
  • 分析讲解SpringMVC注解配置如何实现
    目录简介注解类代替web.xml注解类代替Spring-mvc.xml简介 使用配置类和注解代替web.xml和SpringMVC配置文件的功能 在Servlet3.0环境中,容器会...
    99+
    2022-11-13
  • 深入理解SpringMVC中央调度器DispatcherServlet
    目录SpringMVC请求处理过程:SrpingMVC容器和spring IOC容器关系基于maven创建的一个springmvc工程。1.创建maven项目中使用到了自动创建骨架2...
    99+
    2022-11-13
  • SpringMVC项目异常处理机制详解
    目录1、异常分类2、自定义项目业务异常3、自定义项目系统异常4、其他异常5、异常代码6、异常处理器7、异常发生1、异常分类 通常分为三类:系统异常(SystemException),...
    99+
    2022-11-13
  • 详解SpringMVC中的异常处理机制
    目录开头1.ExceptionHandlerExceptionResolver2. demo开头 试想一下我们一般怎么统一处理异常呢,答:切面。但抛开切面不讲,如果对每一个contr...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作