目前我还是一个大三学生,在接触过Struts2后,觉得其配置繁琐,又在网上搜索了一下MVC框架,便发现了SpringMVC。
一开始接触还有点摸不请头脑,没办法,只有去看官方文档了。
官方文档中的描述非常的零碎,看了好久(因为文档全是英文的,我的英语水平不怎么样),才理出一个Hello Spring MVC.下面贴一下代码,和一个官方介绍图。
见图,如下
MVC视图模型
这个图只要有点框架知识都能懂,就不在解释。
关于jar的支持,请去Spring官网下载最新的jar,把里面的jar包全都加进工程就好了(主要省的麻烦一个个添加jar)
下面开始贴入门代码吧
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<!-- 所有的请求全都被DispatcherServlet拦截,由它分发请求到每个Controller中
-->
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<!--这里很奇怪,当把映射路径写成/*时,无法映射到请求,这算不算BUG??-->
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
SpringMVC框架默认会根据上面的servlet-name在/WEB-INF目录下寻找一个叫[servlet-name]-serlvet.xml的文件【至于如何指定自己命名的XML,会在后续的学习中提到】,如上面的代码,那么,就应该在创建一个叫dispatcherServlet-servlet.xml的文件。文件内容如下,它的主要左右就是去寻找 客户端发出请求Request的Controller
<?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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<!-- 扫描指定包下的class,找到有注解的Controller ,下面的包明使用了通配符,扫描com文件夹和com子文件夹中的class-->
<context:component-scan base-package="com.*" />
<!-- 视图分发器 -->
<!--关于视图分发器,以后再介绍,今天只完成一个Hello Spring -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
<!-- 指定 你的视图在哪个文件夹下面,以便框架自动寻找 -->
<property name="prefix" value="/WEB-INF/jsp/" />
<!-- 指定视图的后缀,如.jsp -->
<property name="suffix" value=".jsp" />
</bean>
</beans>
Controller
package com.test.study;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
//注解,表示这个class是个控制器
@Controller
public class Test001_HelloMVC {
//指明该方法映射的请求路径 是什么
@RequestMapping("/HelloMVC")
public String sayHello(){
//框架根据配置文件 自动寻找一个叫test001的逻辑视图,、
//因为在dispatcherServlet-servlet.xml中配置的视图路径是/WEB-INF/jsp/
//视图后缀为.jsp所以框架将会寻找/WEB-INF/jsp/目录下的test001.jsp返回给客户端显示
return "test001";
}
}
最后的View
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'test001.jsp' starting page</title>
</head>
<body>
Hell Spring MVC!!!!<br>
</body>
</html>
最后部署到Tomcat中,访问 http://localhost:8080/........./HelloMVC 就可以了(中间省略了项目名称)
总结:从以上可以看出,SpringMVC 比Struts2省略掉了很多配置文件,而且控制在方法级别更为的灵活