为了处理各种逻辑业务,根据execute方法来判断请求哪种业务,然后将请求转发到对应的业务处理上,

通过动态请求action对象中的方法,实现某个单一的业务逻辑处理。

动态action的应用

//创建action对象,添加add和update方法
import com.opensymphony.xwork2.ActionSupport; public class UserAction extends ActionSupport { private static final long serialVersionUID = 1L;
private String info; public String add() throws Exception{
info = "添加信息";
return "add";
}
public String update() throws Exception{
info = "更新信息";
return "update";
} public String getInfo() {
return info;
} public void setInfo(String info) {
this.info = info;
}
} //Struts.xml配置:
<!--声明包 -->
<package name="myPackage" extends="struts-default">
<action name="userAction" class="com.lyq.action.UserAction">
<result name="add">user_add.jsp</result>
<result name="update">user_update.jsp</result>
</action>
</package> //user_add.jsp页面
<s:property value="info"/>
//user_update.jsp页面
<s:property value="info"/> //通过两个超链接请求
<a href="userAction!add"> 添加</a>
<a href="userAction!update">更新</a>

域模型DomainMModel

可以将一些属性封装成为一个实体对象,需要保存信息,直接就可以吧一个实体对象传过去

//user类
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中应用的User对象
import com.opensymphony.xwork2.ActionSupport;
public class DomainModel extends ActionSupport {
private User user; @Override
public String execute() throws Exception {
System.out.println(this.user.getLoginName() + "|" + this.user.getPassword());
if ("admin".equals(user.getLoginName())) {
return SUCCESS;
} else {
return "error";
}
} public User getUser() {
return user;
} public void setUser(User user) {
this.user = user;
}
} <%--javaBean接收/域模型DomainModel--%>
<form action="javaBean" method="post">
输入姓名<input type="text" name="user.loginName" id="">
<input type="password" name="user.password">
<input type="submit" value="提交">
</form>
!--用域模型配置信息-->
<package name="myPackage" extends="struts-default">
<action name="javaBean" class="com.lyq.action.DomainModel">
<result >user_add.jsp</result>
<result name="error">user_update.jsp</result>
</action>
</package>

驱动模型ModelDriven

在域模型中需要对指定参数名称为user.name方式,还是不方便,Struts2提供了不需要这样指定就直接对实体对象参数值,这就是ModelDrien

可以看出属性可以不指对象

映射的jsp

add页面

update页面

Struts2---动态action以及应用的更多相关文章

  1. struts2 动态Action

    1.java 2.struts.xml struts2.5,默认关闭动态Action,着色的是开启和使用动态action 3.JSP 小结:访问时,用!后跟方法名的方法,方法返回值----->r ...

  2. Struts2的动态Action和全局跳转视图以及配置各项默认值

    1:Struts2的默认访问后缀是.action(特别需要注意的是改了配置文件web.xml或者struts.xml需要重启服务器) 2:Struts2中常用的常量介绍:<!-- 一:全局配置 ...

  3. Struts2的动态Action实现

    源自:Struts2的动态Action实现 在Struts2中动态方法调用有三种方式. 一.指定method属性在struts.xml中指定action的method属性. <package n ...

  4. Struts2 语法--action

    xml的注释: <!--叨叨叨叨--> web.xml注释格式": <?xml version="1.0" encoding="UTF-8&q ...

  5. struts2 之 Action的优化配置

    总结:struts2种action的配置文件会随着业务的增加而增加,导致配置文件膨胀.struts2中提供了三种方案来解决这个问题: 1. 动态方法调用来实现. 2. 通配符配置来解决. 3. 使用注 ...

  6. Struts2 动态调用方法

    struts2动态调用方法有两种方式 方式一:用通配符进行调用: Action方法: package com.bjyinfu.struts.actions; public class CatchDyn ...

  7. 关于Struts2中 Action 配置method的解读

    为Action配置method属性: 将Action类中的每一个处理方法都定义成一个逻辑Action方法. <!DOCTYPE struts PUBLIC "-//Apache Sof ...

  8. web10 动态action的应用

    电影网站:www.aikan66.com 项目网站:www.aikan66.com游戏网站:www.aikan66.com图片网站:www.aikan66.com书籍网站:www.aikan66.co ...

  9. SSH框架-Struts2基础-Action

    Struts2的目录结构: 解压apps目录下的struts2-blank.war: 仿照这个最基本的项目,拷贝相关文件: 1.拷贝apps/struts2-blank/WEB-INF/classes ...

  10. struts2,action上传文件

    通过servlet实现文件上传,可以用用servlet接受到request的值的话:主要是这句话 List<?> items = upload.parseRequest(request); ...

随机推荐

  1. 基于binlog恢复工具mysqlbinlog_flashback

    基于binlog恢复工具mysqlbinlog_flashback简介 mysqlbinlog_back.py 是在线读取row格式的mysqld的binlog,然后生成反向的sql语句的工具.一般用 ...

  2. 于用cocoapods添加第三方库,并且cocoapods添加成功,但是却在任何一个文件上都导入不了头文件

    关于用cocoapods添加第三方库,并且cocoapods添加成功,但是却在任何一个文件上都导入不了头文件,而且根本没有提示,即使手动打#import "xxxx.h"也报错xx ...

  3. Oracle创建新undo表空间最佳实践(包含段检查)

    在处理一则ORA-600 [4194]案例时,参考MOS文档:Step by step to resolve ORA-600 4194 4193 4197 on database crash (文档 ...

  4. java中的类型转换

    java中的类型转换分为两种 自动类型转换 要实现数据的自动类型转换必须同时满足下面两个条件 两种数据类型彼此兼容 目标类型的取值范围大于原类型范围 强制类型转换 当两种数据类型彼此不兼容,或者说目标 ...

  5. mysql修改用户密码笔记(转)

    方法1: 用SET PASSWORD命令 首先登录MySQL. 格式:mysql> set password for 用户名@localhost = password('新密码'); 例子:my ...

  6. POJ 3162 bit区间查询最值+树形DP

    POJ 3162 『题目链接』POJ 3162 『题目类型』bit区间查询最值+树形DP ✡Problem: 一棵n个节点的树.wc爱跑步,跑n天,第i天从第i个节点开始跑步,每次跑到距第i个节点最远 ...

  7. Nodejs在Ubuntu的部署和配置 samba

    在Ubuntu上安装samba 在10.04上安装samba时,先把samba卸载,不然会影响后面的安装. 0.卸载samba sudo apt-get remove samba-common sud ...

  8. requests库

    还没整理,先贴俩链接. https://www.cnblogs.com/lilinwei340/p/6417689.html http://docs.python-requests.org/zh_CN ...

  9. LearnOpenGL

    ---------------------------------------------- LearnOpenGL ----------------------------------------- ...

  10. Gradle's dependency cache may be corrupt

    原因分析: 当前Android studio 安装或者升级后配置的Gradle版本不对.可以打开安装目录下\Android\Android Studio\gradle\查看当前已有最新的版本.例如下图 ...