用标签显示用户列表及Value Stack和Stack Context
以前我们显示用户列表,都是存在四个范围里(request,session,pageContext以及application),然后在jsp页面上写java代码和标签之类的,
这样看起来很不好!
如:
用标签
userlist.jsp
<%
UserDAO dao=new UserDAO();
ArrayList<User> list=dao.getUsers();
pageContext.setAttribute("list",list);
%>
<c:out ... />
jsp网页上,尽量不要出现Java代码
学了struts2.x之后,我们可以通过struts2.x的方式显示用户列表,步骤如下:
1.在struts中可以通过action去访问userlist.jsp
<result name="success">/WEB-INF/list/userlist.jsp</result>我们把uselist.jsp放在WEB-INF的list文件夹的目录下,是为了一定要经过action!
不然就显示不出用户的信息,因为用户的信息就是通过action类中的list()方法得到的!我们在前端就只要<a href="list"></a>即可,通过list查询
到struts.xml中找到<action name="*" class="myuser.UserAction" method="{1}">进入到action类中进行处理,然后转到前端userlist.jsp进行输出!
2.在action中将所有用户的信息存入到某个范围中,(struts2.x中的一种范围是:ActionContext)
ActionContext ctx = ActionContext.getContext();
ctx.put("USERLIST", list);///把用户的属性信息存放到ctx中
3.然后转向userlist.jsp,进行访问。
这里对userlist.jsp进行详细点的分析:
举个代码例子:
<table>
<tr><th>序号</th><th>用户名</th><th>密码</th></tr>
<s:iterator value="#USERLIST" status="s" id="cuser">
<tr><td><s:property value="#s.index+1"/></td><td><s:property value="#cuser.userName"/></td><td><s:property value="#cuser.pwd"/></td></tr>
</s:iterator>
</table>
</body>
<s:debug></s:debug>
首先讲:id是可以省略 ,省略之后 类似这样的<s:property value="#cuser.userName"/> 要变成<s:property value="userName"/>
在struts2.x框架标签中输出的时候:直接输出属性就可以了!如:<s:property value="userName"/>(<s:property/>输出标签)
第二:<s:iterator>标签是用来进行循环的
第三:这行代码:sttus="s" 和下面对应的 value="#s.index+1" 这些代码是用来增加序号的值的 index的值是从0开始的,我们要序号从1开始
所以index+1!
第四:<s:debug></s:debug>这个标签可以查看Value Stack 和Stack Context里面的东西(可以查看什么变量属于Value Stack还是Stack Context)
a.Value Stack 的概念 访问时不用加#
Value=值栈
b.Stack Context 访问时要加#
a和b都是用来存放数据
ognl表达式:类似于这种:#USERLIST (就是加上了"#"),功能比EL表达式要强!
struts2标签(可以去网上查查,里面有Struts2.x的标签,比较完整)
http://blog.163.com/hzd_love/blog/static/131999881201082111852520/
<s:iterator/>标签
http://www.blogjava.net/Reg/archive/2009/11/20/303085.html