新手,想问下struts2的Action应该如何设计比如说数据库中有一张user表。我的首页users.jsp要以分页的形式显示所有user。每一条user后都跟着“查看”,“删除”,“修改”三个操作。
点击后进入view.jsp、delete.jsp或edit.jsp页面,这三个页面都要显示该user的信息,并有相应的修改、删除、返回按钮,点击后进行相应的数据库操作。现在我比较晕的是我该怎么设计这个Action。我的想法是做两个Action,一个用来处理主页的请求(getList()以及分页等),一个用来处理查看、修改、删除、增加的请求。但是我问了一下别人,他建议我写在一个Action里(设置method属性)。但是如此一来Action中就要声明很多的变量,而每个请求函数中基本上只用到其中的一部分变量。所以现在整个逻辑都混乱掉了。恳请哪位经验丰富的人帮帮我,谢谢

解决方案 »

  1.   

    就是用method作为action的参数啊,action的父类中getParameter("method"),获取你要执行的子类方法名称,然后通过java反射的处理,执行子类中的相应的方法。BeanUtils中的常用的反射类:BeanUtils,PropertyUtils,MethodUtils
      

  2.   

    这个我大约知道一些。我现在是在写这个Action类,不知到如何写了,是写一个Action类响应所有页面的请求,还是把每个页面的请求都写一个Action类进行实现...
      

  3.   


    我的建议是 用包来分离逻辑模块  然后在一个逻辑包里一个请求一个action,我这样是为了以后修改和扩展时看代码清楚点,我也是初学者,以上只是我自己的想法,希望对你有用
      

  4.   

    <package name="struts2" extends="struts-default">

    <action name="users_*" class="org.struts.action.UsersAction" method="{1}">
    <result name="result">/result.jsp</result>
    <result name="insert">/insert.jsp</result>
    <result name="update">/update.jsp</result>
    </action>
    </package>比如下面是添加链接
    <s:url id="iurl" action="users_initInsert">
    </s:url>
    <s:a href="%{iurl}">insert</s:a>下面是修改链接
    <s:url id="furl" action="users_findById">
    <s:param name="users.usersId" value="usersId"></s:param>
    </s:url>
    <s:a href="%{furl}">update</s:a>
      

  5.   

    问了一些人,他们都倾向于写在一个Action里,我查看了下struts2的示例代码也是如此写的,基本上每次Action响应都会有不用的变量。谢谢你了~~