嚴(yán)重: action: null
org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from ServletContext resource [/WEB-INF/action-servlet.xml]; nested exception is java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/action-servlet.xml]
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:341)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:143)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:178)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:149)
at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:124)
at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:93)
at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:130)
at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:467)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:397)
at org.springframework.web.struts.ContextLoaderPlugIn.createWebApplicationContext(ContextLoaderPlugIn.java:356)
at org.springframework.web.struts.ContextLoaderPlugIn.initWebApplicationContext(ContextLoaderPlugIn.java:297)
at org.springframework.web.struts.ContextLoaderPlugIn.init(ContextLoaderPlugIn.java:227)
at org.apache.struts.action.ActionServlet.initModulePlugIns(ActionServlet.java:869)
at org.apache.struts.action.ActionServlet.init(ActionServlet.java:336)
at javax.servlet.GenericServlet.init(GenericServlet.java:212)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1161)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:981)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4042)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4348)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:920)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:883)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:492)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1138)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:516)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:566)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
Caused by: java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/action-servlet.xml]
at org.springframework.web.context.support.ServletContextResource.getInputStream(ServletContextResource.java:117)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:328)
... 41 more
2012-3-25 11:53:05 org.apache.catalina.core.ApplicationContext log
信息: Marking servlet action as unavailable
2012-3-25 11:53:05 org.apache.catalina.core.StandardContext loadOnStartup
嚴(yán)重: Servlet /TestSS threw load() exception
javax.servlet.UnavailableException
at org.apache.struts.action.ActionServlet.initModulePlugIns(ActionServlet.java:880)
at org.apache.struts.action.ActionServlet.init(ActionServlet.java:336)
at javax.servlet.GenericServlet.init(GenericServlet.java:212)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1161)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:981)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4042)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4348)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:920)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:883)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:492)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1138)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:516)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:566)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
出現(xiàn)上面錯(cuò)誤可以產(chǎn)看一下Struts.xml插件那是否配錯(cuò)了
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property value="/WEB-INF/applicationContext.xml" property="
contextConfigLocation
"/>注意第一個(gè)字母是小寫(xiě),若果大寫(xiě)就會(huì)出現(xiàn)上述情況了
</plug-in>
使用spring
ApplicationContext context = new FileSystemXmlApplicationContext("src/applicationContext.xml");
IDISK idisk = (IDISK)context.getBean("disk");//根據(jù)配置文件的內(nèi)容實(shí)例化對(duì)象并返回
配置文件
scope="prototype"取消單態(tài),延遲加載只針對(duì)單態(tài)的bean適用,非單態(tài)的bean本來(lái)就是“延遲加載”
<bean id="dbreader" class="reader.DBReader" scope="prototype">
<!-- 構(gòu)造方法注入
<constructor-arg index="0" type="java.lang.String">
<value>sfk</value>
</constructor-arg>
<constructor-arg index="1" type="java.lang.String">
<value>sfk</value>
</constructor-arg>
-->
<property name="driverClassname">
<value>sun.jdbc.odbc.JdbcOdbcDriver</value><!-- 屬性注入 -->
</property>
<property name="url">
<value>url</value>
</property>
<property name="username">
<value>username</value>
</property>
<property name="password">
<value>password</value>
</property>
</bean>
核心代碼
Session session = util.HibernateSessionFactory.getSession();
School school = (School)session.get(School.class,
02
);
System.out.println(school.getSname());
System.out.println(school.getHeader().getHname());
school.getHeader().setHname("王強(qiáng)");
Transaction transaction = session.beginTransaction();
session.update(school);
session.delete(school);
transaction.commit();
util.HibernateSessionFactory.closeSession();
配置文件
<class name="po.School" table="school">
<id column="SID" name="sid">
<generator class="assigned"/>
</id>
<property column="SNAME" generated="never" lazy="false" name="sname"/>
<one-to-one cascade="all" class="po.Header" name="header"/>
</class>
<class name="po.Header" table="Header">
<id name="hid" column="HID">
<generator class="increment" />
</id>
<property name="sid" column="SID"/>
<property name="hname" column="HNAME"/>
</class>
hibernate 與數(shù)據(jù)庫(kù)的耦合性較低。
在一對(duì)一關(guān)系中要注意找出誰(shuí)是主動(dòng)方,在上面的例子中School是主動(dòng)方,在主動(dòng)方里面添加被動(dòng)方的屬性,上述例子添加了Header屬性,然后到配置文件中注冊(cè)。使用的時(shí)<one-to-one、>
如果在使用ps 3D->從圖層新建形狀->...出現(xiàn)下邊錯(cuò)誤
1、DispatchAction
當(dāng)一個(gè)action要處理兩個(gè)操作時(shí),如以下情況
<html:form
action="/buy.do?method=add"
method="post">
請(qǐng)您選擇書(shū)本 : <html:text property="book"/><html:errors property="book"/><br/>
<html:submit value="添加到購(gòu)物車"/>
</html:form>
<hr>
以下是您選的熟本<br>
<logic:present name="cart">
<logic:iterate id="book" name="cart">
<bean:write name="book"/><html:link
action="/buy.do?method=delete"
paramId="BOOK" paramName="book">刪除</html:link><br>
</logic:iterate>
</logic:present>
我們都是用buy這個(gè)action來(lái)處理的,action繼承了DispatchAction,為了讓頁(yè)面識(shí)別action中的add()方法和delete()方法,我們需要在struts.xml中配置<action parameter="method"></action>,這種方法耦合性高。需要頁(yè)面識(shí)別action中的方法。
2、MappingDispatchAction
這種方法可以降低耦合性,指向多個(gè)結(jié)構(gòu)不同的ActionForm,以上jsp可以如下
<html:form
action="/add.do"
method="post">
請(qǐng)您選擇書(shū)本 : <html:text property="book"/><html:errors property="book"/><br/><html:submit value="添加到購(gòu)物車"/>
</html:form>
<hr>
以下是您選的熟本<br>
<logic:present name="cart">
<logic:iterate id="book" name="cart">
<bean:write name="book"/><html:link
action="/delete.do"
paramId="BOOK" paramName="book">刪除</html:link><br>
</logic:iterate>
</logic:present>
在struts.xml中設(shè)置如下<action path="/add"parameter="add"></action>
<action path="delete"parameter="delete"></action>
3、LookupDispatchAction
這種情況一般是同一個(gè)表單可以提交到多個(gè)不同的按鈕,這種方法耦合性低,比較麻煩,需要用到資源文件。舉例:jsp如下
<html:form action="/lr">
account : <html:text property="account"/><br/>
password : <html:text property="password"/><br/>
<html:submit
property="ope"
><bean:message key="info.tag.login"/></html:submit>
<html:submit
property="ope"
><bean:message key="info.tag.reg"/></html:submit>
</html:form>
我們?cè)赼ction中需要重寫(xiě)getKeyMethodMap()
protected Map getKeyMethodMap() {//用一個(gè)map保存資源文件和方法名的映射
// TODO Auto-generated method stub
Map map = new HashMap();
map.put("info.tag.login","
login
");
map.put("info.tag.reg","
reg
");
return map;
}
login 和 reg 用來(lái)選擇方法。在struts.xml中需要作如下配置
<actionparameter="ope"></action>
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
