对于Struts应用,提倡将属性key常量定义在一个java文件Constants.java中
把一些常量文件定义在Constants.java中可以提高Action类的独立性。当属性key文件发生改变时,只要修改Constants.java文件,而不需要修改Action类。
public final class Constants{
public static final String PERSON_KEY="personbean";
public static final String LOGIN_USER_KEY = "loginUser";
public static final String USER_LIST_KEY = "users";
}
一.Action类把数据存放在request范围内,以便向视图组件传递信息。
//Action访问(更新)模型组件
PersonBean pb=new PersonBean();
pb.setUserName(userName);
pb.saveToPeristentStore();
//Action类把数据(PersonBean对象)存放在request范围内
request.setAttribute(Constants.PERSON_KEY,pb);
//hello.jsp通过一个名为Constants.PERSON_KEY的属性key来读取PersonBean对象:
<logic:present name=Constants.PERSON_KEY scope="request">
<h2>
Hello<bean:write name=Constants.PERSON_KEY property="userName"/>!<p>
</h2>
<logic:present>
二..Action类把数据存放在session范围内
Action中:
if (User.checkUser(db, username, password)
&& "admin".equals(User.getUserGrade(db, username))) {
User user = User.search(db, username, password);
session.setAttribute(Constants.LOGIN_USER_KEY, user);
Vector userVector = User.searchUsers(db);
session.setAttribute(Constants.USER_LIST_KEY, userVector);
Jsp中:
Vector userVector = (Vector) session
.getAttribute(Constants.USER_LIST_KEY);