有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Struts 2中用于页面加载和表单操作的java操作

为页面加载和表单提交创建不同的操作是一种好的做法吗?比如说,我想查看并注册到一个网站。单击注册链接后,它将进入一个简单的操作,通常会重定向页面和注册表,单击提交按钮,该操作还将处理数据以将其发送到数据库

还是对表单提交使用不同的操作更好


共 (1) 个答案

  1. # 1 楼答案

    对于这种情况,没有真正的“好或坏”。它的复杂性相似,但功能的位置不同。一般来说,我倾向于上很多小班,但还有另一种选择

    我倾向于单操作、多方法,以及区分GET和POST请求的拦截器。拦截器返回GET请求的已知结果(例如,"input"),并允许对POST结果进行正常处理(例如,正常操作调用)

    这将规范化表单处理,并消除在整个应用程序中为简单表单处理场景手动配置多个方法的情况

    使用Convention插件会让这变得不那么有趣,尽管自动操作有点令人愉快:一旦你知道应用程序的GET/POST“秘密”,你就再也不用考虑它了


    针对您的评论:

    不同的功能必须存在于某个地方

    在S2中,有两种方法可以做到这一点:使用多个方法的操作,或多个操作。这就是我认为你的问题所要解决的——哪一个“更好”。(答:视情况而定。)

    下面使用XML配置;注释本质上是一样的

    使用多个动作可能非常简单;其中一个甚至可能是默认操作:

    <action name="login">
      <result>WEB-INF/jsps/login.jsp</result>
    </action>
    

    如果没有表格准备,你就完了。然后,您可以配置一个执行登录的操作:

    <action name="doLogin">
      <result name="input">WEB-INF/jsps/login.jsp</result>
      <result type="redirectAction">home</result>
    </action>
    

    使用多种方法几乎是一样的:

    <!  If LoginAction extends ActionDefault, the "input()" method  >
    <!  is supplied by the base class, and just returns "input".    >
    <action name="login" class="com.foo.bar.LoginAction" method="input">
      <result name="input">WEB-INF/jsps/login.jsp</result>
    </action>
    
    <!  Default action method is "execute()".  >
    <action name="doLogin" class="com.foo.bar.LoginAction">
      <result name="input">WEB-INF/jsps/login.jsp</result>
      <result type="redirectAction">home</result>
    </action>