文章目录
概述
SpringMVC是一种基于 Java的实现MVC设计模型的请求驱动类型的轻量级Web框架,属于SpringFrameWork的后续产品,已经融给在Spring Web Flow中。
简单来说,就是基于Java抽取思想,实现的一个框架。在Web应用中,有很多经常重复的操作,比如接收请求,包装参数…而MVC将这些重复的代码部分抽取然后包装起来,形成框架。我们只需要编写web层中特有的那部分代码,就可。
MVC中控制这些共有操作的那一部分叫做前端控制器。而我们编写的那部分叫做POJO,也叫后端控制器
我们只需将POJO那一部分编写为简单的JavaBean就行,不必是servlet,因为servlet部分操作由MVC帮我们完成
简单的编写流程
①导入SpringMVC相关坐标(即导入jar包)
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.0.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.0.5.RELEASE</version>
</dependency>
<!-- web配置-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.0.5.RELEASE</version>
</dependency>
<!-- MVC配置-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.0.5.RELEASE</version>
</dependency>
<!-- servlet配置-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
</dependency>
<!-- jsp配置-->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.3</version>
</dependency>
这里我用的Maven,导入了几个对应的jar包
②配置SpringMVC核心控制器DispathcerServlet
init-param这个标签得注意一下,这个用来设置配置的servlet的初始化参数,此处设置contextConfigLocation的值为classpath:spring-mvc.xml,即此servlet使用配置路径下的spring-mvc.xml当做配置文件
③创建Controller类和视图页面
对于web层,我们用@Controller来把它放到spring容器中
④使用注解配置Controller类中业务方法的映射地址
⑤配置SpringMVC核心文件spring-mvc.xml
⑥客户端发起请求测试
SpringMVC的执行流程
其实前端控制器就类似于一个中转站,MVC中有很多种组件,MVC通过和这些组件进行交互来实现功能的
步骤概述
-
用户发送请求至前端控制器DispatcherServlet。
-
DispatcherServlet收到请求调用Handlermap处理器映射器。
-
处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
-
DispatcherServlet调用HandlerAdapter处理器适配器。
-
HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。
-
控制器执行完成返回模型和视图。
-
HandlerAdapter将控制器执行结果ModelandView返回给DispatcherServlet。
-
DispatcherServlet将ModelandView传给ViewResover视图解析器。
-
ViewReslover解析后返回具体View
-
DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。DispatcherServlet响应用户。
@RequestMapping
@RequestMapping
作用:用于建立请求URL和处理请求方法之间的对应关系
可作用位置:
类上,请求URL的第一级访问目录。此处不写的话,就相当于应用的根目录
方法上,请求URL的第二 级访问目录,与类上的使用@ReqquestMapping标注的一 级目录一 起组成访问虚拟路径
可指定属性:
value:用于指定请求的URL。它和path属性的作用是一样的
method:用于指定请求的方式
params:用于指定限制请求参数的条件。它支持简单的表达式。要求请求参数的key和value必须和配置的一模一样。
返回视图的一些注意事项
SpringMVC注解扫描的一些解析
<!-- 也可以这么写-->
<context:component-scan base-package="com">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
<!-- 这里表示仅扫描com下的Controller注解-->
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
<!-- 这里表示扫描除指定注解外的其他注解-->
</context:component-scan>
使用Maven的一些注意点
指定JDK使用版本
在idea中,有的时候,一旦更新jar包,Maven就会把我们当前项目设置的jDK版本改为1.5,我们又需要手动在这里去修改为我们对应的版本:
然后可能还要把这里改为对应的版本:
这样比较麻烦。所以建议,我们在pom.xml文件中加上下面的配置,来指定JDK版本
<build>
<plugins>
<!-- 指定jdk -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<skip>true</skip>
<source>JAVA版本号</source>
<target>JAVA版本号</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
把普通JAVA项目改为Web项目
Facets---->Web,这里选择要添加web配置,然后选择要添加到哪个项目上
然后
可以在这里指定我们生成的web文件放在此项目的哪个位置(上面的是指定web.xml文件的路径,下面的指定web包放哪里)
一般放在这里:
java普通项目改为web的项目运行前的必备步骤
- 把我们的web项目这样在这个里面添加一下这样我们才能把我们的项目发布到Tomcat中
- 这里,在最右边选择我们的项目然后右键,选择第一个点击,然后我们的web项目才能正常运行
这一步其实就是为了使我通过Maven导入的jar包生效 - 注意一点,我们配置的web项目是需要导入jar包的,如下: