携手创作,共同成长!这是我参与「掘金日新计划 · 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项目并补齐目录结构
配置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>