关闭

struts2(三)---使用EL表达式,显示Action中的数据

标签: javastruts2myeclipsejsp
2727人阅读 评论(0) 收藏 举报
分类:

转载请注明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表达式写法一致。
































0
0
查看评论

EL取得action 属性的原理

今天一个哥们学习struts2,尝试使用OGNL,由于关联性吧,就又跳到EL上面,结果神奇的事情发生,他用EL表达式从request域里面居然拿到了action钟的属性,这个天崩地裂的,大家都知道struts2中存值对象都放在actioncontext中,如下图: 这幅截图来自于STURTS2...
  • zs064811
  • zs064811
  • 2015-12-08 23:18
  • 512

Struts2中EL表达式取值

之前遇到过struts2在JSP页面中使用${...} (EL表达式)取值的问题,后来给搞明白了,今天又发现这个问题,为了加深记忆在此记录一下吧。 一、使用EL表达式访问Action中的属性   Struts2默认使用OGNL表达式从ValueStack中取值/赋值,EL表达式默认从Pag...
  • cuihaiyang
  • cuihaiyang
  • 2014-12-15 22:48
  • 14471

SSH框架+EL表达式—jsp跨界面传值显示

最近做项目涉及到跨界面传值的问题,对于Java语言来讲,相比之前的.net传值,其实就是语言环境的改变而已。直接看项目demo传值: 界面一:      编写的js代码,直接用window.location.href的方式跳转页面,然后附带传值过去就行。 需求...
  • huo065000
  • huo065000
  • 2015-11-02 08:08
  • 1651

EL表达式为什么可以在值栈中取值

我在后台将一个对象的list集合放到了值栈的Map栈中 Java code ? 1 2 3 4 public String getLastVersionPD(){ ActionContext....
  • z69183787
  • z69183787
  • 2014-04-18 10:21
  • 5232

Struts2为什么可以用EL表达式取值?

在一个应用了Struts2系列框架的项目中,在JSP页面常常用Struts附带的标签对表单元素取值,但,为什么EL表达式也能取到值栈(value stack)中的值呢? 我们知道,JSTL默认是从page,request,session,application这四个Scope逐次查找相应的EL表达...
  • z69183787
  • z69183787
  • 2014-08-01 16:44
  • 1561

2使用struts2的标签库 EL表达式

与struts1标签库进行比较,struts2的标签库有一个巨大的改进之处就是struts2标签库不依赖于任何表现层技术。就是说struts2的大部分标签可以在jsp页面中使用,也可以在Velocity和FreeMarker等模板技术中使用。 Struts2的标签都定义在s标签库中,URI...
  • bin71722
  • bin71722
  • 2016-07-12 15:42
  • 879

7.Struts采用EL保持表单数据:改成用struts的html标签保持数据

<%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%> Insert tit...
  • seeds_home
  • seeds_home
  • 2012-08-26 08:59
  • 357

struts2 action重定向action

一共有三种方式redirect,redirect-action,chain 区别如下 1 redirect:action处理完后重定向到一个视图资源(如:jsp页面),请求参数全部丢失,action处理结果也全部丢失。 2 redirect-action:action处理完后重定向到一个act...
  • lele2426
  • lele2426
  • 2014-08-13 15:12
  • 1524

Struts标签、Ognl表达式、el表达式、jstl标签库这四者之间的关系和各自作用

我之前虽然会用,但是一直分不清彼此之间有什么区别,所以查找资料,将它们进行整合区分,加深了解, 一 介绍 1.Struts2的作用    Struts2标签库提供了主题、模板支持,极大地简化了视图页面的编写,而且,struts2的主题、模板都提供了很好的扩展性。实现了更好的...
  • love_you_99
  • love_you_99
  • 2012-11-14 22:53
  • 38886

struts2 el表达式不起作用的解决方法

,Struts2标签里面不可以嵌套EL表达式。 虽然Struts2标签里面不可以嵌套EL表达式,但是你在JSP页面里面还可以使用EL表达式。如:${pageContext.request.contextPath}。标签是HTML标签,可以使用EL表达式取值。需要注意的是: 页面启用EL表达式:&...
  • qq_16055765
  • qq_16055765
  • 2016-09-26 18:36
  • 835
    个人资料
    • 访问:371758次
    • 积分:5978
    • 等级:
    • 排名:第5075名
    • 原创:240篇
    • 转载:29篇
    • 译文:2篇
    • 评论:34条
    最新评论