我按照网上的教程说的方法去配置struts.xml以及applicationContext.xml,结果tomcat运行的时候提示action not found。但是,如果我吧struts.xml里action的class写成"com.sshtest.web.action.LogingAction"则不会出现action not found的错误,但是无法生成service的实例。请问一下到底应该是怎样配置的?配置文件以及java代码如下:
web.xml<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
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_2_5.xsd">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<!-- Spring Configuration Start -->
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<!-- 指定使用UTF-8 -->
<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-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext-*.xml,/WEB-INF/action-servlet.xml</param-value>
</context-param>
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/log4j.properties</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- Spring Configuration end -->
<!-- Struts Configuration start -->
<jsp-config>
<taglib>
<taglib-uri>struts-tags</taglib-uri>
<taglib-location>/WEB-INF/lib/struts2-core-2.1.8.1.jar</taglib-location>
</taglib>
<taglib>
<taglib-uri>struts-dojo-tags</taglib-uri>
<taglib-location>/WEB-INF/lib/struts2-dojo-plugin-2.1.8.1.jar</taglib-location>
</taglib>
</jsp-config>
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- Struts Configuration end -->
</web-app>
applicationContext-services.xml<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<bean id="userService" class="com.sshtest.service.impl.UserService">
<property name="userDao">
<ref bean="userDao" />
</property>
</bean>
</beans>
action-servlet.xml<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans> <bean id="LogingAction" class="com.sshtest.web.action.LogingAction"
scope="prototype">
<property name="userService" ref="userService" />
</bean>
</beans>
LogingAction.javapackage com.sshtest.web.action;import java.util.Date;
import java.util.Map;import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.sshtest.service.IUserService;public class LogingAction extends ActionSupport {
private Log logger = LogFactory.getLog(getClass());
private String userName;
private String password;
private Date date;
private IUserService userService;
public void setUserService(IUserService userService) {
this.userService = userService;
}
/**
* @return
*/
public String execute() {
Map session=ActionContext.getContext().getSession();
logger.debug("########### LogingAction.execute begin ###########");
logger.debug("userName: " + userName);
logger.debug("password: " + password);
boolean isValidUser = userService.loginValid(userName, password);
logger.debug("isValidUser: " + isValidUser);
if(isValidUser){
session.put("userName", userName);
logger.debug("########### LogingAction.execute success end ###########");
return "success";
}else{
addActionError("用户名密码不匹配");
}
logger.debug("########### LogingAction.execute input end ###########");
return "input";
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
}
web.xml<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
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_2_5.xsd">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<!-- Spring Configuration Start -->
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<!-- 指定使用UTF-8 -->
<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-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext-*.xml,/WEB-INF/action-servlet.xml</param-value>
</context-param>
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/log4j.properties</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- Spring Configuration end -->
<!-- Struts Configuration start -->
<jsp-config>
<taglib>
<taglib-uri>struts-tags</taglib-uri>
<taglib-location>/WEB-INF/lib/struts2-core-2.1.8.1.jar</taglib-location>
</taglib>
<taglib>
<taglib-uri>struts-dojo-tags</taglib-uri>
<taglib-location>/WEB-INF/lib/struts2-dojo-plugin-2.1.8.1.jar</taglib-location>
</taglib>
</jsp-config>
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- Struts Configuration end -->
</web-app>
applicationContext-services.xml<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<bean id="userService" class="com.sshtest.service.impl.UserService">
<property name="userDao">
<ref bean="userDao" />
</property>
</bean>
</beans>
action-servlet.xml<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans> <bean id="LogingAction" class="com.sshtest.web.action.LogingAction"
scope="prototype">
<property name="userService" ref="userService" />
</bean>
</beans>
LogingAction.javapackage com.sshtest.web.action;import java.util.Date;
import java.util.Map;import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.sshtest.service.IUserService;public class LogingAction extends ActionSupport {
private Log logger = LogFactory.getLog(getClass());
private String userName;
private String password;
private Date date;
private IUserService userService;
public void setUserService(IUserService userService) {
this.userService = userService;
}
/**
* @return
*/
public String execute() {
Map session=ActionContext.getContext().getSession();
logger.debug("########### LogingAction.execute begin ###########");
logger.debug("userName: " + userName);
logger.debug("password: " + password);
boolean isValidUser = userService.loginValid(userName, password);
logger.debug("isValidUser: " + isValidUser);
if(isValidUser){
session.put("userName", userName);
logger.debug("########### LogingAction.execute success end ###########");
return "success";
}else{
addActionError("用户名密码不匹配");
}
logger.debug("########### LogingAction.execute input end ###########");
return "input";
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
}
解决方案 »
- 怎样使用servlet重定向jsp页面到一个指定frame框架(菜鸟问题,请大侠指点,至谢!!)
- 有问题,请教!(在线等,请各位帮帮忙啊!)
- 要把文件由一个文件夹移动另外一个文件夹中,怎样用java来实现?
- 求救:win2003tomcat5与IIS6整合问题 100分不够 我继续加啊
- 一个Graphics的框体怎么加背景图片啊?
- 谁能告诉我下面代码的含义?
- 关于用jsp通过javabean访问oracle数据库中的中文数据,出现中文乱码,求救!
- JSP下有没有象phpMyAdmin一样管理MySQL的工具?
- 求救!关于提交的字符串长度的问题
- 关于处理文件的问题,请指点……
- 【高分悬赏】求fckeditor for zk配置方法,分不够再补,跟帖有分
- WebWork+WebSphere+unix 界面出现乱码,请高手帮忙!
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener> <context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:beans-*.xml</param-value>
</context-param>
<filter>
<filter-name>openSessionInView</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
<init-param>
<param-name>sessionFactoryBeanName</param-name>
<param-value>sessionFactory</param-value>
</init-param>
</filter> <filter-mapping>
<filter-name>openSessionInView</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> <filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter> <filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.do</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>我用的是 srtuts2.1.8+xwork2.1.6+hibernate3.4+spring2.5.6
建议修改action。提供setXX().而不是用构造器函数。。
<bean id="userService" class="com.sshtest.service.impl.UserService">
<property name="userDao">
<ref bean="userDao" />
</property>
</bean>
</beans>
你的userDao 有配置到spring的配置文件中么 你的struts.xml的配置是什么
public void setUserService(IUserService userService)
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts> <package name="MyPackage" extends="struts-default">
<action name="login" class="LogingAction">
<result name="success">/success.jsp</result>
<result name="input">/index.jsp</result>
</action>
</package></struts>
scope="prototype">
<property name="userService" ref="userService" />
</bean>应该是 <bean name="LogingAction" class="com.sshtest.web.action.LogingAction"
scope="prototype">
<property name="userService" ref="userService" />
</bean>