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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Struts2的复杂数据类型的封装,封装数据到List集合中,封装数据到Map集合当中
下一篇:Java 当中 通过Date获取时间和通过SimpleDateFormat格式化时间

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2024年04月10日 20时07分26秒