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

2020-09-27 15:29:22 浏览数 (1)

转载请注明: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方法,不需要再追加。代码如下:

代码语言:javascript复制
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的属性值,代码如下:

代码语言:javascript复制
<%@ 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 人点赞