其实之前刚刚学习框架的时候就已经听说过SpringMVC了,那个时候还不知道SpringMVC是干嘛的,感觉作用应该类似于Spring啥的,然后工作当中也很少用到SpringMVC,当然,工作经验本身就蛮少,也就没怎么去了解SpringMVC了,这几天突然想了解一下SpringMVC,然后就是各种度娘了,貌似学习所有的框架技术基本上都是先从一个简单的demo示例开始,例如hello world,像之前了解过的SSH框架,SSI框架、jFinal框架等等,,至少我是这样的,先把一个简单的Demo框架搭建起来,让她能够正常运行起来,然后再想着去加点东西啥的。。好了,不废话了。
Spring MVC请求处理的整体流程如图:
这里的示例用的
spring的jar包版本是3.2.0,
jdk版本是1.6
工程结构图:
1、在elcipse中新建一个Dynamic Web Project工程项目,之后把需要的jar包拷贝到项目的/WEB-INF目录下的lib目录中,然后进行build path,至于需要哪些jar包,之前用过spring的应该知道使用spring的时候需要导入哪些jar包,而springMVC和Spring的jar包是共用的,直接将spring所需要的jar包导入即可,不需要再导入额外的jar包文件,可以直接从官网下载,然后那些doc和source的jar包可要可不要,建议不要。。
所需的jar包截图:
其中红线框起来的部分是搭建这个springmvc的主要jar包,其余三个是辅助的,用作其他用的。。这个简单示例中可以不需要。
2、因为SpringMVC是围绕DispatcherServlet来的,所以这里需要修改一下web.xml文件的配置:
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.5"
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_2_5.xsd">
<display-name>springmvc_demo_02</display-name>
<servlet>
<servlet-name>SpringMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 可以自定义servlet.xml配置文件的位置和名称,默认为WEB-INF目录下,名称为-->
<!--[<servlet-name>]-servlet.xml,如SpringMVC-servlet.xml -->
<!-- <init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/SpringMVC-servlet.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>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
注意:这个地方的servlet-name需要我们注意一下,因为等下我们还需要springMVC的另一个配置文件,这个文件的命名通常情况下都会以[servlet-name]-servlet.xml进行命名,主要用于springMVC的一些相关配置啥的,例如注解映射支持、视图解析,拦截器等等。。。
3、因为这里采用的是默认模式,然后就需要把SpringMVC-servlet.xml配置文件放在WEB-INF目录下,工程会自动去加载。我们可以新建一个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"
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.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
<context:component-scan base-package="org.springframework.samples.petclinic.web" />
<bean name="/hello" class="com.feizi.controller.HelloController"></bean>
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
</beans>
5、好了,到了这里,关于SpringMVC的相关配置基本上都已经配置完了,当然,因为这个仅仅只是一个入门实例,前面有提到过,先把基本的框架搭建起来,让她能够正常运行起来,后续再做调整。。。
接下来,我们需要编写一个controller控制器,这里暂时还没有用到注解的方式,后面会介绍到使用注解的方法。然后只需要实现一个接口就行,例如编写一个HelloController类实现Controller接口;再实现这个接口中的handleRequest方法;然后返回一个ModelAndView。这个ModelAndView就是返回的一个视图,也可以传递参数,例如最后返回一个“/hello“,然后就会通过SpringMVC的视图渲染到hello.jsp页面。。
因为在之前的SpringMVC-servlet.xml配置文件中已经做了相关配置了,设置的页面后缀为.jsp的,所以,会直接跳转到hello.jsp页面,当然,这里还可以配置其他视图类型。不仅仅是jsp。。。
6、控制器HelloController类
/**
* 文件说明
* @Description:扩展说明
* @Copyright: 2015 dreamtech.com.cn Inc. All right reserved
* @Version: V6.0
*/
package com.feizi.controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
/**
* @Author: feizi
* @Date: 2015年5月6日 上午10:27:19
* @ModifyUser: feizi
* @ModifyDate: 2015年5月6日 上午10:27:19
* @Version:V6.0
*/
public class HelloController implements Controller {
/**
* 方法说明
* @Discription:扩展说明
* @Author: feizi
* @Date: 2015年5月6日 上午10:27:20
* @ModifyUser:feizi
* @ModifyDate: 2015年5月6日 上午10:27:20
* @see org.springframework.web.servlet.mvc.Controller#handleRequest(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
*/
@Override
public ModelAndView handleRequest(HttpServletRequest arg0,
HttpServletResponse arg1) throws Exception {
System.out.println("==========================Hello World!=========================");
//实际上就是跳转到hello.jsp页面
return new ModelAndView("/hello");
}
}
7、一个简单的入门级SpringMVC示例已经完成了,我们运行一下,看看效果,看能不能正常运行。。。
8、关于上面说的那个SpringMVC的核心配置文件SpringMVC-servlet.xml,在这里还需要再啰嗦一下,比如说,我们在web.xml文件中配置的servlet-name是SpringMVC,如果是采用默认的方式那么SpringMVC的配置文件的命名就应该是: [servlet-name]-servlet.xml ,即:SpringMVC-servlet.xml 。且这个配置文件还必须得放在/WEB_INF目录下面,不然工程找不到,除非我们手动进行指定配置、、、
例如:如果我们采用的是默认的方式,然后SpringMVC-servlet.xml文件的命名又不是以[servlet-name]-servlet这种方式进行命名,那运行的时候就会报错,我这里做个示范修改一下,假设我们在web.xml中将servlet-name指定为SpringMVC,然后配置文件名是SpringMVC1-servlet.xml,那么运行的时候就会报异常。
当然,我们也可以不使用默认的方式,但是需要我们手动进行配置指定。通过属性进行指定即可。。通过指定之后,运行就又正常了
ok,到这里就基本上完成了。。。之后会试着学习下使用注解的方式和将SpringMVC的配置文件放到其他的位置的配置方法。
参考文章:http://elf8848.iteye.com/blog/875830/
源码已打包上传至csdn:
http://download.csdn.net/detail/hu1991die/8668927