一、SpringMVC 概述
• Spring为展现层提供的基于MVC设计理念的优秀的Web框架,是目前最主流的MVC框架之一
• Spring3.0 后全面超越 Struts2,成为最优秀的 MVC 框架
• Spring MVC 通过一套 MVC 注解,让 POJO 成为处理请求的控制器,而无须实现任何接口。
• 支持 REST 风格的 URL 请求
• 采用了松散耦合可插拔组件结构,比其他 MVC 框架更具扩展性和灵活性
二、搭建SpringMVC的第一个helloWord入门程序
1. 新建一个名称为SpringMVC的web项目,项目结构如下:
2.在pom.xml里面引入Spring相关的依赖
1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 2 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 3 <modelVersion>4.0.0</modelVersion> 4 <groupId>com.study</groupId> 5 <artifactId>SpringMVC</artifactId> 6 <packaging>war</packaging> 7 <version>0.0.1-SNAPSHOT</version> 8 <name>SpringMVC Maven Webapp</name> 9 <url>http://maven.apache.org</url> 10 <dependencies> 11 <!-- 添加Spring相关的依赖 begin--> 12 <dependency> 13 <groupId>org.springframework</groupId> 14 <artifactId>spring-aop</artifactId> 15 <version>4.3.12.RELEASE</version> 16 </dependency> 17 18 <dependency> 19 <groupId>org.springframework</groupId> 20 <artifactId>spring-beans</artifactId> 21 <version>4.3.12.RELEASE</version> 22 </dependency> 23 24 <dependency> 25 <groupId>org.springframework</groupId> 26 <artifactId>spring-context</artifactId> 27 <version>4.3.12.RELEASE</version> 28 </dependency> 29 30 <dependency> 31 <groupId>org.springframework</groupId> 32 <artifactId>spring-core</artifactId> 33 <version>4.3.12.RELEASE</version> 34 </dependency> 35 36 <dependency> 37 <groupId>org.springframework</groupId> 38 <artifactId>spring-expression</artifactId> 39 <version>4.3.12.RELEASE</version> 40 </dependency> 41 42 <dependency> 43 <groupId>org.springframework</groupId> 44 <artifactId>spring-web</artifactId> 45 <version>4.3.12.RELEASE</version> 46 </dependency> 47 48 <dependency> 49 <groupId>org.springframework</groupId> 50 <artifactId>spring-webmvc</artifactId> 51 <version>4.3.12.RELEASE</version> 52 </dependency> 53 54 <dependency> 55 <groupId>commons-logging</groupId> 56 <artifactId>commons-logging</artifactId> 57 <version>1.1.3</version> 58 </dependency> 59 <!-- 添加Spring相关的依赖 end--> 60 61 </dependencies> 62 <build> 63 <finalName>SpringMVC</finalName> 64 </build> 65 </project>
3.配置web.xml
1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xmlns="http://java.sun.com/xml/ns/javaee" 4 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 5 id="WebApp_ID" version="2.5"> 6 7 <!-- 配置 DispatcherServlet --> 8 <servlet> 9 <servlet-name>dispatcherServlet</servlet-name> 10 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 11 <!-- 配置 DispatcherServlet 的一个初始化参数: 配置 SpringMVC 配置文件的位置和名称 --> 12 <!-- 13 实际上也可以不通过 contextConfigLocation 来配置 SpringMVC 的配置文件, 而使用默认的. 14 默认的配置文件为: /WEB-INF/<servlet-name>-servlet.xml 15 --> 16 <init-param> 17 <param-name>contextConfigLocation</param-name> 18 <param-value>classpath:springmvc.xml</param-value> 19 </init-param> 20 <!-- 加载时创建 --> 21 <load-on-startup>1</load-on-startup> 22 </servlet> 23 24 <!-- dispatcherServlet可以应答所有请求 --> 25 <servlet-mapping> 26 <servlet-name>dispatcherServlet</servlet-name> 27 <url-pattern>/</url-pattern> 28 </servlet-mapping> 29 30 </web-app>
4. 在src/main/resources目录下新建springmvc.xml并配置
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xmlns:context="http://www.springframework.org/schema/context" 5 xmlns:mvc="http://www.springframework.org/schema/mvc" 6 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 7 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd 8 http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd"> 9 10 <!-- 配置自动扫描的包 配置以后才能使用Spring的注解--> 11 <context:component-scan base-package="com.study.springmvc"></context:component-scan> 12 13 <!-- 配置视图解析器: 如何把 handler 方法返回值解析为实际的物理视图 --> 14 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 15 <property name="prefix" value="/WEB-INF/views/"></property> 16 <property name="suffix" value=".jsp"></property> 17 </bean> 18 19 20 </beans>
5. 在src/main/java目录下新建一个com.study.springmvc.handlers包,创建请求处理器类HelloWorld.java
1 package com.study.springmvc.handlers; 2 3 import org.springframework.stereotype.Controller; 4 import org.springframework.web.bind.annotation.RequestMapping; 5 6 @Controller 7 public class HelloWorld { 8 9 /** 10 * 1. 使用 @RequestMapping 注解来映射请求的 URL 11 * 2. 返回值会通过视图解析器解析为实际的物理视图, 对于 InternalResourceViewResolver 视图解析器, 会做如下的解析: 12 * 通过 prefix + returnVal + 后缀 这样的方式得到实际的物理视图, 然会做转发操作 13 * 14 * /WEB-INF/views/success.jsp 15 * 16 * @return 17 */ 18 @RequestMapping("/helloworld") 19 public String hello(){ 20 System.out.println("hello world"); 21 return "success"; 22 } 23 24 }
6. 在index.jsp里面配置超链接请求
1 <html> 2 <body> 3 <!-- href="helloworld"和HelloWorld.java的@RequestMapping("/helloworld")对应 --> 4 <a href="helloworld">Hello World</a> 5 </body> 6 </html>
7. 编写请求成功跳转的/WEB-INF/views/success.jsp,由springmvc.xml配置的视图解析器和HelloWorld.java的hello()方法的返回值决定跳转到哪个jsp
1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 5 <html> 6 <head> 7 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 8 <title>Insert title here</title> 9 </head> 10 <body> 11 12 <h4>Sucess Page</h4> 13 14 </body> 15 </html>
8. 输入地址http://127.0.0.1:8080/SpringMVC/ 进入index.jsp,点击超链接,跳转到success.jsp,到次SpringMVC的第一个程序完成