上一篇博客简单地介绍了下SpringMVC框架的搭建,然后也都是采用的默认的方式,即需要将SpringMVC的核心配置文件放在/WEB-INF/目录下,由工程自动去加载,但是在我们实际的项目开发过程中,一般都不会这样去处理,很少使用这样的默认配置,而且这样的默认方式看起来比较杂乱,所以通常情况下我们都会将配置文件独立出来,单独去管理。
一、手动指定SpringMVC的核心配置文件加载位置
解决方法:
1、在src目录下建一个包,专门放置配置文件的
2、将原来WEB-INF目录下的springMVC的配置文件移到这个配置包路径下面。
3、在web.xml文件中使用<init-param>
配置一下加载路径。
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:com/feizi/config/springmvc-servlet.xml</param-value>
</init-param>
整个web.xml文件的配置如下:
<?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_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>springmvc_demo_04</display-name>
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:com/feizi/config/springmvc-servlet.xml</param-value>
</init-param>
</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>
工程结构:
然后后续操作和示例教程(一)中的demo一样。配置好之后,运行一下,在浏览器中看看效果。
二、使用SpringMVC的注解方式
1、在SpringMVC的核心配置文件[servlet-name]-servlet.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"
xmlns:mvc="http://www.springframework.org/schema/mvc"
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">
<!-- 配置注解的支持 -->
<mvc:annotation-driven></mvc:annotation-driven>
<!-- 启用自动扫描 -->
<context:component-scan base-package="com.feizi.controller"></context:component-scan>
<!-- 配置视图解析器 -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- <property name="prefix" value="/"></property> -->
<property name="prefix" value="/WEB-INF/jsp/"></property>
<!-- 配置视图类型为jsp类型 -->
<property name="suffix" value=".jsp"></property>
</bean>
</beans>
2、然后就可以在控制器类中使用注解方式了
/**
* 文件说明
* @Description:扩展说明
* @Copyright: 2015 dreamtech.com.cn Inc. All right reserved
* @Version: V6.0
*/
package com.feizi.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
/**
* @Author: feizi
* @Date: 2015年5月7日 下午4:00:23
* @ModifyUser: feizi
* @ModifyDate: 2015年5月7日 下午4:00:23
* @Version:V6.0
*/
//通过@Controller注解标识HelloController这个类是一个控制器
@Controller
public class HelloController {
@RequestMapping(value="/hello",method=RequestMethod.GET)
public String sayHello(){
System.out.println("======================Hello World!!!================");
return "hello";
}
}
然后这里需要注意一下:可能我们在启动tomcat的时候会报错,如果是用的tomcat6.0的话,启动的时候可能会报如下异常:
问题描述:spring3.2的架构在tomcat6.0中无法正常启动,抛出java.lang.NoClassDefFoundError: javax/servlet/AsyncListener错误
异常原因:
1:org.springframework.web.servlet-3.2支持Servlet3.0的版本。
2:tomcat6.0只支持Servlet2.5,而tomcat7.0支持Servlet3.0。
从而造成需求方和供应方对Servlet版本的不兼容。
解决方案:
将tomcat6.0/lib文件夹下的servlet-api.jar文件替换为tomcat7.0的。
注意:一定要替换tomcat/lib下的jar,如果放到WEB-INF/lib中同样会报错。原因:tomcat6.0是提供servlet-api.jar的,且在启动时加载jar文件的顺序是先从tomcat6.0/lib开始,然后再加载WEB-INF/lib。所以只放在WEB-INF/lib中,jar文件是无效的。
我们将tomcat7.0安装目录的lib目录中的servlet-api.jar包拷贝到tomcat6.0安装目录的lib目录中进行替换。
之后,再启动tomcat6.0就会正常启动了
然后运行一下,在浏览器中看看效果:
ok,到这里关于SpringMVC的初级入门就已经完成了,当然了,入门是很简单,但是关于这个SpringMVC其中的缘由、和为什么这样去设计以及什么情况下去选择这种框架技术还是有待一番研究的。SpringMVC框架如此受欢迎肯定也是有一定的原因的,然而这个也不是说一天两天的事情,冰冻三尺非一日之寒,骚年,继续努力吧!!!
关于这两篇博客的所有demo示例都已经打包上传至csdn:
http://download.csdn.net/detail/hu1991die/8673299