【struts2】struts2中对象的获取

==========================================

在后台如何获取对象:

==========================================

方法一:属性驱动

把该对象集和对象的属性作为成员变量定义到action中,并为其提供get和set方法,调用业务层获取该对象集以及对象各属性的值,最后通过setter()方法将值注入。。。

前提:让自定义的action只继承自ActionSupport类

action方法:

private String loginName;
private String String password;

...getter()和setter()方法...

public String execute(){
    System.out.println(loginName() + password());
    return SUCCESS;
}

方法二:模型驱动(使用较少)

以上是使用属性驱动的方法,我们还可以使用模型驱动:

实现原理是:调用业务层将对象查询回来,直接放到一个User对象中;

前提:让自定义的action不仅继承自ActionSupport,还实现一个ModelDriven接口,并且实现该接口下的getModel()方法:

action方法:

private User user=new User();

public String execute(){
    System.out.println(user.getLoginName() +
               user.getPassword() );
    return SUCCESS;
}

public User getModel(){
    return user;
}

方法三(另一种属性驱动,直接把数据放到对象中):

前提:只继承一个ActionSupport接口

UserAction.java 方法:(user.action)

private User user;

private Integer id;

...该user和id的getter和setter方法...

public String execute(){
    //调用业务层方法通过id从数据库中查回一个user对象
    return SUCCESS;
}

当调用user.action之后,跳转到以下success.jsp,在该JSP中获取查回的用户的用户名和密码;

前台JSP中对象的获取方法(name取值不同):

success.jsp

    用户名:${ user.username}
    密码: ${ user.password }
    <!--如果像下面这样直接写user得到的是user对象的地址-->
    <struts:property value="user"/>

===========================================

在前台如何获取对象:

==========================================

在前台如何获取对象(一):

在前台页面中获得用户输入的内容,可以有以下几种方法:(前提是action中有相应的属性驱动,即getter()和setter()方法,以登录过程中获取用户名为例)

方法一、EL表达式

${loginName}

方法二、javascript:

<%=request.getParameter("loginName") %>
<%=request.getAttribute("loginName") %>

方法三、struts2标签<struts:property />

使用的时候要加标签库taglib声明:
<%@ taglib uri="/struts-tags" prefix="struts"%>

<struts:property value="loginName"/>

方法四、struts2标签<struts:debug>获取值栈信息:

使用的时候要加标签库taglib声明:
<%@ taglib uri="/struts-tags" prefix="struts"%>

<struts:debug></struts:debug>

在前台如何获取对象(二):

从后台得到一个对象集(users),如何把这个对象集到前台页面进行展示?

注意${ users }直接这样写得到的是该对象集的地址。

方法一:

在前台页面中使用JSTL,引入JSTL的核心标签库;然后使用<c:forEach>标签循环遍历该对象集,然后使用EL表达式进行取值;

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 

<c:forEach items="${users}" var="user">
    ${user.loginName}
</c:forEach>

方法二:

在前台页面中使用struts2标签,引入标签库taglib声明;然后使用<struts:iterator>标签循环遍历该对象集,然后使用EL表达式进行取值;

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

<struts:iterator id="user" value="users">
    ${user.loginName}
    ${user.password}
</struts:iterator>

注意:

不管是后台要用到的从前台得到的值,还是前台要用到的从后台传回的值,在相应的action中都要声明,并给出相应的getter和setter方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值