目前我还是一个大三学生,在接触过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>
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"; } }
<%@ 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省略掉了很多配置文件,而且控制在方法级别更为的灵活