SpringMVC概念原理

105 阅读3分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第15天,点击查看活动详情

哈喽,大家好!我是Why,一名在读学生,目前刚刚开始进入自己的编程学习生涯。虽然学习起步较晚,但我坚信做了才有0或1的可能。学了一段时间以后也是选择在掘金上分享自己的日常笔记,也希望能够在众多道友的大家庭中打成一片。 本文主要讲解SpringMVC概念原理,如果大家读后觉得有用的话,还请大家多多支持博主:欢迎 ❤️点赞👍、收藏⭐、留言💬 ✨✨✨个人主页:JinHuan

SpringMVC

SpringMVC概念

springMVC也叫作Spring web MVC,是SPring3.0后发布,SpringMVC框架解决了WEB开发中常见的问题(参数接收,文件上传,表单验证等等),而且使用简单,与Spring无缝集成。支持RESTful风格的URL请求。采用了松散耦合可插拔组件结构,比其他MVC框架更具扩展性和灵活性。

SpringMVC原理

在没有使用SpringMVC之前我们都是用Servlet来进行Web开发。但是使用Servlet开发在接收请求参数,数据共享。页面跳转等操作相对复杂。Servlet是java进行Web开发的标准,SpringMVC的底层就是Servlet,SpringMVC是对Servlet进行深层次的封装。

SpringMVC优势

1、基于MVC框架,功能分工明确。解决页面代码和后台代码的分离。 2、简单易用。SPringMVC是轻量级的,jar很小。不依赖特定的接口和类就可以开发一个注解的SpringMVC项目 3、作为Spring的一部分,能够使用Spring的Ioc和AOP。方便整合MyBatis,Hibernate,JPA等其他框架 4、SpringMVC的注解强大易用

MVC模式

模型1:jsp+javabean模型---在jsp页面中嵌入大量的java代码 模型2:jsp+servlet+javabean模型---jsp页面将请求发送给servlet,由servlet调用javabean,再由servlet将制定jsp页面响应给用户。

模型2一般就是现在的MVC模式,也是我们一直使用的。 Model-View-Controller:模型--视图--控制器 Model: 模型层 javaBean 负责数据访问和业务处理 dao service pojo View: 视图 JSP技术 负责收集和展示数据 Controller: 控制器 servlet技术 中间调度 控制器的工作: 1、接受客户端的请求(包括请求中携带的数据) 2、处理请求:调用后台的模型层中的业务逻辑 3、页面导航:处理完毕给出响应:JSP页面

入门程序

创建maven项目并补齐目录结构

image-20220714110136306

配置pom文件添加依赖和插件

 <!--Web 项目 改成war包-->
 <packaging>war</packaging>
 ​
 <!--添加依赖-->
 <dependencies>
     <!--SpringMVC依赖-->
     <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-webmvc</artifactId>
         <version>5.2.13.RELEASE</version>
     </dependency>
     <!--由于SpringMVC底层还是Servlet,所以要添加Servlet依赖
         由于tomcat自身带有servlet。所以要注意插件的运行范围
     -->
     <dependency>
         <groupId>javax.servlet</groupId>
         <artifactId>javax.servlet-api</artifactId>
         <version>4.0.1</version>
         <scope>provided</scope>
     </dependency>
 </dependencies>
 ​
 <!--配置插件-->
 <build>
     <plugins>
         <!--编码和编译以及JDK版本-->
         <plugin>
             <groupId>org.apache.maven.plugins</groupId>
             <artifactId>maven-compiler-plugin</artifactId>
             <version>3.8.0</version>
             <configuration>
                 <target>1.8</target>
                 <source>1.8</source>
             </configuration>
         </plugin>
         <!--配置tomcat插件-->
         <plugin>
             <groupId>org.apache.tomcat.maven</groupId>
             <artifactId>tomcat7-maven-plugin</artifactId>
             <version>2.2</version>
             <configuration>
                 <path>/</path>
                 <port>8080</port>
             </configuration>
         </plugin>
     </plugins>
 </build>

创建Spring和SpringMVC的配置文件

我们一般将除了controller以外的bean注册到Spring容器中,而将Controller注册到SpringMVC容器中。所以在Maven项目的resources目录下添加application.xml作为Spring的配置文件。添加springmvc.xml作为SpringMVC的配置文件。

创建Spring的配置文件application.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"
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
 ​
     <!--Spring的配置文件: 除了控制器的之外的bean对象都在这里扫描-->
     <context:component-scan base-package="com.jinhuan.dao,com.jinhuan.service"/>
     
 </beans>
创建SpringMVC的配置文件springmvc.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.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
 ​
     <!-- springMVC控制器的bean对象在这里扫描-->
     <context:component-scan base-package="com.jinhuan.controller"/>
 </beans>
在web.xml中进行Spring和SpringMVC的配置
 <!--配置spring-->
 <context-param>
     <!--上下文配置
     不用newcontext上下文对象   contextConfigLocation:表示用于加载Bean的配置文件
     -->
     <param-name>contextConfigLocation</param-name>
     <!--
         指定spring配置文件的位置
             这个配置文件也有一些默认的规则,它的配置文件名默认就叫 application.xml
             如果将这个文件放在WEB-INF目录下,那么这里就可以不用指定配置文件的位置
             只需要你指定监听器就可以了
             这里的配置是Spring继承Web环境的通用配置,一般用于加载 除控制器层(controller)以外的Bean
             以便于与其他的Web框架集成
     -->
     <param-value>classpath:applicationContext.xml</param-value>
 </context-param>
 <!--监听器-->
 <listener>
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
 </listener>
 <!--
     配置SpringMVC的核心(中央、前端)控制器
         前端控制器:所有的请求都会经过此控制器,然后通过此控制器分发到各个分控制器
         前端控制器的本质还是一个Servlet,因为SpringMVC底层就是使用Servlet编写的
 -->
 <servlet>
     <servlet-name>dispatcherServlet</servlet-name>
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
     <!--创建前端控制器的时候读取springmvc配置文件启动ioc-->
     <init-param>
         <param-name>contextConfigLocation</param-name>
         <param-value>classpath:springmvc.xml</param-value>
     </init-param>
     <!--tomcat启动就此创建对象-->
     <load-on-startup>1</load-on-startup>
 </servlet>
 <!--配置拦截路径url,所有的以do结尾的的请求都会被该Servlet拦截-->
 <servlet-mapping>
     <servlet-name>dispatcherServlet</servlet-name>
     <url-pattern>/</url-pattern><!-- *.do  *.action ....-->
 </servlet-mapping>