关于struts分模块开发是的一些个人总结
前几天一直在弄struts模块开发,因为小组几个人要做一个小项目。开始的时候,老是出问题,后来经过不断的努力终于实现了,颇感欣慰。很多时候,并不是你不知道这块知识点,而是,某一方面没有注意到而导致的。鉴于自己所犯的一些错误和 一点见解,写下来,以免更多的朋友犯同样的错误,而影响开发效率。
要应用struts的多模块开发,其实本质上是很简单的。初期开发时,你可以简单的将它理解为就是多了几个文件夹而已。我们所要做的工作是如何在这几个模块之间进行互相的访问资源的问题。struts多模块的设计初衷也正是为了实现这一点,即在团队开发过程,避免不同的开发人员之间对同一文件的同时访问,而造成一些资源访问冲突的问题。好了,原理就不多说了,相信大家都知道,下面说一下我的开发流程。
首先,多模块的开发首先需要解决也是最先需要解决的是config.xml文件的访问问题,在struts引入module以后,很容易的解决了这个问题。你可以在web.xml中进行config.xml进行配置,即可以添加多个config.xml文件。如下:
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>config/login</param-name>
<param-value>/WEB-INF/struts-config-login.xml</param-value>
</init-param>
首先,系统默认的struts-config.xml文件时必须要有的,你可以发现当你第一次访问一个页面的时候,即第一次登陆的时候,系统首先解析的就是struts-config.xml这个默认的文件,struts提供的转发swichaction也是写在这个文件当中的。
然后就是你所定义的其他模块的struts-config.xml文件了,命名格式如上所示。只需在原文件名后加上模块名就行了。注意, <param-name>config/login</param-name>中的login要和你模块文件夹的名字一致,也要和config.xml中的模块名一致才行。系统在解析的时候是根据这个找到你的模块的。好了,配置完这个以后,就可以添加config.xml文件了。
添加完config文件,然后就是建立模块文件夹了,这里要存放你在这个模块当中所用到的所有页面。
这些都做完后,剩下的就是关于配置文件和jsp页面的编写了。配置文件主要是config.xml文件的编写。在默认的config.xml文件中需要写的就是swichaction,即提供转发的action类。如:
<action
path="/tologin"
type="org.apache.struts.actions.SwitchAction"
name="loginForm"
/>
这里要注意type类型的问题,一定要是org.apache.struts.actions.SwitchAction,这是系统的类,而不是你自己建立一个类,让它去继承switchaction类,那样做的话,是无法转发的。我就在这里栽过跟头,大家注意。在你对应模块的config.xml文件中也要有相应的action类,如:
<action
path="/login"
type="com.yourcompany.struts.action.LoginAction"
name="loginForm"
>
<forward name="welcome" contextRelative="true" path="/login/welcome.jsp"></forward>
<forward name="falier" contextRelative="true" path="/login/falier.jsp"></forward>
<forward name="hello" contextRelative="true" path="/login/hello.jsp"></forward>
</action>
这是你自己的action类,用来处理业务需求。需要注意的是此处的loginForm要和默认的config.xml文件中的loginForm是一个才行,否则也会报错。
接下来就是jsp页面的配置了,如下:
<html:form action="/tologin.do?prefix=/login&page=/login.do" method="post">
用户名:<html:text property="username"></html:text>
密码:<html:password property="password"></html:password>
<html:submit>提交</html:submit>
<a href="login/login.do?username=gavin&password=123">welcome</a>
这里有两个,一个是action另一个是超链接。对于超链接是很简单的,也不容易出错,只要是模块名和对应的资源写清楚就可以。容易出错的是action,比如说用户刚登陆的页面,还没有进入到任何模块,这里其实别的只是默认的config.xml中的资源。这是就用到了switchaction了。如上:action后面写的是默认config.xml中的path路径,prefix值得是模块名,也即你web.xml中的模块名,page是相应的资源信息。这样就会经switchaction转发到应有的模块了。但进入某个模块后,就相当于进入了其config。xml文件了,这是你再有请求action的话,可以直接在action后面写你所在模块config.xml文件中的action的path路径了,而不必在如上面那样写了。
这样,struts多模块就配置完了。