星空网 > 软件开发 > Java

struts之动态方法调用使用通配符

一、DMI动态方法调用的其中一种改变form表单中action属性的方式已经讲过了。还有两种,一种是改变struts.

 

 

二、示范:(和之前的动态方法调用改变form表单action属性差不多,在struts.

    要求还是没有变,点击不同的提交按钮提交同一个表单,把不同的业务交给相同的Action处理类去处理。

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

      struts之动态方法调用使用通配符

 

     

 
    ⒉用户登录:

           struts之动态方法调用使用通配符

   
    ⒊用户注册:  

          struts之动态方法调用使用通配符

 

   具体的代码如下:

    ⑴、登录注册页面(index.jsp):

<%@ 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='/images/loading.gif' data-original="js/jquery-1.7.2.js"></script><title>index</title><script type="text/javascript">    $(function(){      $("input:eq(3)").click(function(){        /*动态修改表单中的action属性值,实现把注册的请求提交给Action类 */          $("#form").attr("action","Create");      });          });</script></head><body>      <form action="Login" 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.

      

<?DOCTYPE struts PUBLIC  "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"  "http://struts.apache.org/dtds/struts-2.3.dtd"><struts>    <package name="myP" extends="struts-default">            <action name="*" class="action.Action" method="{1}">          <result name="userLogin">WEB-INF/jsp/userLogin.jsp</result>          <result name="userCreate">WEB-INF/jsp/userCreate.jsp</result>      </action>          </package>  </struts>    

 

      解析:

        1、在这份配置文件中,对action标签中的name属性配置了一个通配符: "*",后面的method属性值则为: {1}。

        2、意思就是当用户在index.jsp页面点击了登录按钮,那么就会把表单:struts之动态方法调用使用通配符中的action="Login"请求传给struts,因为在struts. 

    

       ⑶、Action类的代码:

package action;import com.opensymphony.xwork2.ActionSupport;public class Action extends ActionSupport {      private String name;public String getName() {    return name;  }  public void setName(String name) {    this.name = name;  }public String Login(){        System.out.println("用户登录");    return "userLogin";  }    public String Create(){        System.out.println("用户注册");    return "userCreate";  }  }

 

 


  当然,通配符的使用不仅仅是只有这么简单的一个,还可能是有: "*-*"、"Book_*" 等,这些通配符可以在struts.

  

<!--定义一个通用的action标签--><action name="*">     <!--使用表达式定义Result标签-->     <result>/WEB-INF/jsp/{1}.jsp</result></action>

 

 

 

     在上面的action定义中,action的name是一个*,那么就是可以匹配任意的Action,所有的请求都通过这个action来处理,因为这个action没有class属性,所以使用ActionSupport类来处理,因为没有method属性,所以默认是execute方法并且返回success字符串,而且在result标签中name属性默认是success,所以Action总是直接返回result中指定的jsp资源,因此上面的action定义的含义是:如果用户请求a.action那么就跳转到a.jsp;如果请求b.action就跳转到b.jsp。 

     

 




原标题:struts之动态方法调用使用通配符

关键词:Struts

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流