struts中动态方法调用使用通配符
作者:布拉格1973 发布时间:2023-02-01 02:52:43
一、DMI动态方法调用的其中一种改变form表单中action属性的方式已经讲过了。还有两种,一种是改变struts.xml配置文件中action标签中的method属性,来指定执行不同的方法处理不同的业务逻辑;另外一种是使用通配符的方式。改变method属性的方式需要配置多个action,而且这些action定义的绝大部分都是相同的,所以这种定义是相当冗余的。因此,使用通配符就可以在一个action标签中代替多个逻辑处理的Action。
二、示范:(和之前的动态方法调用改变form表单action属性差不多,在struts.xml配置文件上进行了小小的修改。)
要求还是没有变,点击不同的提交按钮提交同一个表单,把不同的业务交给相同的Action处理类去处理。
⒈首先显示一个表单,表单中有两个提交按钮,但分别代表不同的业务。当点击登录时用户登录;当点击注册时用户注册。
⒉用户登录:
⒊用户注册:
具体的代码如下:
⑴、登录注册页面(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="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="登录">
<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 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页面点击了登录按钮,那么就会把表单:中的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 {
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.xml配置文件中action标签的属性中使用,如mthod、class属性,也可以在result标签中使用,如下:
<!--定义一个通用的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中动态方法调用使用通配符网站的支持!
来源:http://www.cnblogs.com/demoMeng/archive/2016/09/07/5849691.html


猜你喜欢
- 1.打开项目主界面,任意打开一个类文件,如MainActivity.java,不要打开布局文件的disign界面2.点击File-->
- for循环和foreach循环的区别首先在这里声明一点,C#和Java这两种语言很相似,尤其是初学的数据类型那一部分,所以这里写的for和f
- 前言Java8 的新特性:Lambda表达式、强大的 Stream API、全新时间日期 API、ConcurrentHashMap、Met
- 图像滤波在opencv中可以有多种实现形式自定义滤波如使用3×3的掩模:对图像进行处理.使用函数filter2D()实现#include&l
- 具体代码如下所示:public class Parent { public static int a = parentStati
- 今天是解决报错的一天,首先在操作Springboot中的时候,有些朋友的yml显示的不是绿叶的图标,或者是配置了之后不生效的问题。第一个解决
- 三种得到LinearInflater的方法a. LayoutInflater inflater = getLayoutInflater();
- 在用maven打包时,出现过如下两个错误:错误1:程序包javax.servlet不存在,程序包javax.servlet.http不存在错
- 1、注解方式,在controller层通过initBinder注解实现@InitBinderpublic void initBinder(H
- 目前 Android 已经不推荐使用下列方式创建 Notification实例:Notification notification = ne
- 一、先明确几个基本概念1、伪随机数:pseudo-random number generators ,简称为:PRNGs,是计算机利用一定的
- 概述新版的音悦台 APP 播放页面交互非常有意思,可以把播放器往下拖动,然后在底部悬浮一个小框,还可以左右拖动,然后回弹的时候也会有相应的效
- Android 版本更替,新的版本带来新的特性,新的方法。新的方法带来许多便利,但无法在低版本系统上运行,如果兼容性处理不恰当,APP在低版
- 引言声明:文中的MPChart代指MPAndroidChart.本文主要讲解LineChart中的三个变种Chart,第一个是渐变的Line
- 本文实例为大家分享了unity实现按页码翻页效果的具体代码,供大家参考,具体内容如下用来做背包 商店的按页翻页功能,先上效果图其中,drag
- 一.OO(面向对象)的设计基础面向对象(OO):就是基于对象概念,以对象为中心,以类和继承为构造机制,充分利用接口和多态提供灵活性,来认识、
- 实例如下:private void Form1_Load(object sender, EventArgs e)
- 项目需要去调用.NET的WebSrevice,本身是Java,研究了半天,终于有些头绪,记下来。1,新建.NET WebService。只在
- 一、滑动验证码生成思路1、随机选择一张图片2、生成滑块起点位置(x, y)3、生成滑块轮廓4、抠出滑块5、将滑块部位去除颜色二、主要方法这里
- C# ping网络IP 实现网络状态检测的方法public string GetHostNameByIp(string&