论坛首页 Java企业应用论坛

xyz,pojo的mvc框架,替代webwork一Action多CURD操作干净实现

浏览 26579 次
该帖已经被评为良好帖
作者 正文
   发表时间:2006-10-20  
zhouxuanyi 写道
我们用的最新的webwork2.2.4的xwork还是需要实现接口的


可能是我看没清楚, 不过实现一个接口好像也不是那么难以接受

zhouxuanyi 写道
就是不想使用propertydriven啊,那样必须user.name,user.passwd,而支持多个java对象model driven时,可以name,passwd啊


个人觉得 user.name 比 name 更好, 描述层次关系更清楚, 更何况多层对象的时候你还是要用 a.b.c

zhouxuanyi 写道
对,就是由于放到一起会导致结构混乱


操作 -> action, 实在不明白你说的混乱是什么意思
0 请登录后投票
   发表时间:2006-10-20  
对,第二个问题就是个人喜好问题,我这个做法只是给用户多了一个选择,其实用户还用property driven做两个model driven也可以,
第二个的结构混乱是你所说的,把相关的业务放在一个Action里,用xxxAction!method来调用,就会造成混乱,你分不清那个property是那个method的,那个是从request读进来的,哪个是输出到OgnlStack里的,当然,绝大部分是由于用户使用ide生成get、set方法时都选了,而action输入只需要set,输出只需要get,这也是一个问题
public FooAction extends ActionSupport{
    private String foo;
    private int bbb;
    //两个的getset方法
    public void a(){...}
    public void b(){...}
}
请问你能分清foo是a的还是b的吗?
  
0 请登录后投票
   发表时间:2006-10-20  
还有,如果fooAction相关的拦截器有3个,a使用a,c,b使用b,c,你怎么做,可能你只有说写两个Action了,或者在拦截器里面加if。。else了,但是a,b都是一个业务的两个操作,比如,一个是读取,一个是更改,读取不需要权限控制,更改需要,而你的权限是用拦截器做的,为了权限配置方便,你也需要写两个Action,这就是xwork的不足,当然,并不是说我不喜欢xwork,毕竟,在以上几种框架,我最喜欢的还是xwork,在项目中也做了几个一两百表的东西,但是,不能说他完全ok啊
0 请登录后投票
   发表时间:2006-11-09  
xyz Sample发布了!
http://sourceforge.net/project/showfiles.php?group_id=179211&package_id=207885
0 请登录后投票
   发表时间:2006-11-09  
使用xyz开发web应用非常简单,首先,导入xyz.jar,xyzExtends.jar
然后,写一个简单的java类,添加Read注解就能读取request的参数,添加Out注解将field值放到request里面
/**
*this is a very simple logic,only read parameter from request
*and then translate it into request attribute
*/
package sample.logic;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import xyz.frame.annotations.Out;
import xyz.frame.annotations.Read;

public class FirstLogic {
	private static final Log LOG = LogFactory.getLog(FirstLogic.class);

	@Read
	@Out
	private String firstParameter;

	public void showFirstParameter() {
		LOG.debug("firstParameter:"+firstParameter);
	}

}
0 请登录后投票
   发表时间:2006-11-09  
由于xyz是根据命名规范查找view页面的,所以
sample.logic.FirstLogic的showFirstParameter()的结果页面就是
/sample/logic/FirstLogic!showFirstParameter.ok.jsp:
<form action="FirstLogic!showFirstParameter.xyz">
     Type your first parameter:<input name="firstParameter"/>
     <input type=submit />
</form>
<br>

firstParameter=<font color=red><%=request.getAttribute("firstParameter")%></font>

如果想调用他:url是/sample/logic/FirstLogic!showFirstParameter.xyz

这是由于web.xml的配置:
	<servlet>
		<servlet-name>xyz</servlet-name>
		<servlet-class>
			xyz.frame.web.ApplicationServlet
		</servlet-class>
		<load-on-startup>0</load-on-startup>
	</servlet>

	<servlet-mapping>
		<servlet-name>xyz</servlet-name>
		<url-pattern>*.xyz</url-pattern>
	</servlet-mapping>
0 请登录后投票
   发表时间:2006-11-09  
如果想读取同名参数数组:
也好办:

/**
*this is a logic to read array parameter from request
*and then translate them into request attribute
*/
package sample.logic;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import xyz.frame.annotations.Out;
import xyz.frame.annotations.Read;

public class MultiParaLogic {
	private static final Log LOG = LogFactory.getLog(MultiParaLogic.class);

	@Read
	@Out
	private String[] test;
	
	public void showTest(){
		for(int i=0,len=test.length;i<len;i++){
			LOG.debug("test"+i+"---"+test[i]);
		}
	}
}
0 请登录后投票
   发表时间:2006-11-09  
弱弱的问:JDK1.4怎么白相?偶太懒了,不高兴重装机器,至今还用JDK1.4呢。

写注解和写配置有啥本质区别?传说中的0配置是不是可以连写注解都不用?
0 请登录后投票
   发表时间:2006-11-09  
忘了提一句,ModelDriven的问题已经被讨论了好多回了,不晓得你如此喜欢ModelDriven,哪能白相嵌套对象的赋值?OGNL在哪里用到?
0 请登录后投票
   发表时间:2006-11-09  
downpour 写道
弱弱的问:JDK1.4怎么白相?偶太懒了,不高兴重装机器,至今还用JDK1.4呢。
写注解和写配置有啥本质区别?传说中的0配置是不是可以连写注解都不用?

写注解和写配置,我认为没有本质区别,不过写配置是编译后的,可以动态改变,写注解是编译前的,不可以动态改变,事实上如果将@Read换成set,@Out换成get,如果view固定为一种,比如jsp的话,注解是可以不要的,事实上,vrport就是这样做的,像webwork一样,但是那样带来的多个method一起的action的field混淆不清,所以,xyz还是以注解代替set/get
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics