`

Struts 1.x | <logic> 标签库

阅读更多

<logic> 标签库        

 

         1)要使用Logic标签库必须要加入标签库的声明
            <%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
         2)logic标签库中的提供的大多数功能完全可以用jstl来替代。一般在logic标签库用得最多的标签就是

            <logic:iterator>标签

            
        <logic:equal>用于比较两个值是否相等
            A:格式:<logic:equal name="在四种范围内的变量的值" value="用于比较的值" >
               <%
                    String uid="chen";
                    request.setAttribute("uid",uid);
                %>     
                <logic:equal name="uid" value="chen"> //用于比较
                              相等
                 </logic:equal>
            B:比较javabean的属性值
                 <%
                   worker d=new worker();
                   d.setId("W1");
                   request.setAttribute("uid",d);
                %>
       
             <logic:equal name="uid"  property="id" value="W1" >
                equal
            </logic:equal>  表示把request范围内的uid的JavaBean的属性值与W1进行比较

                 其它的用于比较的标签,用法与<logic:equal>一样               
                   A:<logic:greaterEqual>大于或等于
                   B:<logic:greaterThan>大于
                   C:<logic:lessEqual>小于或等于
                   D:<logic:lessThan>小于

              应用举例:
                 1)让用户输入一个职工的编号从数据库查找出对应的部门,如果该部门是销售部
                   则显示是销售部,否则显示不是销售部
                   思路:input.jsp--->Action--->调用JavaBean进行计算得出部门--->转到show.jsp
                         页面进行判断(比较的过程在show.jsp,得出结果在Action中) 

                 2)我们完全可以使用jstl标签。
                          <c:choose>
                             <c:when test="${depart=='销售部'}">
                             <h1>is sales</h1>
                             </c:when>
                             <c:otherwise>
                              <h1>not is</h1>
                             </c:otherwise>
                         </c:choose>

 

        <logic:iterator>标签.相当于jstl中的<c:forEatch>


                 1)用于循环输出数据项
                 2)格式:
                     <logic:iterator id="存入page范围内变量" name="从四种范围变量中取出的集合名">
                       ${}
                     </logic:iterator>

                 3)原理:每次从name指定的集合中检索出一个元素,然后把它放在page范围内
                         并以id属性指定的名字来命名这个元素
        ==========================================================
                        <%
                           ArrayList list=new ArrayList();
                           list.add("chen");
                           list.add("yuan");
                           list.add("haung");
                           request.setAttribute("list",list);
                       %>
                          <logic:iterate id="workerName" name="list">
                          <bean:write name="workerName"/><br>
                          </logic:iterate> 
        ================================================================       
               3)把JavaBean集合进行输出
                 <%
                      ArrayList users=new ArrayList();
                      users.add(new Person("tomcat",12));
                      users.add(new Person("Mysql",120));   
                      users.add(new Person("oracle",16));
                      request.setAttribute("users",users)
                  %>
                   <logic:iterate id="user" name="users">
                         <bean:write name="user" property="name"/><br>相当于${user.name}
                         <bean:write name="user" property="age"/><br> 相当于${user.age}
                    </logic:iterate> 


                     <c:set var="orderList" value="<%=orderDao.getAllOrder()%>" scope="request"/>

 

               4)<logic:iterate>还可以访问map中的元素
                        <%       
                            Map personMap=new HashMap();
                            personMap.put("W1","张三");
                            personMap.put("W2","李四");
                            personMap.put("W3","王五");
                            personMap.put("W4","赵六");                  
                       %>
                           <c:set var="personMap" value="<%=personMap %>"/>
                           <logic:iterate id="person" name="personMap">
                                <bean:write name="person" property="key"/> 相当于${person.key}
                                <bean:write name="person" property="value"/>相当于${person.value}
                          </logic:iterate>


             5)设置被访问的变量:
                   A:设置name属性,name属性指定要遍历的集合或map,
                   B:设置name属性和property属性,name属性指定一个javaBean,property属性指定java

                       的一个属性,这个属性做为遍历的集合或map.比如:
                      <%
                           String love[]={"dance","jump","read"};
                           person personInstance=new person("p1","zhang",love);
                           request.setAttribute("personInstance",personInstance);
                       %>
                      <logic:iterate id="elementLove" name="personInstance" property="love">
                               ${elementLove }
                      </logic:iterate>

       改为:
       <%
           ArrayList persons=new ArrayList();
           person personInstance1=new person("p1","zhang",new String[] {"dance1","jump1","read1"});
           person personInstance2=new person("p1","zhang",new String[] {"dance2","jump2","read2"});
           person personInstance3=new person("p1","zhang",new String[] {"dance3","jump3","read3"});
           persons.add(personInstance1);
           persons.add(personInstance2);   
           persons.add(personInstance3);            
           request.setAttribute("persons",persons);
      %>
     <logic:iterate id="elementPerson" name="persons">
            <br>=========${elementPerson.id} ${elementPerson.name}======<br>
         <logic:iterate id="elementLove" name="elementPerson" property="love">
                ${elementLove }
          </logic:iterate>
     </logic:iterate>
                  

            举例:


              1)从数据库中查询结果用<logic:iterate>标签进行输出(注意indexId的使用
                     <logic:iterate id="empList" name="emps" indexId="index">
                         <c:choose>
                            <c:when test="${index%2==0}">
                              <tr align="center" bgcolor="#FFFFFF">
                            </c:when>
                         <c:otherwise>
                               <tr align="center" bgcolor="yellow">
                         </c:otherwise>
                         </c:choose>
                              <td><bean:write name="empList" property="id"/></td>
                              <td><bean:write name="empList" property="name"/></td>
                             <td><bean:write name="empList" property="job"/></td>
                            </tr> 
                        </logic:iterate>
              2)定义一个部门类,里面有一个属性为该部门的员工集合,输出部门信息与该部门员工信息,depts里面包含

                 多个dept,一个dept里面包含多个emp
                以分组报表有形式进行输出
      ===========================dept部门类==================================
        public class dept  {
              private String id;
              private String name;   
               public ArrayList getEmps() { //说明对于"只读属性"可以直接写get方法,没有必要
                                                            //定义私有变量,也就是说该javaBean自动会有emps属性
                  ArrayList empsList=new ArrayList();
                  String sql="select empno,ename from emp where deptno="+this.id;
                  ResultSet rs=db.runSql(sql);
                  while(rs.next())  {
                          emp empInstance=new emp(rs.getString(1),rs.getString(2));
                          empsList.add(empInstance);
                   }
                   return empsList;
               }
                 ...................
           } 
    =============================depts所有部门类=============================
               public static ArrayList queryAll(){
                       ArrayList deptsList=new ArrayList();
                       String sql="select deptno,dname from dept";
                       ResultSet rs=db.runSql(sql);
                       while(rs.next()) {
                            dept deptInstance=new dept();
                            deptInstance.setId(rs.getString(1));
                            deptInstance.setName(rs.getString(2));
                            deptsList.add(deptInstance);
                       }
                       return deptsList;
                }

               3)通过订单表查看订单明细表.可以定义一个类得到所有订单,定义一个订单类,里面有
                 多个订单明细类,定义订单明细类。(在定义订单类中通过超链接显示所有订单明细表)

               2)实现分页(创建一个用于分页的类,使用单例模式)
        ==============================分页类=================================
         public class emps  {
                   private int currentPage=1;
                   private final int pageSize=4; 
                   private static emps demo=null;
                   private emps(){
  
                    }
                    public static emps newInstance(){
                        if (demo==null) {
                                 demo=new emps();
                        }
                        return demo;
                    }
   
                    public   List getCurrentPageList() {

                           List list=new ArrayList();
                           String sql=String.format("select * from (select * from emp where empno not in

                                                                          (select empno from emp where rownum<=(%d-1)*%d))

                                                          where rownum<=%d",this.currentPage,this.pageSize,pageSize);
                           ResultSet rs=dbManager.RunHasResultSql(sql);
                           while(rs.next())  {
                                  emp empInstance=new emp();
                                  empInstance.setId(rs.getString(1));
                                  empInstance.setName(rs.getString(2));
                                  empInstance.setJob(rs.getString(3));
                                  list.add(empInstance);
                            }
                            return list;
  
                   }

                  public int getCurrentPage() {
                         return this.currentPage;
                  }

                  public void setCurrentPage(int currentPage){
                        switch(currentPage) {
                                   case 0://表示首页
                                            this.currentPage=1;
                                            break;
                                   case 1://表示上一页
                                             if (this.currentPage>1) {
                                                    this.currentPage--;
                                             }
                                             break;
                                   case 2: //表示下一页
                                               if (this.currentPage<this.getTotalPage()) {
                                                        this.currentPage++;
                                                }
                                                break;
                                   case 3: //表示末页
   
                                            this.currentPage=this.getTotalPage();
                                             System.out.print(this.getTotalPage());
                                             break;   
                           }
  
                   }
 
 public int getTotalPage()  {
         int rowCount=0,totalPages=0;
         String sql="select count(*) from emp";
         ResultSet rs=dbManager.RunHasResultSql(sql);
         if (rs.next())  {
              rowCount=rs.getInt(1);
         }
        if (rowCount%this.pageSize==0) {
              totalPages=rowCount/this.pageSize;
        } else {
              totalPages=rowCount/this.pageSize+1;
        }
 
        return totalPages;
  }
 
 public int getPageSize() {
      return pageSize;
 }
===============================jsp页面===================================
   <logic:notPresent name="emps">
   <c:set var="emps" value="<%=emps.newInstance().getCurrentPageList()%>" scope="request"/>
  </logic:notPresent> //注意使用<c:set>标签
 
   <logic:iterate id="empList" name="emps" indexId="index">


=============================================================================================
 
    <logic:Present>判断四种范围内的变量是否不存在


            格式: <logic:Present name="要判断的四种范围内的变量名">     做一些事件
                       </logic:Present>

 

    <logic:redirect/>重定向


             格式:<logic:redirect href="要重定向的页面"/>
             相当于 response.sendRedirect(),会丢失请求中的数据
              
             <logic:forward/>转发请求
                  格式:<logic:forward name="msg"/>   
                  说明:
                     1)name必须是在struts-config.xml文件中定义的全局forward
                     2)<jsp:forward page="msg.jsp">也相当于转发,但它没有全局forward的限制

 

分享到:
评论

相关推荐

    struts标签 <write><logic>

    `&lt;write&gt;`和`&lt;logic&gt;`是Struts 1.x中的两个核心标签,主要用于视图层的展示和逻辑控制。 `&lt;write&gt;`标签是Struts的HTML标签库的一部分,主要用来在JSP页面中显示来自ActionForm或者Servlet请求范围内的属性值。例如...

    Struts1.x常用的开发包,需要学习struts1.x朋友可以下载

    5. **JSP和Tags**:Struts1.x提供了丰富的JSP标签库,如logic标签(条件判断)、bean标签(对象操作)、html标签(表单元素)等,简化了视图层的开发,使得业务逻辑和展示逻辑得以分离。 6. **国际化与本地化**:...

    java Struts 1.x 框架 Web 开发

    5. **JSP Tag Library**:Struts 提供了一系列自定义JSP标签库,如logic、bean、html等,简化了视图层的开发。例如,`&lt;s:form&gt;`用于创建表单,`&lt;s:textfield&gt;`用于创建输入字段,`&lt;s:submit&gt;`用于提交表单。 6. **...

    Struts1.x标签库

    Struts1.x标签库是Apache Jakarta Struts框架的一部分,它为开发Java Web应用程序提供了一组丰富的标签,使得开发者能够更方便地处理常见的Web界面任务。这些标签被组织成五个主要的标签库,分别是Bean Tags、...

    struts1.x apps 所有最新的Struts1.x项目应用

    本资源集合包含了所有最新的Struts1.x项目应用,为开发者提供了一个宝贵的参考资料库。 Struts1.x的核心组件包括: 1. **ActionServlet**:这是Struts框架的核心,作为Servlet拦截请求,根据配置文件(struts-...

    Struts1.x的登录示例

    使用Struts的 `&lt;logic:messagesPresent&gt;` JSP标签来显示任何错误消息,或者在视图层使用条件语句来根据Action的返回值展示不同的界面。 8. **运行和测试**: 配置好Web应用服务器(如Tomcat),将项目部署上去,...

    struts1.x_Tags

    - **logic标签库**: 提供逻辑控制,如`&lt;logic:equal&gt;`、`&lt;logic:notEqual&gt;`等,用于条件判断和循环。 - **nested标签库**: 支持嵌套属性的访问,使标签能够更方便地处理复杂的JavaBean结构。 4. **标签使用注意...

    html版struts1.X标签详解-帮助文档

    3. **Logic标签**:Logic标签库提供了条件判断和循环控制功能。比如,`&lt;logic:equal&gt;`用于比较两个值是否相等,`&lt;logic:iterate&gt;`用于遍历集合对象。 4. **Html标签**:除了与ActionForm相关的标签外,Html标签库还...

    struts1.x标签库详解

    Struts1.x 标签库详解 Struts1.x 标签库是 Apache Jakarta 项目的一部分,目标是为构建基于 Java 的 web 应用程序提供一个框架。Struts 提供了非常多的标签,依据功能和使用习惯的不同被分到了五个标签库中:Bean ...

    struts1.x标签详解

    ### Struts1.x 标签详解 #### 一、引言 Struts 是 Apache Jakarta 的一个著名开源项目,旨在为构建基于 Java 的 Web 应用程序提供一个强大的框架。Struts 提供了大量的标签来帮助开发者简化开发过程。本文将详细...

    经典的struts1.x的标签

    在Struts1.x中,标签库是视图层的重要组成部分,极大地简化了页面的开发工作。 Struts1.x的标签库主要包括以下几个部分: 1. **html标签**:这是最基本的标签库,用于创建HTML表单元素。例如,`&lt;html:text&gt;`标签...

    扩展Struts1.x标签

    标题提到的"扩展Struts1.x标签"指的是开发者根据项目需求自定义了Struts1.x的标签库,增加了新的功能,例如Select和Table标签。 1. **Select标签**: Select标签是用于在HTML表单中创建下拉选择框的。原生的Struts...

    Struts logic标签及增删改查

    `logic`标签库是Struts 1.x时代的产物,虽然现在已经被更先进的技术如Spring MVC所取代,但在很多遗留系统或教学环境中仍然有着广泛的应用。下面我们将深入探讨`logic`标签库中的主要标签和它们在增删改查中的应用。...

    Struts1.x 中文帮助文档

    6. **JSP和Taglib**:Struts1.x提供了一系列自定义标签库,如logic、bean、html等,使得在JSP页面中编写控制逻辑变得简单。 7. **国际化和本地化**:Struts1.x支持多语言,通过资源文件实现不同地区的文本和日期...

    Struts 1.x中批量封装对象

    Struts 1.x 是一个非常经典的Java Web框架,它在早期的Web开发中占据了重要的地位。这个框架的主要目的是为了提供一种MVC(Model-View-Controller)架构,以帮助开发者更好地组织和管理Web应用程序的逻辑。批量封装...

    struts1.x 常用知识详解

    1. **Struts标签库**:Struts1.x提供了丰富的JSP标签,如logic、bean、html等,简化了页面开发,提高了代码可读性。 2. **Tiles框架集成**:Tiles扩展了Struts,允许定义可重用的页面布局,提高了视图的复用性和可...

    Struts1.x.rar

    5. **JSP和TagLib**:在视图层,Struts1.x提供了一系列的定制标签库(TagLib),如logic、bean、html等,使得开发者能够更方便地创建动态网页。在购物网站中,这些标签可以用来显示商品列表、处理表单提交等。 6. *...

    Struts1.x_action

    Struts的标签库如`struts-bean`, `struts-html`, `struts-logic`等,提供了丰富的标签帮助开发者更方便地在JSP中操作ActionForm数据和控制页面逻辑。 4. **DispatcherServlet**:Struts的核心控制器是ActionServlet...

    struts1.x validator框架验证入门例子

    Struts1.x是一个经典的Java Web开发框架,它极大地简化了MVC(模型-视图-控制器)架构的应用程序开发。Validator框架是Struts1.x的一个重要组成部分,主要用于处理客户端和服务器端的数据验证。在这个入门例子中,...

    struts in action (struts1.x)

    `Struts 1.x` 提供了一套强大的JSP标签库,如 `&lt;html:form&gt;`、`&lt;logic:iterate&gt;` 等,简化了JSP页面的编写,使代码更易读、更少出错。 ### 7. 表单验证 `Struts 1.x` 提供了内置的表单验证机制,允许开发者在 `...

Global site tag (gtag.js) - Google Analytics