struts2(三)---使用EL表达式,显示Action中的数据
转载请注明:http://blog.csdn.net/uniquewonderq
使用EL表达式,显示Action中的数据
问题:
在struts2框架下,如何将业务控制器Action的数据传递给JSP,并在JSP上显示出这些数据。
解决方案:
Struts2会自动的将Action的数据传递给JSP,并且对传递方式进行了封装,在使用时变得十分方便,甚至不需要使用request对象。它仅仅要求我们在Action中定义属性,并为属性提供get方法,那么从Action跳转到JSP时,struts2会自动的通过这些get方法将这些属性的值传递给JSP。最终在JSP上我们可以使用EL表达式来显示Action的属性值。
我们还是利用StrutsDay01项目的实例,目前HelloAction中已经有了两个属性,即realName、user,而该Action最终跳转的页面为hello.jsp,我们的目标是在hello.jsp上使用EL表达式输出这些属性值。
实现步骤:
步骤一:在Action中,给属性追加get方法
在HelloAction中,给realName属性追加get方法,用于页面的EL表达式访问并取值,user属性已经有了get方法,不需要再追加。代码如下:
package action;
import entity.User;
public class HelloAction {
public HelloAction(){
System.out.println("实例化 Action...");
}
//定义基本类型属性,接受表单参数:姓名
private String realName;
public void setRealName(String realName){
System.out.println("注入参数realName...");
this.realName=realName;
}
public String getRealName(){
return this.realName;
}
//定义实体对象属性,接受表单参数:用户名、密码
private User user;
public void setUser(User user){
this.user=user;
}
public User getUser(){
return this.user;
}
//在业务方法中输出"Hello,Action"
public String sayHello(){
System.out.println("Hello,Action");
//输出基本类型数据
System.out.println("姓名:"+realName);
//输出域模型方法注入的参数
System.out.println("用户名:"+user.getUserName());
System.out.println("密码:"+user.getPassword());
return "success";
}
}
步骤二:在JSP上,使用EL表达式显示Action的属性值,代码如下:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
<h1>hello,Struts2!</h1>
<h1>姓名:${realName}</h1>
<h1>用户名:4{user.userName}</h1>
<h1>密码:${user.password}</h1>
</body>
</html>
步骤三:测试
重新部署项目并启动tomcat,在浏览器中输入地址:http://localhost:8888/StrutsDay01/
效果如下图所示:
在文本框中输入内容,点击提交,此时表单数据提交给了HelloAction,HelloAction接受到了表单数据后,跳转到了hello.jsp,我们在hello.jsp上使用EL表达式来输出HelloAction的属性值,效果如下图:
小结:
1.Action中追加属性时,不必区别何时加get方法,可是加set方法,通常每个属性都有get和set方法。
2.页面上写EL表达式,实际上与两种注入方式中,对应的表单文本框name表达式写法一致。
- 网页爬虫-R语言实现基本函数
- Python中的random模块用于生成随机数
- 简单易学的机器学习算法——极限学习机(ELM)
- 图片数据集太少?Keras Image Data Augmentation 各参数详解
- 备库归档删除策略失效的问题分析 (r7笔记第6天)
- 优化算法——梯度下降法
- Java基础-26(02)总结网络编程
- 记一次数据同步需求的改进(二) (r7笔记第5天)
- Python信贷数据处理与初步分析(ZIP解压)
- web前端之锋利的jQuery八:jQuery插件的使用(表单验证、表单提交)
- 优化算法——牛顿法(Newton Method)
- merge语句导致的CPU使用率过高的优化(r7笔记第4天)
- 由dual导致的一个潜在的监控问题(r7笔记第3天)
- 剑指Offer——编程题的Java实现
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 除了会排序,你对ORDER BY的用法可能一无所知!
- 修改xposed特征并刷机
- Python 爬虫进阶必备 | 关于某租房网站数据加密的分析
- CMAKE学习记录(二)
- maven 中的版本依赖冲突问题
- Manual for Ubuntu Installation
- 修改自定义站点监控页面的样式
- 快速建站“新玩具”—glitch.me
- 踩坑记 | Flutter升级影响了NestedScrollView?
- Android | xml和view的那些事
- Android | 资源冲突覆盖的一些思考
- 如何用脚本自动转化,一个protobuf文件到json格式
- 聊聊dubbo-go的forkingCluster
- 还在用 map[string]interface{} 处理 JSON?告诉你一个更高效的方法——jsonvalue
- 聊聊dubbo-go的failsafeCluster