SpringMVC 是Spring框架的拓展,主要用于Spring框架Web工程的开发。以前都是Spring+Struts+Mybatis/Hibernate框架,由于Struts曾出现过2次安全事故,使用SpringMVC代替Struts逐渐面向主流。
1.创建Dynamic Web Project,命名为mvcdemo01,在Web-INF目录下创建文件夹lib,导入所需 Jar包。
2.在JAVAResources/src下创建springmvc.xml配置文件。①:包名需要修改成你需要创建的handler包名。②在第二处红名处的意思是,所有访问的url会自动拼接字符串,prefix是前缀,suffix是后缀,举个例子,解析后的字符串是 http://localhost/WEB-INF/jsp/xxxx.jsp xxxx的前后即拼接的前缀与后缀。而这些都是spring框架自动为我们配置的。
<?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:p="http://www.springframework.org/schema/p"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
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-3.0.xsd">
<!-- 启用spring mvc注解 -->
<context:annotation-config></context:annotation-config>
<!-- 扫描包 -->
<context:component-scan base-package="com.ly.handler"></context:component-scan>
<!-- 对转向页面的路径解析。prefix:前缀, suffix:后缀 如:http://127.0.0.1:8080/springmvc/jsp/****.jsp-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"> </property>
<property name="suffix" value=".jsp"> </property>
</bean>
</beans>
3.在src下创建com.ly.handler包,我们创建一个IndexController的JAVA类。①:当我们在地址栏输入http://localhost/index时,Spring自带的servlet会为我们自动跳转到controller中的有/index注解的方法中,再进行url拼接。(此处返回的是在WEB-INF/jsp下的index.jsp的页面)
package com.ly.handler;
import org.springframework.web.bind.annotation.RequestMapping;
public class IndexController {
@RequestMapping("/index")
public String index(){
return "index";
}
}
4.在WEB-INF下创建jsp文件夹,创建index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
Hello,This is index.jsp
</body>
</html>
5.在WEB-INF下创建web.xml文件①url-pattern标签里面的意思是,在url:http://localhost/之后的所有请求都会被转发到Spring 框架中的DispatcherServlet对象,再由其解析后进行转发。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>mvcdemo01</display-name>
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<!-- contextConfigLocation 是参数名称,该参数的值包含 Spring MVC 的配置文件路径 -->
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
6.我们在地址栏访问http://localhost/mvcdemo01/index,出现下图即配置成功
总结:SpringMVC项目流程:
1.用户在浏览器地址栏输入URL,而这些请求会被统一转发到Spring框架的DispatcherServlet。在解析出index后,在IndexController对象中寻找注解为RequestMapping(“index”)的方法,并等待返回值(返回值是一个字符串,是同名的index),如果没有该方法,那么就会404。
2.DispatcherServlet获得返回值"index"后,进行URL拼接,拼接成http://localhost/mvcdemo01/WEB-INF/jsp/index.jsp(只是在这个地址寻找,并不会修改浏览器地址栏的url)。找到后会返回该页面。