论坛首页 Java企业应用论坛

把我自己用的脚手架项目开放出来

浏览 32470 次
该帖已经被评为良好帖
作者 正文
   发表时间:2006-04-06  
hongliang 写道
robbin 写道
简单扫了一眼
LoginAction在Java代码里面写中文字符串,一大忌,你试试部署到某字符集设定不是中文的操作系统上面看看;
从ActionContext里面取Session不优雅,建议看看SessionAware接口;
异常类应该继承自RuntimeException,不要强制层层捕获;


多谢Robbin指教

Action里写中文虽然不太好,不过我也不想用ResourceBundle,非常反感native2ascii这个步骤。现在看来虽然非常不优雅,但也不是什么大问题。只要编译的时候指定encoding为utf-8,执行期间操作系统字符集是不是中文没关系,这个已经验证过。

ActionContext里面取Session的确不优雅,不过我也没找到好的办法,毕竟我是在Interceptor里取Session,即使继承SessionAware接口也没用。。。

关于业务逻辑处理时的一些错误情况的处理我暂时没找到更好的方法,我去看看你的脚手架。

看到叻,呵呵,不全呀,期待完全版~~~


用SessionAware接口,  webwork通过interceptor对 setSession(x) 中的x赋值. 在webwork-default.xml中
<interceptor name="servlet-config" class="com.opensymphony.webwork.interceptor.ServletConfigInterceptor"/>
在ServletConfigInterceptor.java文件中,
       
   if (action instanceof SessionAware); {
            ((SessionAware); action);.setSession(context.getSession(););;
   }


至于exception,  我想robbin要说大概是, 通过继承RuntimeException, 就不用层层在每一个调用方法中去catch your checked exception. 你可以定制你的exception, 但是your exception最好来自RuntimeException, 编译器可以自已处理, 你不心但心在中间的层层方法调用中是否catch, 然后你在最后你想要catch 你的exception中去catch 你的例外, 我想定制的exception目的应该是对log, test和封装一些不友好的, 太明细的exeption方面来说的好处吧.
0 请登录后投票
   发表时间:2006-04-06  
关于exception这块我理解叻,谢谢bruce

SessionAware接口我知道,只是我取Session的地方是个Interceptor,我试叻一下,只有Action去实现SessionAware才有意义,对于Interceptor是不起作用的,所以我只能用ActionContext来取。

实际上这个脚手架我现在已经不怎么用叻,我正在筹划第二个版本的脚手架,基于AJAX的,表现层工作从FreeMarker层直接向前推到HTML/JavaScript层,Service层也简洁叻许多(连RuntimeException也没用)
0 请登录后投票
   发表时间:2006-04-06  
哦,强烈推荐第二版,不知道这里面的
“表现层工作从FreeMarker层直接向前推到HTML/JavaScript层”
是什么意思呢?能透漏一点么??
0 请登录后投票
   发表时间:2006-04-07  
hongliang 写道
关于exception这块我理解叻,谢谢bruce

SessionAware接口我知道,只是我取Session的地方是个Interceptor,我试叻一下,只有Action去实现SessionAware才有意义,对于Interceptor是不起作用的,所以我只能用ActionContext来取。

实际上这个脚手架我现在已经不怎么用叻,我正在筹划第二个版本的脚手架,基于AJAX的,表现层工作从FreeMarker层直接向前推到HTML/JavaScript层,Service层也简洁叻许多(连RuntimeException也没用)


希望早日看到你用AJAX做的前端清楚的结构, 表现, 行为三层结构. 目前, 我还在用JSP + JavaBean + JS + 自已的MC架构. 对于复杂的处理, JSP,JavaBean,JS不得不混在一起, 如果用了AJAX,  我想前端的结构层(HTML/XHTML), 表现层(CSS)通过id, class等建立联系,   行为层(JS), 结构层(XHTML)通过classname, getAttribute, getElementsByTag, getElementsByID等建立联系. 也可以在表现层(CSS)中, 通过HTC与行为层(JS)建立联系 (IE的做法).  对于数据的提取, 通过AJAX在行为层(JS)来做. 但是如何去做呢? 我想 还得等你的第二个版本的脚手架
0 请登录后投票
   发表时间:2006-04-07  
我的第二个版本的脚手架大概是这样的,后台保持WebWork2+Spring+Hibernate+FreeMarker结构不变,只是FreeMarker渲染的不再是页面,而是JavaScript对象,这个js对象里含有表单提交后服务器返回的信息,如Error Code等。前台HTML页面拿到这个js对象后,直接在页面里由js输出相应的结果信息。只不过我写叻一些.js文件,封装叻一些常用的功能。

举个例子,表单在html里是这样一段代码:

<form id="l" method="post" action="login.action">
您的称呼:
<input type="text" value="" maxlength="15" size="20" name="username" id="username"/>
<br/>
<span id="info_u"></span>
<br/>
您的密码:
<input type="password" value="" maxlength="12" size="20" name="password" id="password"/>
<br/>
<span id="info_p"></span>
<br/>
<input type="submit" value="登录!"/>
<span id="info_l"></span>
</form>


除叻那些id是info_开头的<span>,并无特别之处。
但是在html页面前,引入叻一个js文件:

<script language="javascript" src="/js/form-init.js"></script>


这个js文件会自动查找当前页面内所有的form,将onsubmit事件重新定义,使用AJAX方式提交表单。并且自动将所有的可输入表单域注册onblur事件,在用户输入表单时即判断用户输入的内容格式是否正确,增强用户体验。

说到验证,比如上面的那个表单,只要增加这样一段javascript代码:
var _validate_l = {
    usernameRex: /[a-z][a-z_0-9]{2,14}/,
    usernameInfo: "用户名格式正确",
    usernameErr: "请填写您的名字,长度不能小于3位,必须是以小写英文字母开头,只能使用小写英文、数字和下划线,长度不能超过15位",
    passwordRex: /.{5,12}/,
    passwordInfo: "密码格式正确",
    passwordErr: "为叻安全起见,请填写好您的密码,您的密码不要小于5位超过12位"
};


就可以叻。

第二个版本的脚手架我完善的差不多后就会放出来,到时候希望能跟大家一起讨论讨论:)
0 请登录后投票
   发表时间:2006-04-07  
生成js代码??这个意思就是说ajax返回的不是xml而是js片段么?
0 请登录后投票
   发表时间:2006-04-07  
恩,对。我不太喜欢返回xml,因为:

Java Object -&gt; XML -&gt; JavaScript

服务器要生成xml,客户端还要拿javascript去解析,太麻烦,不如直接由服务器生成javascript对象来的爽快。
0 请登录后投票
   发表时间:2006-04-07  
hongliang 写道


Action里写中文虽然不太好,不过我也不想用ResourceBundle,非常反感native2ascii这个步骤。

反正用ant+build.xml就可以解决的……
0 请登录后投票
   发表时间:2006-04-07  
dwangel 写道
反正用ant+build.xml就可以解决的……


开发调试时我不用ant的,只在最后部署在生产环境上才用。因为开发调试时用的是嵌入式Tomcat,以Debug模式运行,改个东西连重启都不用。。。
0 请登录后投票
   发表时间:2006-04-07  
hongliang 写道
恩,对。我不太喜欢返回xml,因为:

Java Object -&gt; XML -&gt; JavaScript

服务器要生成xml,客户端还要拿javascript去解析,太麻烦,不如直接由服务器生成javascript对象来的爽快。


完全可以xmlDom+XPath的方式轻松实现xml的解析。
服务器端生成xml是不是比生成js更加简单方便一点?
充分利用客户端解析xml的便利会不会更加清爽方便一些呢?
0 请登录后投票
论坛首页 Java企业应用版

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