Struts的数据的封装,属性驱动:提供属性set方法的方式,属性驱动:页面中提供一种表达式,模型驱动:采用模型驱动的方式,INPUT的逻辑视图的配置
发布日期:2021-06-29 15:01:56
浏览次数:3
分类:技术文章
本文共 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2024年04月10日 20时07分26秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
10个业余时间可完成的项目,助你飞速提升编码能力!
2019-04-29
网络爬虫初涉——用python爬取网络小说
2019-04-29
Pycharm+tensorflow dropout 学习(三)
2019-04-29
Pycharm+tensorflow CNN 学习(四)
2019-04-29
用python暴力破解压缩包密码
2019-04-29
基于OpenCV 将图片进行预处理,转变为MNIST图片格式
2019-04-29
PyCharm+Tensorflow CNN调用训练好的模型进行预测 (五)
2019-04-29
物联网平台Node-red初涉——访问搭建的简易服务器
2019-04-29
2020-10-27
2019-04-29
OpenCV+python识别并打印HSV颜色
2019-04-29
2021-03-29
2019-04-29
网络攻击与防御--引言
2019-04-29
网络攻击与防御--网络协议漏洞
2019-04-29
sql注入: 判断注入点类型
2019-04-29
千人千面Elasticsearch实战学习笔记
2019-04-29
最大子数组问题(递归)(java)
2019-04-29
2021年第十二届蓝桥杯软件赛省赛第二场 C/C++ 大学 A 组
2019-04-29
2020年哨兵数据批量下载(USGS)
2019-04-29
简单3步快速生成千万级别mysql测试数据库,模拟电商数据
2019-04-29
EasyDSS平台接入设备量过多的情况下如何进行批量推流测试?
2019-04-29