用标签显示用户列表及Value Stack和Stack Context

时间:2021-07-13 00:26:20
用标签显示用户列表及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