JavaWeb -- Struts2 模型驱动
1. 模型驱动
示例:
注册表单reg.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"%>
<%@taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>reg.jsp</title>
</head>
<body>
<s:actionerror/>
<s:form namespace="/md" action="MdAction_reg" method="post" theme="xhtml" validate="true">
<s:textfield name="name" label="UserName" />
<s:textfield name="age" label="UserAge" />
<s:submit />
</s:form>
</body>
</html>
用户显示list页面 userList.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"%>
<%@taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>reg.jsp</title>
</head>
<body>
<table border="1">
<tr>
<td>id</td><td>name</td><td>age</td><td>edit</td>
</tr>
<s:iterator value="userList">
<tr>
<td><s:property value="id" /></td>
<td><s:property value="name" /></td>
<td><s:property value="age" /></td>
<td>
<a href='<s:url action="MdAction_edit" namespace="/md"><s:param name="uid" value="id" /></s:url>'>edit</a>
</td>
</tr>
</s:iterator>
</table>
</body>
</html>
处理action,模型驱动需要实现ModelDriven 接口,实现Preparable 接口,在modelDriven拦截器之前先运行 prepare拦截器。
package cn.itcast.struts2.modeldriven; import java.util.ArrayList;
import java.util.List; import org.apache.struts2.ServletActionContext;
import org.apache.struts2.interceptor.validation.SkipValidation; import cn.itcast.struts2.model.User; import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.opensymphony.xwork2.Preparable; /**
* MdAction:某型驱动
*/
public class MdAction extends ActionSupport implements ModelDriven<User>,Preparable {
private static final long serialVersionUID = -6933309304624396640L; private String name; private Integer uid ; private User user = new User(); private List<User> userList ; public String reg() {
return "success";
} @SkipValidation
public String toRegView() {
System.out.println("toRegView");
return "regView";
} /**
* 查询所有用户
*/
public String findAllUsers(){
userList = new ArrayList<User>();
User u = null ;
for(int i= 0 ; i < 10 ; i ++){
u = new User();
u.setId(1 + i);
u.setName("tom" + i);
u.setAge(20 + i);
userList.add(u);
}
return "userListView";
} public String edit(){
return "editView" ;
} //
public User getModel() {
return user;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public List<User> getUserList() {
return userList;
} public void setUserList(List<User> userList) {
this.userList = userList;
} public Integer getUid() {
return uid;
} public void setUid(Integer uid) {
this.uid = uid;
} /**
* 该方法在getModel之前运行,在modelDriven拦截器之前先运行
*/
public void prepareDoEdit() throws Exception {
//
User u = new User();
u.setId(uid);
u.setName("jerry");
u.setAge(30);
user = u ;
} public void prepare() throws Exception {
}
}
struts配置文件md.xml, 需要添加paramsPrepareParamsStack, 在prepare之前填充参数。
<?xml version="1.0"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
"http://struts.apache.org/dtds/struts-2.1.7.dtd">
<struts>
<package name="MdPkg" namespace="/md" extends="struts-default">
<action name="MdAction_*" class="cn.itcast.struts2.modeldriven.MdAction" method="{1}">
<result name="success">/md/reg.jsp</result>
<result name="regView">/md/reg.jsp</result>
<result name="editView">/md/edit.jsp</result>
<result name="userListView">/md/userList.jsp</result>
<interceptor-ref name="paramsPrepareParamsStack" />
</action>
</package>
</struts>
JavaWeb -- Struts2 模型驱动的更多相关文章
- 【Java EE 学习 36】【struts2】【struts2系统验证】【struts2 ognl值栈】【struts2 ongl标签】【struts2 UI标签】【struts2模型驱动和令牌机制】
一.struts2系统验证 1.基于struts2系统验证的方式实际上就是通过配置xml文件的方式达到验证的目的. 2.实际上系统校验的方法和手工校验的方法在底层的基本实现是相同的.但是使用系统校验的 ...
- struts2 模型驱动的action赋值优先顺序
struts2 模型驱动的action赋值优先顺序: 1.优先设置model的属性. 2.如果model属性中没有对应的成员变量,则向上冒泡,寻找action中的属性进行set. 如果action中的 ...
- struts2 模型驱动
public class User3Action extends ActionSupport implements ModelDriven<User> { private User use ...
- Struts2 模型驱动及页面回显
* 要从页面中获取表单元素的值,需要在动作类中声明与页面元素同名的属性.导致动作类中既有javabean又有业务方法. * 将javabean和业务方法进行分离: * 将重 ...
- [java]struts2 模型驱动 2016-05-01 21:40 702人阅读 评论(19) 收藏
一开始敲网上商城的时候,对于数据的传递方式我是很惊艳了一把的,感觉特别高大上,就感觉,竟然不用像.net一样取谁的值,给谁赋值这样,只要需要用的时候,简单的get一下就ok了,简直高大上啊. 然后发现 ...
- (九)Struts2模型驱动和属性驱动
出于结构清晰的考虑,应该采用单独的Model实例来封装请求参数和处理结果,这就是所谓的模型驱动, 所谓模型驱动,就是使用单独的JavaBean来贯穿整个MVC流程. 所谓属性驱动,就是使用属性来作为贯 ...
- JavaWeb -- Struts2 验证框架
1. 验证框架 示例 表单提交Jsp, reg.jsp <%@ page language="java" contentType="text/html; chars ...
- JavaWeb -- Struts2 ResultType细化, 国际化
1. ResultType细化 <result-types> <result-type name="chain" class="com.opensymp ...
- JavaWeb -- Struts2 构建视图:标签和结果, UI组件标签
1. 示例 action 注入数据 和 处理action /** * OgnlAction */ public class UiAction extends ActionSupport { priva ...
随机推荐
- cocos2d-X学习之主要类介绍:摄像机(CCCamera)
在cocos2d-x中,每个节点(CCNode)都需要用到,即当节点发生旋转.缩放和位置变化等时,都需要覆盖CCCamera,然后这个节点通过CCCamera重新渲染. 类结构: 其主要函数如下: c ...
- 170118、快速失败Vs安全失败(Java迭代器附示例)
简介: 当错误发生时,如果系统立即关闭,即是快速失败,系统不会继续运行.运行中发生错误,它会立即停止操作,错误也会立即暴露.而安全失败系统在错误发生时不会停止运行.它们隐蔽错误,继续运行,而不会暴露错 ...
- Oracle存储——逻辑结构
Oracle 数存储——物理结构 Oracle存储结构:物理结构+逻辑结构 Oracle 数据库存储逻辑结构 Oracle Schema Objects(Schema Object Storage A ...
- 关于ajax里边不能识别$(this)的解决方法
在ajax外面弄个变量var mythis = $(this),然后在里面用就行
- 3.php数据类型中NULL,"",0的比较
<?php //赋值 $some1 = NULL; $some2 = 0; $some3 = ""; //0与NULL比较 echo $some1==$some2; echo ...
- SQL Server 加前导0
declare @a int declare @b int set @a = 1 --需要显示的数字 set @b = 3 --显示位数 select right(cast(power(10,@b) ...
- 笔记-django学习链接
form表单学习 https://www.cnblogs.com/weiman3389/p/6225075.html python字符串replace()方法 https://www.cnblogs. ...
- Angular4中常用管道(转载)
Angular4中常用管道 通常我们需要使用管道实现对数据的格式化,Angular4中的管道和之前有了一些变化,下面说一些常用的管道. 一.大小写转换管道 uppercase将字符串转换为大写 low ...
- Redis六(管道)
管道 为什么使用管道? Redis是一个TCP服务器,支持请求/响应协议. 在Redis中,请求通过以下步骤完成: 客户端向服务器发送查询,并从套接字读取,通常以阻塞的方式,用于服务器响应. 服务器处 ...
- 中文Appium API 文档
该文档是Testerhome官方翻译的源地址:https://github.com/appium/appium/tree/master/docs/cn官方网站上的:http://appium.io/s ...