1.RequestProcessor
1)解决多个人使用一个映射文件的问题.
2)当浏览器访问服务器,调用serlvet的时候,serlvet会去找config.xml映射文件.在这里之间增加一个RequestProcessor来转到分模块的config.xml上.
过程
1)在web.xml里增加一个<init-param>,name为主serlvet的下一层,比如config/ma.
2)写Action,配置自己config.xml
3)配置自己的config.xml,写法跟主config.xml一样.
4)浏览器访问的时候以模块名/xxx.do开头.
区分是否需要登陆的页面
1)第一个办法是写一个过滤器拦截在serlvet前面.
2)第二个办法就是把需要登陆的页面放在一个RequestProcessor模块里.
过程
1)重写RequestProcessor类,重写process方法(这个方法被serlvet调用).
2)重写该方法的时候应该写上super.process().然后加上自己的代码.
3)在自己的config.xml里增加一个<controller processorClass>元素,指定RequestProcessor在哪里(若不指定就是框架自己的RequestProcessor)
2.一个Actiong多个execute方法
1.用DispatchAction.
1)新建一个Action,继承DispatchAction.然后写上多个execute,但是名字不要相同.
2)在config.xml里parameter属性里写上"option"类似的关键字(只需要一个Action元素).
3)在浏览器上访问的时候应该是/xxx.do?option=方法名.
2.MappingDispatchAction
1)其他一样,主要是config.xml里根据方法的个数来创建多个Action元素.
2)每个元素的path肯定不一样,但type是一样的.parameter写的是方法名.
3)访问的时候直接是path.do.
3.原理
这两个类都是继承Action类,在execute里做手脚.通过parameter属性和反射方法来获得相应的方法名.
4.区别
区别在于,MappingDispatchAction虽然多写Action元素,但是可以自由的定义forward的元素.推荐使用
1)解决多个人使用一个映射文件的问题.
2)当浏览器访问服务器,调用serlvet的时候,serlvet会去找config.xml映射文件.在这里之间增加一个RequestProcessor来转到分模块的config.xml上.
过程
1)在web.xml里增加一个<init-param>,name为主serlvet的下一层,比如config/ma.
2)写Action,配置自己config.xml
3)配置自己的config.xml,写法跟主config.xml一样.
4)浏览器访问的时候以模块名/xxx.do开头.
区分是否需要登陆的页面
1)第一个办法是写一个过滤器拦截在serlvet前面.
2)第二个办法就是把需要登陆的页面放在一个RequestProcessor模块里.
过程
1)重写RequestProcessor类,重写process方法(这个方法被serlvet调用).
2)重写该方法的时候应该写上super.process().然后加上自己的代码.
3)在自己的config.xml里增加一个<controller processorClass>元素,指定RequestProcessor在哪里(若不指定就是框架自己的RequestProcessor)
2.一个Actiong多个execute方法
1.用DispatchAction.
1)新建一个Action,继承DispatchAction.然后写上多个execute,但是名字不要相同.
2)在config.xml里parameter属性里写上"option"类似的关键字(只需要一个Action元素).
3)在浏览器上访问的时候应该是/xxx.do?option=方法名.
2.MappingDispatchAction
1)其他一样,主要是config.xml里根据方法的个数来创建多个Action元素.
2)每个元素的path肯定不一样,但type是一样的.parameter写的是方法名.
3)访问的时候直接是path.do.
3.原理
这两个类都是继承Action类,在execute里做手脚.通过parameter属性和反射方法来获得相应的方法名.
4.区别
区别在于,MappingDispatchAction虽然多写Action元素,但是可以自由的定义forward的元素.推荐使用