Struts2-Action接受参数方式、method属性使用及通配符的配置
一、Action接受参数的方式
1、属性方式接收
首先编写一个用于上传参数的页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>用户登录</title>
</head>
<body>
<h1>用户登录</h1>
<form action="Login.action" method="post">
<table>
<tr>
<td>用户名:</td><td><input type="text" name="username"></td>
</tr>
<tr>
<td>密码:</td><td><input type="password" name="password"></td>
</tr>
<tr>
<td colspan="2" style="text-align: center"><input type="submit" value="登录"></td>
</tr>
</table>
</form>
</body>
</html>
action的xml配置
<action name="Login" class="LoginAction">
<result name="success">/WEB-INF/jsp/success.jsp</result>
<result name="login">/index.jsp</result>
</action>
此form的“action”的值必须和xml配置的acting的“name”一样,input的“name”的值和LoginAction的属性名一致
成功跳转的页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登录成功</title>
</head>
<body>
<h1>${username}登录成功!</h1>
</body>
</html>
使用的EL表达式也要和action类的属性名称一致
action类代码
public class LoginAction extends ActionSupport {
private String username;//用户名-必须与页面请求的对应表单name值相同
private String password;//密码-必须与页面请求的对应表单name值相同
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String execute() throws Exception {
if (username.equals("admin") && password.equals("123456")) {
return SUCCESS;
} else {
return LOGIN;
}
}
}
必须要设置属性的get,set方法
2、使用JavaBean方式接收
请求页面
<form action="JavaBean.action" method="post">
<table>
<tr>
<td>用户名:</td><td><input type="text" name="user.loginName"></td>
</tr>
<tr>
<td>密码:</td><td><input type="password" name="user.password"></td>
</tr>
<tr>
<td colspan="2" style="text-align: center"><input type="submit" value="登录"></td>
</tr>
</table>
</form>
aciton配置
<action name="JavaBean" class="UserAction">
<result name="success">/WEB-INF/jsp/success1.jsp</result>
<result name="login">/index1.jsp</result>
</action>
JavaBean代码
public class User {
private String loginName;
private String password;
public String getLoginName() {
return loginName;
}
public void setLoginName(String loginName) {
this.loginName = loginName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
action类代码
public class UserAction extends ActionSupport {
private User user;//JavaBean对象-提交页面的user.loginname表示此属性名及此对象的内部属性名
@Override
public String execute() throws Exception {
System.out.println(this.user.getLoginName() + "|" + this.user.getPassword());
if ("admin".equals(user.getLoginName()) && "123456".equals(user.getPassword())) {
return SUCCESS;
} else {
return LOGIN;
}
}
//必须设置get和set方法
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
请求成功页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登录成功</title>
</head>
<body>
<h1>${user.loginName}登录成功JavaBean!</h1>
</body>
</html>
3、使用ModelDriven方式接收参数
请求页面
<form action="ModelDriven.action" method="post">
<table>
<tr>
<td>用户名:</td><td><input type="text" name="loginName"></td>
</tr>
<tr>
<td>密码:</td><td><input type="password" name="password"></td>
</tr>
<tr>
<td colspan="2" style="text-align: center"><input type="submit" value="登录"></td>
</tr>
</table>
</form>
使用ModelDriven可以直接使用javabean的属性名称
action配置
<action name="ModelDriven" class="ModelDrivenAction">
<result name="success">/WEB-INF/jsp/success2.jsp</result>
<result name="login">/index2.jsp</result>
</action>
action类代码(JavaBean代码同上略)
public class ModelDrivenAction extends ActionSupport implements ModelDriven<User> {
private User user;
@Override
public User getModel() {
//先支持此方法赋值,ModelDriven是通过getModel方法获取action中JavaBean对象,然后将用户提交数据赋值到此对象内
//必须手动创建javabean对象,不需要设置get,set放过
user = new User();
user.setLoginName("测试");
return user;
}
@Override
public String execute() throws Exception {
System.out.println(this.user.getLoginName() + "|" + this.user.getPassword());
if ("admin".equals(user.getLoginName()) && "123456".equals(user.getPassword())) {
return SUCCESS;
} else {
return LOGIN;
}
}
}
请求成功页面及输出结果
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登录成功</title>
</head>
<body>
<h1>${loginName}登录成功ModelDriven!</h1>
</body>
</html>

二、action的method属性
1、一个acton可以配置多个方法,此时可以通过配置action的method属性来调用action类的不同方法
action配置
<action name="UserAdd" class="UserAction" method="addUser">
<result>/index1.jsp</result>
</action> <action name="UserDel" class="UserAction" method="delUser">
<result>/index1.jsp</result>
</action>
action类
public class UserAction extends ActionSupport {
public String addUser(){
System.out.println("addUser");
return SUCCESS;
}
public String delUser(){
System.out.println("delUser");
return SUCCESS;
}
}
请求页面
<form action="UserAdd.action" method="post">
<input type="submit" value="登录">
</form>
<form action="UserDel.action" method="post">
<input type="submit" value="登录">
</form>
2、动态方法调用
动态调用需要设置struts2的参数
<constant name="struts.enable.DynamicMethodInvocation" value="true"/>
如果是struts2.5的版本还需要设置global-allowed-methods
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="true"/> <package name="default" namespace="/" extends="struts-default">
<global-allowed-methods>regex:.*</global-allowed-methods> <action name="User" class="UserAction">
<result>/index1.jsp</result>
</action>
</package>
</struts>
请求页面
<form action="User!addUser.action" method="post">
<input type="submit" value="添加">
</form>
<form action="User!delUser.action" method="post">
<input type="submit" value="删除">
</form>
action类同上略
三、使用通配符配置action
请求页面
<form action="User_addUser.action" method="post">
<input type="submit" value="添加">
</form>
<form action="User_delUser.action" method="post">
<input type="submit" value="删除">
</form>
<form action="User_other.action" method="post">
<input type="submit" value="删除">
</form>
action配置
<!--优先完全匹配,找不到才回去通配符匹配-->
<action name="User_addUser" class="UserAction">
<result>/index1.jsp</result>
</action> <action name="User_*" class="UserAction" method="{1}">
<result>/index1.jsp</result>
</action>
Struts2-Action接受参数方式、method属性使用及通配符的配置的更多相关文章
- 【代码总结】Struts2 Action接受参数方式的对比
一.属性方式 1.Action中:对应表单参数的setter.getter 2.页面中 :Form中元素name取值属性名 <s:property value="属性名" ...
- [转]Struts2理解--动态方法和method属性及通配符_默认Action
众所周知,默认条件下,在浏览器输入indexAction!execute.action,便会执行indexAction类里的execute方法,这样虽然方便,但可能带来安全隐患,通过url可以执行Ac ...
- Struts2理解--动态方法和method属性及通配符_默认Action
众所周知,默认条件下,在浏览器输入indexAction!execute.action,便会执行indexAction类里的execute方法,这样虽然方便,但可能带来安全隐患,通过url可以执行Ac ...
- struts2 Action 接收参数的三种方法
刚学Struts2 时 大家可能遇到过很多问题,这里我讲一下Action 接收参数的三种方法,我曾经在这上面摔过一回.所以要警醒一下自己..... 第一种:Action里声明属性,样例:account ...
- struts2 action 接受数组参数为Null的问题
public List<FormulaDetail> formulaDetails; public List<FormulaDetail> getFormulaDetails( ...
- Struts2 | struts.xml文件中使用method属性和通配符简化action标签和Action处理类的编写
转自:https://www.jianshu.com/p/310e89ee762d 在Struts2框架中,我们知道基本的Action标签只能实现一个url请求对应一个Action处理类.那么我们如果 ...
- Struts2 Action下面的Method调用方法
1. 在struts.xml中加入<constant name="struts.enable.DynamicMethodInvocation" value="tru ...
- Spring MVC(五)--控制器通过注解@RequestParam接受参数
上一篇中提到,当前后端命名规则不一致时,需要通过注解@RequestParam接受参数,这个注解是作用在参数上.下面通过实例说明,场景如下: 在页面输入两个参数,控制器通过注解接受,并将接受到的数据渲 ...
- Spring 中IOC(控制反转)&& 通过SET方式为属性注入值 && Spring表达式
### 1. Spring IoC IoC:Inversion of control:控制反转:在传统开发模式下,对象的创建过程和管理过程都是由开发者通过Java程序来实现的,操作权在开发者的Java ...
随机推荐
- CentOS配置java环境,mysql数据库等文章链接
配置jdk 配置jdk 安装mysql8 yum install -y mysql-community-server 安装mysql8 安装redi 安装redis 安装docker 安装docker
- mysql——查询语句——单表查询——(概念)
一.基本查询语句 select的基本语法格式如下: select 属性列表 from 表名和视图列表 [ where 条件表达式1 ] [ group by 属性名1 [ having 条件表达式2 ...
- 比反射更快!使用ASM获取class信息(ClassReader)
比反射更快!使用ASM获取class信息(ClassReader) 通常我们想要在java运行时获取class的信息时,通常使用反射的方式来获取其中的属性,方法,注解等信息.通常是这样的: Class ...
- 使用Python基于VGG/CTPN/CRNN的自然场景文字方向检测/区域检测/不定长OCR识别
GitHub:https://github.com/pengcao/chinese_ocr https://github.com/xiaofengShi/CHINESE-OCR |-angle 基于V ...
- 如何用纯 CSS 创作一个慧星拖尾效果的 loader 动画
效果预览 在线演示 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/YLRLaM 可交互视频教 ...
- Jquery table相关--工时系统
1.jquery 的弹出对话框,单击事件之后 if (confirm("确定要删除?")) { // //点击确定后操作 } 2.对某个table中的checkbox是否被选中的遍 ...
- 强大的开源企业级数据库监控利器Lepus
Lepus监控简单介绍 官方网站:http://www.lepus.cc 开源企业级数据库监控系统 简洁.直观.强大的开源数据库监控系统,MySQL/Oracle/MongoDB/Redis一站式性能 ...
- golang利用beego框架orm操作mysql
GO引入orm框架操作mysql 在beego框架中引入orm操作mysql需要进行的步骤: 第一步:导入orm框架依赖,导入mysql数据库的驱动依赖 import ( "github.c ...
- js鼠标点击特效,有关参数设置
效果图,用的faststone--录像--togif,黄色圆圈实际是不显示的 博客后台管理设置 本地新建一个demo.html文件,可以自行测试,要引入jquery文件哦 来个“红橙黄绿蓝靛紫”的点击 ...
- Mysql命令行添加用户
创建用户: 命令: ? 1 CREATE USER 'username'@'host' IDENTIFIED BY 'password'; 说明:username – 你将创建的用户名, host – ...