problem1 : spring mvc应用程序在运行时报错(注意并不是启动时报错) :java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/Dispatcher-servlet.xml]
解决:第一种方法(这个方式用来处理 配置文件名称不是默认的Dispatcher-servlet.xml)
a.在src目录下面添加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:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans classpath:/org/springframework/beans/factory/xml/spring-beans-2.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd"> <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <prop key="/login.do">loginController</prop> </props> </property> </bean> <bean id="loginController" class="com.pb.web.controller.LoginController"> <property name="successView" value="showAccount"></property> <property name="failView" value="login"></property> </bean> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/"></property> <property name="suffix" value=".jsp"></property> </bean> </beans>
b.修改web.xml,添加init-param
其中param-value参数指定Dispatcher-servlet.xml(在这里为applicationContext.xml文件)文件所在位置
<servlet> <!--这里决定Spring默认配置文件的名称为Dispatcher-servlet.xml。--> <servlet-name>Dispatcher</servlet-name> <!-- Spring首先会去找你指定的配置文件(这里是contextConfigLocation,指定配置文件位置)。如果你指定了配置文件的位置,那么spring就不会再去找默认的配置文件了--> <!--如果你没有指定配置文件位置的话,Spring会去找默认配置文件(默认配置文件的文件名随servlet-name而定,这里是/WEB-INF/Dispatcher-servlet.xml配置文件)。--> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/classes/applicationContext.xml</param-value> <!-- 也可以这样写 <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> --> </init-param> </servlet>
第二种方式: 是在WEB-INF目录下添加[servlet-name]-servlet.xml文件,在这里是Dispatcher-servlet.xml
problem2: Spring在初始化xml配置文件,报错Cannot find the declaration of element 'beans'。
参考:http://llyzq.iteye.com/blog/1117288