Struts2 中的action与页面数据传输

1. 如何将参数从界面传递到Action?

你可以把Struts2中的Action看做是Struts1的Action+ActionForm,即只需在Action中定义相关的属性(要有getters/setters方法),然后界面传参的名称跟这些属性保持一致即可。普通的数据类型,将可自动转换。(空字符串转换为int类型时将报错)

2.如何将数据从Action传输到JSP?

可通过多种方式传输

方式一:通过Action的属性传输

直接给action的属性赋值,在转向之后的JSP中,直接用标签<s:property value=”OGNL表达式”/>取出即可。

比如:


public class UserAction {

private String username;

private Integer age;

private boolean valid;

//查看用户的详细信息

public String detail(){

username = "张三";

age = 18;

valid = true;

return "detail";

}

在detail.jsp中,引入struts2的taglib,用这些taglib来呈现数据:


<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<%@ taglib prefix="s" uri="/struts-tags" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<body>

username:<s:property value="username"/> <br/>

valid:<s:property value="valid"/> <br/>

age:<s:property value="age"/> <br/>

</body>

</html>

方式二:通过ActionContext传输

可通过ActionContext.getContext().put()方法来传值

在Action的方法中:


public String detail(){

ActionContext.getContext().put("name", "王五");

username = "张三";

ActionContext.getContext().put("username", "李四");

return "detail";

}

在JSP中:


<body>

<!-- 从ActionContext中取name的值 -->

name: <s:property value="#name"/> <br/>

<!-- 先看Action中有没有name属性,如果没有,则到ActionContext中找name的值 -->

name: <s:property value="name"/> <br/>

<!-- 从ActionContext中取username的值 -->

username : <s:property value="#username"/> <br/>

<!-- 从Action对象中取username属性 -->

username : <s:property value="username"/> <br/>

</body>

方式三:通过request/session等传输

可通过ServletActionContext.getRequest()/getSession()等方法来获得request/session对象,然后调用其中的setAttribute()方法来传值。

演示各种数据的传输、展现技巧!

在Action中通过request/session来传值:


public String detail(){

//通过request

ServletActionContext.getRequest().setAttribute("sex", "男");

//通过session

ServletActionContext.getRequest().getSession().setAttribute("address", "北京");

//通过session

ActionContext.getContext().getSession().put("postcode", "1234567");

return "detail";

}

在JSP中取值:


<body>

<!-- 从request中取sex值 -->

request.sex = <s:property value="#request.sex"/> <br/>

request.sex = <s:property value="#request[‘sex‘]"/> <br/>

<!-- 从session中取值 -->

session.address = <s:property value="#session.address"/> <br/>

session.postcode = <s:property value="#session.postcode"/> <br/>

<!-- 依次搜索page/request/session/application scope取值 -->

attr.postcode=<s:property value="#attr.postcode"/> <br/>

</body>

时间: 2024-10-22 02:06:05

Struts2 中的action与页面数据传输的相关文章

struts2中的action标签

struts2中的action标签用于在JSP页面中直接调用一个Action,通过指定executeResult参数,还可以将该Action的处理结果包含到本页面中来. 使用action标签可以允许JSP页面直接调用Action,因为需要调用Action,故可以指定需要被调用的Action的name以及namespace.如果指定了executeResult参数的值为true,该标签还会把Action中处理的结果包含到本页面中来.使用action标签有如下的几个属性: id:          

struts2中把action中的值传递到jsp页面的例子

例子: RegistAction的代码: package com.wss.action; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; import com.wss.Dao.

【转-整理】Struts2中package,action,result,method配置详解

1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE struts PUBLIC 3 "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" 4 "http://struts.apache.org/dtds/struts-2.3.dtd"> 5 <struts> 6

Struts2中,action配置文件中两个action带参数的调用

当一个action调用另一个action,并且要传递一个参数过去时,这是可以这样写: 1 <action name="addMsg" class="action.MessageAction" method="addMsg"> 2 <result type="redirect">getNewsById.action?id=${id}&</result> 3 </action>

Struts2中的action

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <package

经struts2中的action后,jsp中css失效的问题

最近在做毕业设计,发现写后台时,jsp页面直接打开是好的,但是经过action跳转便会失去样式,发现原来是打开的action页面和需要的css不在一个目录下,修改很简单,将此action 所在的package的namespace修改成css所在目录,如下: 修改前: <package name="book" extends="struts-default" > <action name="Bookmodify" class=&q

Struts2中的Action类(解耦方式,耦合方式)

一.解耦方式 特点:对web资源进行了封装,便于单元测试. 实现:ActionContext和接口方式 1.ActionContext 特点:Action执行的上下文对象.保存了执行Action所需要的所有对象 使用:1.获取ActionContext  2.获取application,session.request,parameter资源  3.打印显示 1.获取ActionContext ActionContext.getContext() 调用自身的静态方法得到实例 采用的是单例模式 可以

struts2中在Action中如何获取servlet的api?

1.通过ActionContext类(拿到的不是真正的servlet api,而是一个map) ActionContext context = ActionContext.getContext(); context.getSession(); context.getApplication(); 2.通过ServletActionContext类(拿到的是真正的servlet api) ServletActionContext.getRequest(); ServletActionContext.

Struts2中Action的动态调用方法

在Struts2中,Action执行的时候并不一定要执行execute,我们可以指定Action执行哪个方法,下面分别介绍三种方法来指定Action执行哪个方法: 1.第一种方法,通过Action里的method属性指定执行方法,我们可以在struts.xml配置文件中配置Action的时候用method="   " 来指定执行的哪个方法. (1).接下来附上一个例子,通过第一种方法来指定执行方法,首先,复制一个已经搭建好struts2环境的web项目,这里我们复制ActionTest