建立简单的SpringMVC框架

本文详细介绍了如何构建一个简单的SpringMVC应用,包括添加依赖、配置文件、控制器编写等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近终于有点时间来整理一下了,Spring框架的强大和灵活性,大家都已经知道了,比如它完全可以代替Struts2,本身已经提供很多功能,同时还可以整合第三方框架到其中,那下面就简单整理总结一下,如何建立一个简单的SpringMVC,下面分步说明,

1,向工程添加Spring相关的jar包,
MyEclipse中直接添加Spring功能即可有相关jar包,在Eclipse中需要手动找相关jar包然后到懂lib文件件下即可,哪些jar可以网上搜索;

2,编写Spring的配置XML文件,

常见文件名为applicationContext.xml,一般放在WEB-INF下某个地方,根据需要而定;
这个配置文件主要是用Spring框架来加载整合第三方或自己定义的各个工作Java Bean到Spring框架中,如果仅作可运行的例子可不需要定义任何的Bean;如果有其它的Bean,则可定义一个Bean并指出class的来源;

3,编写SpringMVC的配置XML文件,

默认常见文件名为servlet的名称-servlet.xml,一般放在WEB-INF下某个地方,根据需要而定;
SpringMVC的配置XML文件是扫描/加载实现SpringMVC的核心工作Java Bean到Spring框架中,对应的各个class文件在别人已经开发好的Spring的各jar包中,或者是用户自己开发的class文件(例如控制器类),最简单的是加载各个控制类classs文件和实现MVC分发请求所必须的DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter两个Bean即可,如下:

<!-- 启动时扫描某个包com.xxx.yyy下所有的controller -->
<context:component-scan base-package="com.xxx.yyy.controllers"/>

<!-- 
<mvc:annotation-driven /> 
这里等同下面两个Bean的定义,是Spring实现MVC分发请求所必须的
-->

<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="cacheSeconds" value="0"></property>
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"/>  
<!-- 负责读取和写入json格式的数据  --> 
<!-- 没有这个Bean控制器中以JSON返回将出问题,也可在控制器内完成Bean到JSON的转换,然后以String返回到Client -->
	    		
<bean class="org.springframework.http.converter.StringHttpMessageConverter"/>  
<!-- 负责读取字符串格式的数据和写出二进制格式的数据 -->
	    		
<bean class="org.springframework.http.converter.ResourceHttpMessageConverter"/>  
<!-- 负责读取资源文件和写出资源文件数据 -->
</list> 
</property>
</bean>

如果想在配置文件中增加错误的处理,可加入如下Bean;

<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="defaultErrorView" value="/resources/common/error.jsp" />
<!--Viewer资源路径可根据自己项目而定-->
<property name="exceptionMappings">
<props>
<prop key="org.springframework.web.servlet.PageNotFound">/resources/common/404.jsp</prop>
<prop key="org.springframework.web.DataAccessException">/resources/common/500.jsp</prop>
<prop key="org.springframework.transaction.TransactionException">/resources/common/500.jsp</prop>
<prop key="java.lang.Exception">/resources/common/error.jsp</prop>
</props>
</property>
</bean>
如果想在配置文件中增加上传功能的处理,可加入如下Bean;
<bean id="multipartResolver" 
class="org.springframework.web.multipart.commons.CommonsMultipartResolver" 		
p:defaultEncoding="utf-8">
<property name="maxUploadSize" value="2097160" />
</bean>
<!--maxUploadSize:2MB=2*1024*1024=2097152-->
<!-- 这里为全局上传大小定义;上传文件大小也可放到Controller中进行更灵活限制和管理  -->

如果想某些文件或文件夹下的资源不被DispatcherServlet处理,可以加入如下Bean;

<mvc:resources location="/resources/" mapping="/resources/**" />
<!-- 配置js,css等静态文件直接映射到对应的文件夹,不被DispatcherServlet处理 -->
如果想某些请求访问直接返回某些视图,增加如下的Bean;

<!-- 自定义的一些访问路径到视图的映射-->
<mvc:view-controller path="/" view-name="forword:/" />
<mvc:view-controller path="/login" view-name="/login" />
<mvc:view-controller path="/logout" view-name="/" /> 
如果想增加国际化言语区域的处理,增加如下Bean;
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver">        
<property name="defaultLocale" value="zh_CN"/> 
</bean>
如果想增加国际化言语区域更换的处理,增加如下拦截Bean;

<mvc:interceptors>
<bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" /> 
</mvc:interceptors>
<!-- 根据请求中的参数名locale的值[zh_CN,en_US等]处理 -->
如果增加国际化处理,则相应的加入如下Bean,以加载国际化资源文件;

<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="defaultEncoding" value="UTF-8" />
<property name="cacheSeconds" value="0" />
<property name="basenames">
<list>
<!--资源存放路径根据项目情况而定,仅列出基本名-->
<value>classpath:config/properties/Labels</value>
<value>classpath:config/properties/Messages</value>
</list>
</property>
</bean>
如果视图资源文件统一放在某个地方,可以增加如下Bean,统一处理所有试图的前缀和后缀;

<!-- Spring关于视图的处理Bean -->
<bean name="veiwPS" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>
<property name="prefix" value="/WEB-INF/views/"></property>
<property name="suffix" value=".jsp"></property>
</bean>

4,在工程web.xml文件中加载Spring的配置文件和SpringMVC的配置文件,
web.xml是配置整个WEB应用程序启动时加载的各个工作资源,用Spring(Struts2)等框架已经提供的工作类来加载,
要实现SpringMVC则必须让应用程序加载SpringMVC配置文件中定义Bean资源,此外也加载其它功能用到Spring配置文件中
定义的各个Bean资源;

首先可用listener元素加载监听类org.springframework.web.context.ContextLoaderListener,用之来加载上下文参数中名为contextConfigLocation指定的配置文件,即Spring的配置文件中定义的各个工作Bean,

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
其实目的是加载Spring的配置文件中定义的各个工作Bean到应用程序中,这个加载工作也可以放到并连SpringMVC配置文件一起的完成加载,下面配置SpringMVC的Servlet(含对应配置文件)和配置Servlet处理映射请求资源类型;用Spring提供的资源org.springframework.web.servlet.DispatcherServlet给应用程序定义servlet,包含对应的配置文件,此外还配置该Servlet处理的对应资源类型;
<servlet>
<servlet-name>spring3MVC-Dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:config/*.xml</param-value>
<!-- 扫描加载config下所有XML文件-->
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>spring3MVC-Dispatcher</servlet-name>
<url-pattern>/</url-pattern>
<!-- 
定义不同的匹配模式可定义不同访问资源,
如*.do是访问do后缀的资源,直接/即访问应用程序跟目录下的任何资源,即RestFul方式
-->
</servlet-mapping>
其它根据需要可自行定义;

如想自定义Session生命周期则,则加入如下定义;

<session-config>
<session-timeout>40</session-timeout><!--unit:minute-->
</session-config> 
如想自定义错误处理,则加入如下定义;

<error-page>
<error-code>404</error-code>
<location>/resources/common/404.jsp</location>
</error-page>
	
<error-page>
<error-code>500</error-code>
<location>/resources/common/500.jsp</location>
</error-page>
如想自定义默认访问页,则加入如下定义;
<welcome-file-list>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.html</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>

5,控制器的编写
当请求URL符合spring3MVC的映射资源时,请求便由对应的控制器来处理,
在控制器中完成相关的业务处理,然后返回到指定的视图,
但控制器类前面要加@Controller注解,以便告诉容器这是个控制器,
同时再加@RequestMapping("/*")注解,其路径可根据自己需要定义映射,方便告诉该控制器处理哪个URL,
例如下面:

@Controller
@RequestMapping("/*")
public class MainController {
	@Autowired
	private BookCategoryService<BookCategroy> bookCategoryService;
		
	@RequestMapping(value = {"main"})
	public String main(){
		return "index"; 
	}
	
	@RequestMapping("login")
	public String main(){
		return "login"; 
	}
	
	@RequestMapping(value = {"getRequestParam","getRequestParam.htm"},  
	method = {RequestMethod.GET,RequestMethod.POST})
	public @ResponseBody 
	String getRequestParam(@RequestParam(value="refId",required = false) String refId, 
		Model model) throws Throwable{
		//model.addAttribute("pathVar", refId);	
	
		return refId;
	}
	//...other method...

}

6,视图的定义

就是JSP或HTML等视图资源,在浏览器端最终转换成HTML页面;视图是包控制器处理结果并显示结果给用户看的载体资源,存放位置可根据自己定义,有很多的视图资源时放到WEB-INF文件夹下,因客户端不能直接访问其下资源,安全性好,但可以由控制器访问;

附例子,applicationContext.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:aop="http://www.springframework.org/schema/aop"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:jdbc="http://www.springframework.org/schema/jdbc"
	xmlns:jee="http://www.springframework.org/schema/jee"
	xmlns:lang="http://www.springframework.org/schema/lang"
	xmlns:mvc="http://www.springframework.org/schema/mvc"
	xmlns:mybatis-spring="http://mybatis.org/schema/mybatis-spring"
	xmlns:oxm="http://www.springframework.org/schema/oxm"
	xmlns:p="http://www.springframework.org/schema/p"
	xmlns:task="http://www.springframework.org/schema/task"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:util="http://www.springframework.org/schema/util"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
		http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
		http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd
		http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.0.xsd
		http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang-3.0.xsd
		http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
		http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring-1.2.xsd
		http://www.springframework.org/schema/oxm http://www.springframework.org/schema/oxm/spring-oxm-3.0.xsd
		http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd
		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
		http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd">


<!-- 
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="order" value="1" />
<property name="locations">
<list>
<value>classpath:config/properties/config.properties</value>
</list>
</property>
</bean>
-->
<!-- 本示例采用DBCP连接池,应预先把DBCP的jar包复制到工程的lib目录下 --> 
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<!--
DB driverName:
mysql:com.mysql.jdbc.Driver; SQLServerV2005+:com.microsoft.sqlserver.jdbc.SQLServerDriver
		
DB URL:
mysql,URL:jdbc:mysql://localhost:3306/mybatis_spring?useUnicode=true&characterEncoding=UTF-8
SQLServerV2005+,URL:jdbc:sqlserver://localhost:1433;databaseName=YourDataBaseName
-->
<!--
<property name="driverClassName" value="${database.driverClassName}" />
<property name="url" value="${database.url}" />
<property name="username" value="${database.userName}" />
<property name="password" value="${database.password}" />
-->
<property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" />
<property name="url" value="jdbc:sqlserver://localhost:1433;databaseName=MyDBName" />
<property name="username" value="dbUser" />
<property name="password" value="dbPassword" />        
<property name="initialSize" value="10" />
<property name="maxIdle" value="80" />
<property name="minIdle" value="10" />
<property name="maxActive" value="20" />
<property name="removeAbandoned" value="false" /><!-- true -->
<property name="removeAbandonedTimeout" value="600" /><!-- 自动回收超时时间(以秒数为单位) -->  
<property name="maxWait" value="3000" /><!--超时等待时间以毫秒为单位-->
<property name="defaultAutoCommit" value="false" />
<property name="validationQuery">
<value>SELECT 1</value>
</property>
<property name="testOnBorrow">
<value>true</value>
</property>
<property name="testOnReturn">
<value>false</value>
</property>
</bean>		
<!-- ========= MyBatis SqlSession配置 ======== -->
<!-- 使用SqlSessionFactoryBean工厂产生SqlSession对象,方便后期注入Dao -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">      	  
<property name="dataSource" ref="dataSource"/>      	     	
<property name="configLocation">
<value>classpath:config/Configuration.xml</value>
</property>
<property name="mapperLocations">
<list>
<!-- 扫描/加载各个映射数据库映射XML -->                
<value>classpath:config/mybatis/*.xml</value>
</list>
</property>
</bean> 	
<!-- 
<bean id="bookCategoryServicesMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
<property name="mapperInterface" value="com.gc.services.BookCategoryService"/> 
<property name="sqlSessionFactory" ref="sqlSessionFactory" />
</bean>
-->	
<bean id="servicesMapper" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage">
<value>com.gc.services</value>
</property>
<property name="sqlSessionFactory" ref="sqlSessionFactory" />
</bean>		
<!-- ==========以下是事务有关========== -->
<!-- 用spring的AOP给代码添加事务管理 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>		
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="get*" read-only="true" />
<tx:method name="find*" read-only="true"/>
<tx:method name="list*" read-only="true" />
<tx:method name="query*" read-only="true" />			
<tx:method name="add*" propagation="REQUIRED" rollback-for="java.lang.Exception"/>
<tx:method name="save*" propagation="REQUIRED" rollback-for="java.lang.Exception"/>
<tx:method name="edit*" propagation="REQUIRED" rollback-for="java.lang.Exception"/>
<tx:method name="insert*" propagation="REQUIRED" rollback-for="java.lang.Exception"/>
<tx:method name="update*" propagation="REQUIRED" rollback-for="java.lang.Exception"/>
<tx:method name="modify*" propagation="REQUIRED" rollback-for="java.lang.Exception"/>
<tx:method name="remove*" propagation="REQUIRED" rollback-for="java.lang.Exception"/>
<tx:method name="delete*" propagation="REQUIRED" rollback-for="java.lang.Exception"/>
<tx:method name="execute*" propagation="REQUIRED" rollback-for="java.lang.Exception"/>
<tx:method name="*" read-only="true"  rollback-for="java.lang.Exception"/>
</tx:attributes>
</tx:advice>	
<!-- 用spring AOP给service层的方法添加事务管理 -->
<aop:config>		
<aop:pointcut id="bussinessService" expression="execution(public * com.gc.services..*.*(..))" />		
<aop:advisor pointcut-ref="bussinessService" advice-ref="txAdvice" />
</aop:config>		
<!-- 因无法自动完成Bean加载而需要人工手动定义Bean到Spring配置文件,这里完成加载 -->
<bean class="com.gc.validators.BookCategoryValidator"></bean>
<!-- 向Spring容器注册用户自定义并扩展了的某个验证器  -->
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="webBindingInitializer">
<bean class="com.gc.validators.SystemWebBindingInitializer"></bean>
</property>
</bean>
</beans>

附例子,名为spring3MVC-Dispatcher的servlet的配置文件spring3MVC-Dispatcher-servlet.xml

<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:mvc="http://www.springframework.org/schema/mvc"
	xmlns:oxm="http://www.springframework.org/schema/oxm"
	xmlns:p="http://www.springframework.org/schema/p"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
		http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
		http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
		http://www.springframework.org/schema/oxm http://www.springframework.org/schema/oxm/spring-oxm-3.0.xsd">

	<!-- <import resource="config/xxx.xml"/> 导入其它配置文件 -->	
	 
	<!-- 启动时扫描所有的controller -->
	<context:component-scan base-package="com.gc.controllers"/>	
	
	<!--  
	主要作用于@Controller,激活该模式,下面是一种简写形式,完全可以手动配置替代这种简写形式,
	它会自动注册DefaultAnnotationHandlerMapping与AnnotationMethodHandlerAdapter,
	是spring MVC为@Controllers分发请求所必须的   
	-->
	<!-- <mvc:annotation-driven /> -->	
	
	<!-- 
	spring MVC为 @Controllers 分发请求所必须的下面两个类
	DefaultAnnotationHandlerMapping类和AnnotationMethodHandlerAdapter类
	-->
	<!-- 前面annotation-driven已经加载,这里再显示加载,并列出需要的类 -->
	<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />
	<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
		<property name="cacheSeconds" value="0"></property>
		<property name="messageConverters">
			<list>
				<!-- <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"/> -->  
	    		<!-- 负责读取和写入json格式的数据  --> 
	    		<!-- 没有这个Bean那控制器中以JSON返回将出问题,在控制器内完成Bean到JSON的转换,然后以String返回到Client -->
	    		
				<bean class="org.springframework.http.converter.StringHttpMessageConverter"/>  
	    		<!-- 负责读取字符串格式的数据和写出二进制格式的数据 -->
	    		
                <bean class="org.springframework.http.converter.ResourceHttpMessageConverter"/>  
                <!-- 负责读取资源文件和写出资源文件数据 -->
	    	</list> 
		</property>
	</bean>
	
	<!-- 配置js,css等静态文件直接映射到对应的文件夹,不被DispatcherServlet处理 -->
	<mvc:resources location="/resources/" mapping="/resources/**" />
	
	<!-- 自定义的一些访问路径到视图的映射-->
	<mvc:view-controller path="/" view-name="forword:/" />
	<mvc:view-controller path="/login" view-name="/login" />
	<mvc:view-controller path="/logout" view-name="/" /> 

	<!-- session 解析区域,默认的区域  -->	
	<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver">        
		<property name="defaultLocale" value="zh_CN"/> 
    	</bean> 
    	<!-- 
         上面是locale转换成真正的Locale对象,然后将对象保存在Session中,比较好,
         下面是基于请求头信息和Cookie方式的国际化
    	-->
	<!-- 
	<bean id="localeResolver" class="org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver">
	<bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver"/>
	--> 
	
	<!-- 链接请求式i18n国际化、网址拦截器 -->
	<!-- 
	拦截请求参数 locale=zh_CN|en_US 
	参考:http://chinaxxren.iteye.com/blog/794899
	http://xph.iteye.com/blog/1695199
	http://chinaxxren.iteye.com/blog/794899
	-->
	<mvc:interceptors>
	 	<bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" /> 
	</mvc:interceptors>	
	
	<!-- 
	为了使用国际化信息源,Spring MVC 必须实现MessageSource接口。	
	我们需要做的是注册一个MessageSource类型的Bean。
	Bean的名称必须为messageSource,从而方便DispatcherServlet自动检测它。
	每个DispatcherServlet只能注册一个 信息源的Bean,但该Bean中可列出需要的多个资源文件
	-->  
	<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
		<property name="defaultEncoding" value="UTF-8" />
		<property name="cacheSeconds" value="0" />
		<property name="basenames">
			<list>
				<value>classpath:config/properties/Labels</value>
				<value>classpath:config/properties/Messages</value>
			</list>
		</property>
	</bean>
	<!-- <property name="basename" value="classpath:/config/properties/messages" /> 仅单个资源文件-->
	
	<!-- Application Message Bundle 国际化信息源另一写法 -->
	<!-- 
	<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
		<property name="basename" value="classpath:/config/properties/messages" />
		<property name="cacheSeconds" value="0" />
	</bean>
	-->	
	
	<!-- 
	Spring负责处理上传问题的Bean,	
	-->
	<bean id="multipartResolver" 
		class="org.springframework.web.multipart.commons.CommonsMultipartResolver"
		p:defaultEncoding="utf-8">
		<property name="maxUploadSize" value="2097160" />
	</bean>
	<!--maxUploadSize:2MB=2*1024*1024=2097152-->
	<!-- 这里为全局上传大小定义;上传文件大小也可放到Controller中进行更灵活限制和管理  -->
	
	<!-- Spring关于的错处处理方式 -->
	<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
		<!-- <property name="defaultErrorView" value="/resources/common/error.jsp" /> --> 
		<property name="exceptionMappings">
			<props>				
				<prop key="org.springframework.web.servlet.PageNotFound">/resources/common/404.jsp</prop>
				<prop key="org.springframework.web.DataAccessException">/resources/common/500.jsp</prop>	
				<prop key="org.springframework.transaction.TransactionException">/resources/common/500.jsp</prop>
				<prop key="java.lang.Exception">/resources/common/error.jsp</prop>			 
			</props>
		</property>
	</bean>
	
	<!-- Spring关于视图的处理Bean -->
	<bean name="veiwPS" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>
		<property name="prefix" value="/WEB-INF/views/"></property>
		<property name="suffix" value=".jsp"></property>
	</bean>
</beans>


附例子 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">
  	<display-name>Spring3MVC-J2EE018</display-name>	  	
	<!-- 
 	<context-param>
  		<param-name>contextConfigLocation</param-name>
  		<param-value>/WEB-INF/applicationContext.xml</param-value>
  	</context-param>
	--> 
	<!-- 
  	<context-param>
  		<param-name>log4jRefreshInterval</param-name>
  		<param-value>60000</param-value>
  	</context-param>
	-->
	<filter>
		<filter-name>encodingFilter</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
		<init-param>
			<param-name>forceEncoding</param-name>
			<param-value>true</param-value>
		</init-param>
	</filter>	
	<!-- Filter 映射 -->
	<filter-mapping>
		<filter-name>encodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
  	<!--Spring的ApplicationContext 载入 -->
  	<!--  
  	<listener>
  		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  	</listener>
  	-->   	
  	<!-- Spring 刷新Introspector防止上下文Context内存泄露 -->
  	<!-- <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class> -->
  	<!-- 
  	<listener>
  		<listener-class>org.springframework.web.context.ContextCleanupListener</listener-class>
  	</listener> 
  	--> 
  	<!-- Spring 加载Log配置文件  -->
  	<!-- 
  	<listener>
  		<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
  	</listener>  	 
  	-->
  	<!-- 指定Spring3 MVC 的分配/转发器 -->  	
  	<servlet>
  		<servlet-name>spring3MVC-Dispatcher</servlet-name>
  		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  		<init-param>
  			<param-name>contextConfigLocation</param-name>
  			<param-value>classpath:config/*.xml</param-value>
  			<!-- 扫描加载所有xml文件 -->
  		</init-param>
  		<load-on-startup>2</load-on-startup>
  	</servlet>	 
  	<!-- 配置spring3MVC-Dispatcher映射器,作用的目标资源 -->  	
  	<servlet-mapping>
  		<servlet-name>spring3MVC-Dispatcher</servlet-name>
  		<url-pattern>/</url-pattern>
  	</servlet-mapping>   	 
   	<!-- 单位:分钟 -->   	
  	<session-config>
  		<session-timeout>40</session-timeout>
  	</session-config>    	 
	<error-page>
		<error-code>404</error-code>
		<location>/resources/common/404.jsp</location>
	</error-page>	
	<error-page>
		<error-code>500</error-code>
		<location>/resources/common/500.jsp</location>
	</error-page>		 
  	<welcome-file-list>
    		<welcome-file>index.jsp</welcome-file>
    		<welcome-file>index.htm</welcome-file>
    		<welcome-file>index.html</welcome-file>
  	</welcome-file-list>
</web-app>

整理写下方便参考,


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值