struts初体验

      这次是第一次自己写一个新struts的模块,以前都是在别人基础上修改,下边总结一下遇到的问题及解决。

        用的版本是struts1.1。

首先,发现一加上<html:form>标签,就会出错,但网页和服务器上都没有发现异常,只是显示为空白页,后来发现是因为原项目框架中用了重载了Filter的doFilter函数,把异常写进了log,把doFilter的异常捕抓去掉,报出的异常是:doFilter的一些介绍 http://www.matrix.org.cn/resource/article/1/1266.html

org.apache.jasper.JasperException: Cannot retrieve definition for form bean null

解决方法:后来发现确实是<form:bean>和<action>两者间的name属性不一致,修改成一样后正常。

2,异常:No action instance for path /xxxx could be created

解决方法:配置文件struts-config.xml中Action的类名与实际不一致。

这两个简单的问题,几乎卡了我一天,首先是没有报错,后来检查拼写,配置xml文件一定要注意字母的拼写,xml中是大小写敏感的。

3,异常:

javax.servlet.jsp.JspException: Exception creating bean of class xxx.xxxActionForm: {1}

解决方法:发现是包名出错,本来应为,com.sjtu.happier.xxxActionForm,在配置文件中,误为com.sjtu.xxxActionForm

4,异常:

Path zoneMaintain.jsp does not start with a "/" character

解决方法;在struts-config.xml文件中<forward name="success" path="zoneMaintain.jsp" />改为<forward name="success" path="/zoneMaintain.jsp" />

5,问题:关于ActionForm的生存周期问题

默认情况下,ActionForm的scope似乎是被设置成session,因此最好在每次提交时,调用reset方法,或者用session.removeAttribute(配置文件中ActionForm的名字),把ACtionForm从session中删除,否则,得到的ActionForm会是一般新一般旧,但对于scope为request的情况,文章说不用考虑reset,但我发现并不正确,似乎调用reset方法对ActionForm无效,而且,就算是有reset方法,也不是每次载入新页面时就会被调用,具体原因还要再试试,到时了解透再发文章。

一般错误可以在以下找到:http://www.blogjava.net/soochow_hhb/archive/2005/06/11/5905.aspx

最后说一下使用struts的一些技巧:

1,为ActionForm设置reset函数并适时调用,默认情况下,ActionForm的生命周期是session,因此如果不调用reset初始化,往往会导致半旧半新数据,具体如下文:http://www.80x86.cn/blog/blogview.asp?logID=1307

2,可以在定义一个interface作为网页上标记的常量,例如:

<logic:notEmpty name="<%=Constants.TAG_SEARCH_RESULT%>">

3,另外发现,weblogic和Tomcat上部署程序,会有区别,在Tomcat能跑得,在Weblogic会有问题,以后有空把两者区别总结一下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值