Struts的数据的封装,属性驱动:提供属性set方法的方式,属性驱动:页面中提供一种表达式,模型驱动:采用模型驱动的方式,INPUT的逻辑视图的配置
发布日期:2021-06-29 15:01:56
浏览次数:2
分类:技术文章
本文共 3400 字,大约阅读时间需要 11 分钟。
Struts的数据的封装
Struts2的框架是一个Web层框架,Web层框架(框架:软件的半成品,完成一部分的功能)。 提供了数据封装的基本功能。 No result defined for action com.itheima.struts2.demo2.UserAction1 and result input一、属性驱动:提供属性set方法的方式(不常用)
1、搭建JSP页面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>Insert title here Struts2的数据封装
方式一:属性驱动-提供set方法的驱动
2、Action
package com.itzheng.struts2.demo2;import java.util.Date;import com.itzheng.struts2.domain.User;import com.opensymphony.xwork2.ActionSupport;//数据分装的方式一:提供属性的set方法public class UserAction1 extends ActionSupport { // 提供了对应属性 private String username; private String password; private Integer age; private Date birthday; private Double salary; // 提供属性所对应的set方法 public void setUsername(String username) { this.username = username; } public void setPassword(String password) { this.password = password; } public void setAge(Integer age) { this.age = age; } public void setBirthday(Date birthday) { this.birthday = birthday; } public void setSalary(Double salary) { this.salary = salary; } @Override public String execute() throws Exception { System.out.println("=========="); // 接收数据: System.out.println(username); System.out.println(password); System.out.println(age); System.out.println(birthday); System.out.println(salary); // 分装数据: User user = new User(); user.setUsername(username); user.setPassword(password); user.setAge(age); user.setBirthday(birthday); user.setSalary(salary); return NONE; }}
测试:注意写日期的时候注意格式
二、属性驱动:页面中提供一种表达式
1、编写JSP
其中user是Action当成要封装对象的名称,创建对象的时候的名称。点后面的名称要和封装类当中的属性名称对应
2、编写Action
package com.itzheng.struts2.demo2;import com.itzheng.struts2.domain.User;import com.opensymphony.xwork2.ActionSupport;/* * 数据封装的方式二:属性驱动-在页面当中提供表达式的方式 */public class UserAction2 extends ActionSupport { // 提供一个User对象 private User user; public User getUser() { return user; } public void setUser(User user) { this.user = user; } // 提供User的set和get方法 @Override public String execute() throws Exception { System.out.println(user); return NONE; }}
测试
结果 以上的功能都是由Struts2当中的拦截器实现的,拦截器完成数据的封装, 在这里需要来创建User对象,通过get方法获得到同一个对象,将数据封装到同一个对象当中。三、模型驱动:采用模型驱动的方式(最常用)
1、编写JSP页面
2、编写Action
package com.itzheng.struts2.demo2;import com.itzheng.struts2.domain.User;import com.opensymphony.xwork2.ActionSupport;import com.opensymphony.xwork2.ModelDriven;//数据封装的方式三:模型驱动-采用模型驱动的一个方式public class UserAction3 extends ActionSupport implements ModelDriven{ // 模型驱动使用的时候:前提必须手动提供对象的实例 private User user = new User();// 手动实例化User @Override // 模型驱动需要使用的方法: public User getModel() { // TODO Auto-generated method stub return user;// 返回要分装的对象 } @Override public String execute() throws Exception { // TODO Auto-generated method stub System.out.println(user); return NONE; }}
测试
这种方式的缺点只能同时向一个对象中封装数据。如果使用第二种可以向多个对象当中同时分装数据。
四、关于INPUT逻辑视图
1、INPUT的逻辑视图的配置
Action接口当中提供了五个逻辑视图的名称:
SUCCESS:
ERROR: LOGIN: INPUT: NONE:INPUT的逻辑视图的配置
在某些拦截器当中会使用。
如果传输的数据类型不符合 报错: No result defined for action com.itzheng.struts2.demo2.UserAction2 and result input 这个异常是通过日志文件向外输出大异常(1)在struts_demo2.xml配置文件当中,设置页面提交参数错误的时候要跳转的页面的位置(并设置为全局的)
有很多时候一个< result >可供很多< action >使用,这时可以使用< global-results >标签来定义全局的< result >。
执行顺序:当一个Action返回的String没有相应的< result >与之对应,Struts2就会查找全局的< result >。(2)配置错误返回页面的信息
(3)测试
显示错误信息在页面上转载地址:https://code100.blog.csdn.net/article/details/106741854 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2024年04月26日 23时23分26秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
OC渲染器(Octane Render)整合版安装包 附安装教程
2019-04-29
操作系统期末大题复习
2019-04-29
hive:分区表,hbase外表
2019-04-29
想要成为运维,想要成为后期的架构师?这些知识是必备的!
2019-04-29
linux 是如何 快速一键安装禅道的呐?
2019-04-29
运维面试基础试题(四)
2019-04-29
一键安装Openstack单节点 必能成功
2019-04-29
面试紧张怎么办
2019-04-29
关系型数据库 ,nosql数据库简介
2019-04-29
Centos 7搭建NTP时间同步服务器
2019-04-29
centos7 基于rsync+inotify 实现定时备份
2019-04-29
指定IP进行 文件的分发
2019-04-29
基于http搭建本地yum仓库
2019-04-29
常规邮件基础
2019-04-29
邮件基础之 -- SMTP协议
2019-04-29
网络基础
2019-04-29
Java设计模式--责任链模式
2019-04-29
OpenCV的cvLoadImage函数
2019-04-29
OpenCV中与matlab中相对应的函数
2019-04-29
C/C++中二维数组作函数形参时,调用函数时,可传递的实参类型的小结
2019-04-29