zoukankan      html  css  js  c++  java
  • struts之动态方法调用改变表单action属性

     

    一、动态方法调用(DMI:Dynamic Method Invocation)

       ⒈struts2中同样提供了这个包含多个逻辑业处理的Action,这样就可以在一个Action中进行多个业务逻辑处理。例如:当用户通过不同的提交按钮来提交同一个表单的时候,系统通过不同的方法来处理用户不同的请求,这时候就需要让同一个Action中包含有多个控制处理的逻辑。

       ⒉动态方法调用有:

          ①、改变struts.xml中的action中的method属性。

          ②、改变form表单中的action属性来改变不同提交的请求逻辑。

          ③、使用通配符。

    二、简单示例(改变form表单中的action属性):

       ①、首先显示一个表单,表单中有两个提交按钮,但分别代表不同的业务。当点击登录时用户登录;当点击注册时用户注册。

       

       ②、用户登录:

       

       ③、用户注册:  

       

       详细代码(本例子建立在struts2的基础上的简单例子,所以struts2的搭建在这里不详细演示,如果对struts2有疑问请求看:http://www.cnblogs.com/demoMeng/p/5841976.html):

        ①、登录注册的页面(index.jsp):DMI中改变form表单中action属性的方式的就下面的脚本段是关键,其他的struts.xml文件只要进行相关的配置即可。

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <script src="js/jquery-1.7.2.js"></script> <title>index</title>
    <script type="text/javascript"> $(function(){ $("input:eq(3)").click(function(){   //获取表单并且改变action的属性值 $("#form").attr("action","userCreate"); }); }); </script> </head> <body> <form action="userLogin" method="post" id="form"> 姓名:<input type="text" name="name" /><br><br> 密码:<input type="password" name="password" /><br><br> <input type="submit" value="登录">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <input type="submit" value="注册"> </form> </body> </html>

         ②、struts.xml:配置文件

           

    <struts>
            <package name="myP" extends="struts-default">
                <action name="in" class="action.Action" method="go">
                        <result name="login">WEB-INF/jsp/index.jsp</result>
                </action>
                <action name="userLogin" class="action.Action" method="test">
                        <result name="userLogin">WEB-INF/jsp/userLogin.jsp</result>
                </action>
                <action name="userCreate" class="action.Action" method="create">
                        <result name="userCreate">WEB-INF/jsp/userCreate.jsp</result>
                </action>
            </package>
        
    </struts>

          

         ③、Action类:

          

    package action;
    
    import com.opensymphony.xwork2.ActionSupport;
    
    public class Action extends ActionSupport {
    
        
        
        private String name;
        private String password;
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getPassword() {
            return password;
        }
        public void setPassword(String password) {
            this.password = password;
        }
        
        
        public String go(){
            System.out.println("去登录注册页面!!");
            return "login";
        }
        
        public String test(){
            
            System.out.println("用户登录");
            return "userLogin";
        }
        
        public String create(){
            
            System.out.println("用户注册");
            return "userCreate";
        }
        
    }

        


       本例子只是简单的DMI中的一种方式,没有加入过多的业务逻辑处理如:用户登录是否正确并且符合条件。只是一个简单示例,具体实战中需要使用到的业务需要进一步修改分析和完善,谢谢浏览。

         

  • 相关阅读:
    重构27-Remove God Classes(去掉神类)
    重构25-Introduce Design By Contract checks(契约式设计)
    重构24-Remove Arrowhead Antipattern(去掉箭头反模式)
    重构23-Introduce Parameter Object(参数对象)
    重构22-Break Method(重构方法)
    重构19-Extract Factory Class(提取工厂类)
    重构20-Extract Subclass(提取父类)
    重构21-Collapse Hierarchy(去掉层级)
    重构15-Remove Duplication(删除重复)
    重构16-Encapsulate Conditional(封装条件)
  • 原文地址:https://www.cnblogs.com/demoMeng/p/5848674.html
Copyright © 2011-2022 走看看