一个小型Struts系统开发过程中的小技巧

本文介绍了使用Struts框架及前端JavaScript进行页面元素显示隐藏的方法,探讨了如何在ActionForm中设置默认值,并深入讨论了Struts Bean标签的使用,同时涉及了Java中对象创建与类设计模式等内容。

使用JavaScript进行页面某部分显示/隐藏操作的方法:

document.all.某部分的id.style.display=none(隐藏)或者block(显示)

设定Text域默认值的方法,只需要在ActionForm中,在相应的field声明时赋上默认值就可以了。比如:private String userName = “default name”;

<o:p> </o:p>

StrutsBean标签中,bean:define用来定义一个变量,它可以说是<jsp:useBean><jsp:setProperty>的合成。而bean:write则相当于<jsp:getProperty>

 

Java里,像Object a = new String();这样的语句是成立的(其实这是基本的继承的知识)。这个成立使得Factory Method成为可能。

<o:p> </o:p>

都是静态公有函数的类,如果要防止实例化,可以:

1.将类写成abstract

2.将构造函数写成private

<o:p> </o:p>

<logic:messagesPresent>标签可以判断当前页中有没有相关的message/errors消息存在。并且,这个标签还可以指定其所对应的域,这使得我们可以用message/error消息作为一些标志(flag)。用法, 例如:

<logic:messagesPresent property="empName"><bean:define id="style" value="display:block"/></logic:messagesPresent>

如果页面中有相对于empName的消息存在,中间的Bean定义才会进行。

<o:p> </o:p>

<o:p> </o:p>

优快云上提问,得到了getAttribute的替代方法,其实很简单,很简单。。。例如:

<bean:define id="bean_id" name="attribute_name" scope="request"/><o:p></o:p>

这样,相当于声明了Object bean_id = request.getAttribute(“attribute_name”);

改了几个数据库操作的地方。发现preparedStatement比较适合在参数数不怎么变化的时候用。而最通常的Statement,在参数数很可能会变(比如多条件搜索)时,就比前者方便很多了。

Oracle中,用PreparedStatment,设置参数时,要设某个域为空似乎有点麻烦。。。其实加入判断,当值为null或者“”时,只要使用setNull就可以了。

<o:p> </o:p>

另外发现,在JSP里,当某个域(如Text域)被标记为:diabled=”true”时,提交时它的值似乎就无法取到。必须与<html:hidden>配合使用。

<o:p> </o:p>

接下来使用DispatchAction作左边框的跳转链接。过程中发现,在struts-config.xml中配置的ActionMapping,如果要在链接地址里用,比如加.do,比如:

<html:link page="/dispatch.do?direction=emp"><bean:message key="mainpage.sidebar.emp"/></html:link><o:p></o:p>

而在<html:form>action里,这个.do加不加都可以。。。。

<o:p> </o:p>

在Struts的JSP页面中,如果有标签重叠(嵌套,比如某个标签的value用<bean:write>来赋值)是不行的。只有用<%= %>什么的了

Filter作安全验证。

主要是doFilter函数。即如果检查失败,那么就用sendRedirect转到登陆页面。如果成功,就用filterChain.doFilter(request, response);将请求发送到下一个过滤器。其中碰到了一个死循环的问题。问题不大,不过需要注意的是,在用sendRedirect发送到下个页面的时候,Filter也会起作用。所以如果sendRedirect的目标和过滤内容发生问题,就会有死循环。

测试各个模块时发现,首先,将有类似属性的Bean整合在一起确实不是好事。初期没有发觉,到后来,会牵涉到很多问题。(耦合+

另外,为了系统效率,将一个Session用在很多地方也不可取。在可调试性上出现了很多问题;而且,会有意想不到的问题。 特别是Session里同一个Key对应的内容类型不一样时。。。。

<o:p> </o:p>

在系统测试时,必须测试用户可能采取的多种操作。比如,某些动作,做了一半,用户按“Back”按钮,系统会不会出问题。。。。

<o:p></o:p>

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值