==========================================
在后台如何获取对象:
==========================================
方法一:属性驱动
把该对象集和对象的属性作为成员变量定义到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方法。