struts2的标签说明iterator,el,ognl

一、iterator.
这个标签主要的的作用就是跌代出集合。
value属性表示需要跌代显示出来的值。
status属性,又来保存跌代时的一些状态值。
注:1.如果需要引用valueStack中的值,需要使用这样的形式。
<s:iterator value="#list" /> //userList在action部分被保存在Request中,所以使用#加属性名
来引用值。
2.如果集合的值是通过action的方法,假设我们的action中有一个set/getListName方法,返回一个List
集合。我们可以使用如下的形式来引用这个集合,并用s:iterator来输出。
<s:iterator value="listName" />
3.iterator的value使用定义好的方式,如:
<s:iterator value="{'aa','bb','cc','cc'}" /> //这样跌代输出的值就是aa、bb 、cc、dd、这四个值。

二、iterator中输出具体值,如果,在上面我们的list中的对象,有两个属性,都是String类型,一个
是name,一个是url。
我们可以这样来引用。
1. <s:property value="name" /> //将可以输出跌代对象的name属性值。不需要加#,加#则是获取action 里面传过来的值了。在struts2的标签内部,使用%{}这样的形式,在标签外部可以使用${}EL语言的方式。如果在struts2的标签内部使用${}这样的方式,会出现以下的错误
提示:
According to TLD or attribute directive in tag file, attribute value does not accept any
expressions
2. 如果希望使用<s:url />来将跳转过后的url进行处理,该如何来做?
<s:url value="%{url}"/> //%{}ognl、${}el的表达式,这样的值能够将url的值进行<s:url/>的处理
实际上就是转为绝对路径。这样,我们就可以对付一些因跳转换产生的路径问题。
原因:因为<s:iteratotr />以后,当前的对象应该就在ValueStack顶部了,这样当然的url实际上
就是对象的url 属性了
3.<s:textfield name="loginName" value="%{#request.loginNames}"/>
使用此表达式,会生成一个文本框,并且,如果request.attribute中有loginNames属性,将会做为些文本框的默认值。如果只使用#request.loginNames在struts2的标签内部,是不会显示任何值的,注意外面加上的%{}附号,才会被正常的使用。如果希望如EL语言一样直接输出文件,如在一个<a></a>之间的innerHTML文本为#request.loginNames的值,我们只要使用:<s:property value="#request.loginNames" />使可以正常使用!也就是说在struts 的控件中需要加%。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 以下是修改后的代码: 登录页面 login.jsp: ```html <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib prefix="s" uri="/struts-tags" %> <html> <head> <title>Login Page</title> </head> <body> <s:form action="login" method="post"> <s:textfield name="username" label="Username"/> <s:password name="password" label="Password"/> <s:submit/> </s:form> </body> </html> ``` 登录成功页面 success.jsp: ```html <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib prefix="s" uri="/struts-tags" %> <html> <head> <title>Login Success</title> </head> <body> <h1>Welcome, <s:property value="username"/>!</h1> <p>You are the <s:property value="rank"/>-th user who logged in successfully.</p> </body> </html> ``` 修改后的 LoginAction.java: ```java package com.example.actions; import com.opensymphony.xwork2.ActionSupport; import java.util.ArrayList; import java.util.List; public class LoginAction extends ActionSupport { private String username; private String password; private static List<String> users = new ArrayList<>(); private static int count = 0; public String execute() { if ("admin".equals(username) && "admin".equals(password)) { count++; users.add(username); return SUCCESS; } else { return ERROR; } } // Getter and Setter methods public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getRank() { return String.valueOf(users.indexOf(username) + 1); } } ``` 在 LoginAction 中,我们使用一个 static 的 List 来记录所有登录成功的用户,同时使用一个 static 的计数器 count 记录登录成功的用户数量。在 execute 方法中,如果用户名和密码都为 admin,则说明登录成功,将该用户添加到 users 列表中,并返回 SUCCESS。在 success.jsp 中,我们使用 OGNL 表达式 `<s:property value="username"/>` 显示登录用户的名称,使用 `<s:property value="rank"/>` 显示登录用户是第几位登录成功的用户。 ### 回答2: 要修改实验1的登录系统代码,我们需要使用Struts2标签来构建页面,以便实现更方便的表达式展示和用户登录信息的显示。 首先,在登录页面中,我们可以使用Struts2标签来展示表单和输入框,如<s:form>和<s:textfield>等标签。这样可以让页面更加简洁和具有良好的可读性。 接下来,在登录成功的页面中,我们可以使用OGNL表达式来显示登录用户的名称,并且显示该用户是系统中第几位登录成功的用户。OGNL表达式可以通过<s:property>标签来展示。 在修改后的代码中,我们可以在登录成功后,将登录用户的名称保存在Action中的一个变量中。然后在登录成功页面中,使用<s:property value="变量名称"/>来展示用户名称。 为了显示用户是系统中第几位登录成功的用户,我们可以在Action中使用一个全局变量来记录登录次数。每次用户登录成功后,全局变量加1。然后在登录成功页面中,使用<s:property value="全局变量"/>来展示是系统中第几位登录成功的用户。 通过使用Struts2标签OGNL表达式,我们可以在修改后的代码中实现页面的构建和用户信息的展示。这样可以提升系统的用户体验和可读性,同时也方便了后续的维护和扩展工作。 ### 回答3: 要修改实验1登录系统的代码,首先需要使用Struts2标签来构建登录页面。可以使用Struts2标签库中的<s:form>标签来创建登录表单,其中包含用户名和密码的输入框以及登录按钮。通过<s:submit>标签可以实现点击按钮提交表单的功能。 在登录成功后的页面中,需要使用OGNL表达式来显示登录用户的名称。可以使用<s:property>标签将登录用户名属性的值显示在页面上。例如,如果登录用户的名称保存在一个名为username的属性中,可以使用<s:property value="username"/>来将其显示在页面上。 此外,还需要显示该用户是系统中第几位登录成功的用户。可以在用户登录成功后,将登录用户的信息保存在一个用户列表中,并记录用户登录的顺序。然后使用<s:iterator>标签遍历这个用户列表,在迭代过程中判断当前遍历到的是第几个用户,并将其显示在页面上。 总结起来,修改实验1登录系统的代码需要进行以下步骤: 1. 使用Struts2标签构建登录页面,包括<s:form>标签和<s:submit>标签; 2. 在登录成功页面中使用OGNL表达式<s:property>标签显示登录用户的名称; 3. 在用户登录成功后,将登录用户的信息保存在用户列表中,并记录用户登录的顺序; 4. 使用<s:iterator>标签遍历用户列表,并使用逻辑判断确定用户的登录顺序,并在页面上显示。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值