表现层框架 是Spring框架的一部分,Spring 3.0版本发布之后发布的,可以与Spring框架无缝集成,提供了很多的类和方法。
第一个SpringMVC项目
step 1: 新建一个maven项目 --> ✔ Create a single project --> Group id 有公司的写公司域名 eg com.alibaba -->Artifact id 写项目名 --> finish
step 2: 解决报错:新建一个Dynamic Web Project --> ✔generate web.xml -->将WEB-INF 及其下的web.xml 一并拷到 src/main/webapp下
step 3:使用maven导入spring-webmvc相关的包 在pom.xml配置如下信息:
<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.0.4.RELEASE</version> </dependency> </dependencies>
step 4:指定JDK 版本 在pom.xml配置如下信息:
<build> <finalName>”你的项目名“</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins> </build>
然后检查 Java Resources/Libraries/JRE System Library 是否显示[JavaSE -1.8] 是的话 则配置生效 不是的话 则Update Maven Project 后继续查看JDK版本 版本改完后 下边Maven Dependencies 下会出现相关jar包
step 5:在 web.xml 中配置一个 servlet 如下:
<!-- 注册Spring MVC的中央控制器 --> <servlet> <servlet-name>springMVC</servlet-name> <!-- spring MVC最核心的中央控制器 --> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>springMVC</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping>
长按 Ctrl 将光标移至<servlet-class>上 出现超链接 可查看源码 说明配置正确
url-pattern 配置成*.do:不成文的框架规范 还可配成 *.action 或者 / --可能会有问题(静态资源也会被拦截到)
DispatcherServlet回去配置文件xx.xml中去读取<bean>标签内容 把id对应请求 交给class对应Dispatcher去处理
step 6: 在Java Resources /src/main/resoures下面创建spingmvc配置文件 xxx.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:p="http://www.springframework.org/schema/p" 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/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<bean id="/hello.do" class="com.xxx.controller.HelloSpringMVC"/>
</beans>
step 7:在web.xml 中在servelt标签里 告诉springmvc 它的配置文件是什么 :
<init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc.xml</param-value> </init-param>
param-name 固定写法 因为 DispatcherServlet继承了FrameworkServlet,FrameworkServlet有一成员变量名字就是contextConfigLocation
param-value指定配置文件路径
step 8 :在Java Resources /src/main/java 下创建一个Controller 类实现接口 Controller-org.springframework.web.servlet.mvc
创建ModelAndView 对象--> 调用其addObject()方法-->调用其setViewName()方法 ( 指定跳转路径)
step 9 :在springmvc的配置文件xxx.xml 中添加如下代码:
<bean id="/hello.do" class="com.xxx.controller.HelloSpringMVC"/>
id-->指定对应请求
step 10:在src/main/webapp/WEB-INF下创建jsp文件夹,在其下创建jsp文件
然后就可以部署运行第一个Spring MVC项目了!
note:在有多个servlet的配置文件中,无法控制中央控制器DispatcherServlet的加载顺序,在使用springmvc时就可能出现问题,为了保证其最先加载需要在web.xml的servlet标签添加:
<!-- 保证中央控制器被加载的级别是最高的 --> <load-on-startup>1</load-on-startup>
为了避免多个Controller配置问题 可以使用视图解析器来解决 在xxx.xml中添加如下代码:
<!-- 视图解析器 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/" /> <property name="suffix" value=".jsp" /> </bean>
程序执行流程:
用户发送浏览器请求-->浏览器根据请求url 读取web.xml配置文件找到对应DispactherServlet-->DispactherServle去xxx.xml中找到与其对应的Controller-->Controller对其进行处理:调用handleRequest方法,方法返回结果会返回给DispactherServle-->DispactherServle拿到跳转到的jsp-->DispactherServle根据视图解析器拿到路径名及后缀名-并将其返回给浏览器