最早学习Struts1时,它的配置文件是放在WEB-INF下的。过渡到Struts2,把配置文件放到src总感觉别扭。于是为了让自己习惯,我就把Struts2(2.16以上的版本)的配置文件也放到了WEB-INF下。
于是在web.xml里我我依旧这么配置:
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
<init-param>
<param-name>config</param-name>
<param-value>
/WEB-INF/struts.xml
</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
启动服务器OK,没出错。可是无论我怎么发送请求,都报没有找到相应的Action。这是这么回事呢?
于是找到Struts2的源码下个断点启动服务器:
Dispatcher dispatcher = init.initDispatcher(config);看到了它,看看里面怎么回事:
/**
* Creates and initializes the dispatcher
*/
public Dispatcher initDispatcher( HostConfig filterConfig ) {
Dispatcher dispatcher = createDispatcher(filterConfig);
dispatcher.init();
return dispatcher;
}
继续看dispatcher.init();
/**
* Load configurations, including both XML and zero-configuration strategies,
* and update optional settings, including whether to reload configurations and resource files.
*/
public void init() {
if (configurationManager == null) {
configurationManager = new ConfigurationManager(BeanSelectionProvider.DEFAULT_BEAN_NAME);
}
try {
init_DefaultProperties(); // [1]
init_TraditionalXmlConfigurations(); // [2]
init_LegacyStrutsProperties(); // [3]
init_CustomConfigurationProviders(); // [5]
init_FilterInitParameters() ; // [6]
init_AliasStandardObjects() ; // [7]
Container container = init_PreloadConfiguration();
container.inject(this);
init_CheckConfigurationReloading(container);
init_CheckWebLogicWorkaround(container);
if (!dispatcherListeners.isEmpty()) {
for (DispatcherListener l : dispatcherListeners) {
l.dispatcherInitialized(this);
}
}
} catch (Exception ex) {
if (LOG.isErrorEnabled())
LOG.error("Dispatcher initialization failed", ex);
throw new StrutsException(ex);
}
}
看看init_TraditionalXmlConfigurations(); // [2]
private void init_TraditionalXmlConfigurations() {
String configPaths = initParams.get("config");
if (configPaths == null) {
configPaths = DEFAULT_CONFIGURATION_PATHS;
}
String[] files = configPaths.split("\\s*[,]\\s*");
for (String file : files) {
if (file.endsWith(".xml")) {
if ("xwork.xml".equals(file)) {
configurationManager.addConfigurationProvider(new XmlConfigurationProvider(file, false));
} else {
configurationManager.addConfigurationProvider(new StrutsXmlConfigurationProvider(file, false, servletContext));
}
} else {
throw new IllegalArgumentException("Invalid configuration file name");
}
}
}
原来在这:我发现开始在没有改变路径并配置的情况下 ,它加载的是
private static final String DEFAULT_CONFIGURATION_PATHS = "struts-default.xml,struts-plugin.xml,struts.xml";
看看Tomcat里路径(被我改后的位置)它在:
\Tomcat6.0\webapps\struct2\WEB-INF
之前它在
C:\Tomcat6.0\webapps\struct2\WEB-INF\classes
默认回去这里面找,
所以再用原来的位置是加载不上这个文件的,于是我改正了:
<init-param>
<param-name>config</param-name>
<param-value>struts-default.xml,struts-plugin.xml,../struts.xml</param-value>
</init-param>
Ok 启动下服务器;重新请求下Action,成功了。可以还有点小麻烦,我在提交请求时老报
警告:2010-8-19 23:06:42 com.opensymphony.xwork2.util.logging.jdk.JdkLogger warn
警告: No configuration found for the specified action: 'user/user' in namespace: ''. Form action defaulting to 'action' attribute's literal value.
2010-8-19 23:06:43 com.opensymphony.xwork2.util.logging.jdk.JdkLogger warn
警告: No configuration found for the specified action: 'user/user' in namespace: ''. Form action defaulting to 'action' attribute's literal value.
竟然没有出错,可是看着警告很不爽,看看.......原来是标签用错了我在package加了命名空间/user可是在<s:form>中action="user/user!login",他似乎还有个属性namespace,于是加上namespace="/user" ,action="user!login",重新试试,OK很顺利.......
刚开始学习Struts2.可能说的不对,请大家多多指教。
我在整合S2SH时,同样把所有的配置文件放到了WEB-INF里,同样我也遇到了更过麻烦,运行配置文件没读取.......
最典型的是我在mian方法中读取Spring中的bean怎么初始化不了我定义的bean
具体是这样的:
//加载spring配置文件,初始化IoC容器
ApplicationContext context = null;
context=new ClassPathXmlApplicationContext("/WEB-INF/applicationContext.xml");
UsersDAO item=(UsersDAO)context.getBean("UsersDAO");
System.out.println(item.getClass());
怎么都是徒劳,后来想起来在mian方法中是没有所谓的容器的。于是改成:
//加载spring配置文件,初始化IoC容器
ApplicationContext context = null;
context= new FileSystemXmlApplicationContext("/WebRoot/WEB-INF/applicationContext.xml");
UsersDAO item=(UsersDAO)context.getBean("UsersDAO");
System.out.println(item.getClass());
正在学习中。希望大家多多指教下。
分享到:
相关推荐
struts2+spring+hibernate 配置文件struts2+spring+hibernate 配置文件
Struts2.16、OGNL2.61和XWork2.1是Apache Struts框架的特定版本,这些源代码文件提供了深入了解该框架工作原理的机会。Struts2是一个广泛使用的Java Web应用程序开发框架,它基于Model-View-Controller(MVC)设计...
综上所述,搭建一个基于Struts2.16、Spring2.5和Hibernate3.0的项目,需要理解每个框架的核心理念和用法,同时掌握它们之间的整合技巧,以及如何配置和管理项目中的库文件。这不仅能帮助开发者构建出结构清晰、易于...
论坛系统项目(Struts 2+Hibernate+Spring实现)论坛系统项目(Struts 2+Hibernate+Spring实现)论坛系统项目(Struts 2+Hibernate+Spring实现)论坛系统项目(Struts 2+Hibernate+Spring实现)论坛系统项目(Struts...
简单struts+spring+hibernate搭建,配置,适合初学者
在Struts2中,Action类是业务逻辑的载体,配置在struts.xml文件中,通过拦截器链来处理请求和响应。Struts2还提供了丰富的结果类型,如dispatcher(转发)和stream(流式下载),以及强大的OGNL表达式语言,用于在...
SSH整合的关键在于配置文件,包括Struts 2的struts.xml、Spring的applicationContext.xml和Hibernate的hibernate.cfg.xml。这些文件定义了各组件之间的关系和行为。例如,struts.xml中配置Action类及其结果视图,...
使用SSi框架包进行开发时,开发者首先需要配置struts2的配置文件(struts.xml),定义Action和结果类型。接着,配置Spring的上下文配置文件(如applicationContext.xml),声明Bean及其依赖关系。最后,配置iBatis的...
Struts+Spring+Mybatis+EasyUI(jQuery)注解案例。采用注解的方式跟踪代码依赖性,实现替代配置文件功能。里面包含了平时用的增删改查及分页,分页查询时用的是存储过程,提高了数据库的性能。代码简单、易懂。
一个简单的spring+struts2+hibernate+mybatis整合(数据库脚本放在项目资源文件的sql目录下) 因为没想好mvc用springmvc好,还是struts2好 所以没有整合进去
以国内使用最广泛的Struts为例,其新版本Struts2与前一版Struts1.x已经有了天壤之别。Hibernate也从2.0升级为3.X,近期Spring也最新推出了2.5版。读者如果再参考以前的版本书籍学习,无异于南辕北辙,而《JavaWeb...
Struts2、Hibernate和FreeMarker是Java开发领域中常见的三个开源框架,它们分别在MVC(Model-View-Controller)架构的不同层面发挥着关键作用。这个"struts2+hibernate+freemarker"项目实例是将这三个框架集成到一起...
总结一下,当遇到Struts2配置文件位置更改问题时,应遵循以下步骤: 1. 确保新的`struts.xml`文件路径是相对于`WEB-INF/classes`目录的。 2. 更新`web.xml`中的`StrutsPrepareAndExecuteFilter`过滤器配置,通过`...
Struts+Spring+Ibatis环境配置(一) - zwjxf的专栏 - 博
3. 配置Struts2:设置struts.xml配置文件,定义Action类和结果页面。 4. 配置Spring:创建Spring的配置文件(如applicationContext.xml),声明bean,包括Action、Service、DAO以及数据源等。 5. 配置MyBatis:设置...
本光盘是《整合Struts+Hibernate+Spring应用开发详解》一书的配书光盘,书中的代码按章存放, 即第二章所使用的代码放在codes文件夹的02文件夹下,... (2) springlib文件夹下放的是编译和运行Spring项目的类库文件。
2. **webapp**:Web应用目录,有WEB-INF子目录,里面包含web.xml、struts-config.xml等配置文件,以及JSP页面。 3. **lib**:原本应包含项目依赖的JAR文件,如Struts、Spring、Hibernate的库,但由于大小原因被移除...
本光盘是《整合Struts+Hibernate+Spring应用开发详解》一书的配书光盘,书中的代码按章存放, 即第二章所使用的代码放在codes文件夹的02文件夹下,... (2) springlib文件夹下放的是编译和运行Spring项目的类库文件。
struts2_2.16的XML配置文件,自己项目内的配置文件,上传做个备份,怕以后自己忘记了。
Struts配置文件(struts.xml)定义了各个Action和结果页面的映射,使得系统能够根据用户操作跳转到相应的视图。 其次,Spring框架作为整个应用的“胶水”,提供了依赖注入(DI)和面向切面编程(AOP)等功能。在本...