Struts动态方法调用使用通配符

一、DMI动态方法调用的其中一种改变form表单中action属性的方式已经讲过了。还有两种,一种是改变struts.xml配置文件中action标签中的method属性,来指定执行不同的方法处理不同的业务逻辑;另外一种是使用通配符的方式。改变method属性的方式需要配置多个action,而且这些action定义的绝大部分都是相同的,所以这种定义是相当冗余的。因此,使用通配符就可以在一个action标签中代替多个逻辑处理的Action。

二、示范:(和之前的动态方法调用改变form表单action属性差不多,在struts.xml配置文件上进行了小小的修改。)

要求还是没有变,点击不同的提交按钮提交同一个表单,把不同的业务交给相同的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="https://www.linuxidc.com/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">
                    姓名:<input type="text" /><br><br>
                    密码:<input type="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配置文件的代码

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">


<struts>
        <package extends="struts-default">
           
            <action method="{1}">
                    <result>WEB-INF/jsp/userLogin.jsp</result>
                    <result>WEB-INF/jsp/userCreate.jsp</result>
            </action>
           
        </package>
   
</struts>
   
   

解析:

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

 2、意思就是当用户在index.jsp页面点击了登录按钮,那么就会把表单:中的action="Login"请求传给struts,因为在struts.xml中进行了通配符的配置,所以就把 "*"当成是"Login",也就是name="Login"。而后面的method值为:{1}代表的是第一个"*",也就是metho="Login"。所以struts会去action.Action类中寻找到Login方法并且调用。如果用户点击了注册按钮,那么也和点击登录按钮是一样流程了。具体可以自己写一个小例子感受一下。

⑶、Action类的代码:

package action;

import com.opensymphony.xwork2.ActionSupport;

public class Action extends ActionSupport {

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/5a32517b16d203b82c4559f994c7c336.html