- 浏览: 43678 次
- 性别:
- 来自: 广州
文章分类
最新评论
<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 1.x | 通过stuts中的Token(令牌)阻止页面重复提交
2009-04-15 22:38 1355通过stuts中的Token(令牌)阻止页面重复提交 ... -
Struts 1.x | 让dw支持struts
2009-04-15 22:37 1066让dw支持struts 1) 正常情 ... -
Struts 1.x | validator 动态验证框架
2009-04-15 22:35 2192Struts validator 动态验证框架 1) ... -
Struts 1.x | DynaActionForm (动态ActionForm)
2009-04-15 22:34 2496struts动态ActionForm 1)什么是动态 ... -
Struts 1.x | 使用struts中的tiles框架技术使用模板页
2009-04-15 22:32 14681) 在开发Web应用程序时,常常要求同一个站点的所有Web页 ... -
Struts 1.x | DispatchAction
2009-04-15 22:31 1629DispatchAction 1)使用Dis ... -
Struts 1.x | <bean> 标签库
2009-04-15 20:48 1479Bean标签库 1)Bean标 ... -
Struts 1.x | <html> 标签库
2009-04-15 20:44 2970html标签库 生成html元素的标签 ... -
2009-03-26 | user.UserAction ClassNotFoundExeption
2009-04-15 19:13 749背景:struts ,DispatchAction 实验,项目 ...
相关推荐
`<write>`和`<logic>`是Struts 1.x中的两个核心标签,主要用于视图层的展示和逻辑控制。 `<write>`标签是Struts的HTML标签库的一部分,主要用来在JSP页面中显示来自ActionForm或者Servlet请求范围内的属性值。例如...
5. **JSP和Tags**:Struts1.x提供了丰富的JSP标签库,如logic标签(条件判断)、bean标签(对象操作)、html标签(表单元素)等,简化了视图层的开发,使得业务逻辑和展示逻辑得以分离。 6. **国际化与本地化**:...
5. **JSP Tag Library**:Struts 提供了一系列自定义JSP标签库,如logic、bean、html等,简化了视图层的开发。例如,`<s:form>`用于创建表单,`<s:textfield>`用于创建输入字段,`<s:submit>`用于提交表单。 6. **...
Struts1.x标签库是Apache Jakarta Struts框架的一部分,它为开发Java Web应用程序提供了一组丰富的标签,使得开发者能够更方便地处理常见的Web界面任务。这些标签被组织成五个主要的标签库,分别是Bean Tags、...
本资源集合包含了所有最新的Struts1.x项目应用,为开发者提供了一个宝贵的参考资料库。 Struts1.x的核心组件包括: 1. **ActionServlet**:这是Struts框架的核心,作为Servlet拦截请求,根据配置文件(struts-...
使用Struts的 `<logic:messagesPresent>` JSP标签来显示任何错误消息,或者在视图层使用条件语句来根据Action的返回值展示不同的界面。 8. **运行和测试**: 配置好Web应用服务器(如Tomcat),将项目部署上去,...
- **logic标签库**: 提供逻辑控制,如`<logic:equal>`、`<logic:notEqual>`等,用于条件判断和循环。 - **nested标签库**: 支持嵌套属性的访问,使标签能够更方便地处理复杂的JavaBean结构。 4. **标签使用注意...
3. **Logic标签**:Logic标签库提供了条件判断和循环控制功能。比如,`<logic:equal>`用于比较两个值是否相等,`<logic:iterate>`用于遍历集合对象。 4. **Html标签**:除了与ActionForm相关的标签外,Html标签库还...
Struts1.x 标签库详解 Struts1.x 标签库是 Apache Jakarta 项目的一部分,目标是为构建基于 Java 的 web 应用程序提供一个框架。Struts 提供了非常多的标签,依据功能和使用习惯的不同被分到了五个标签库中:Bean ...
### Struts1.x 标签详解 #### 一、引言 Struts 是 Apache Jakarta 的一个著名开源项目,旨在为构建基于 Java 的 Web 应用程序提供一个强大的框架。Struts 提供了大量的标签来帮助开发者简化开发过程。本文将详细...
在Struts1.x中,标签库是视图层的重要组成部分,极大地简化了页面的开发工作。 Struts1.x的标签库主要包括以下几个部分: 1. **html标签**:这是最基本的标签库,用于创建HTML表单元素。例如,`<html:text>`标签...
标题提到的"扩展Struts1.x标签"指的是开发者根据项目需求自定义了Struts1.x的标签库,增加了新的功能,例如Select和Table标签。 1. **Select标签**: Select标签是用于在HTML表单中创建下拉选择框的。原生的Struts...
`logic`标签库是Struts 1.x时代的产物,虽然现在已经被更先进的技术如Spring MVC所取代,但在很多遗留系统或教学环境中仍然有着广泛的应用。下面我们将深入探讨`logic`标签库中的主要标签和它们在增删改查中的应用。...
6. **JSP和Taglib**:Struts1.x提供了一系列自定义标签库,如logic、bean、html等,使得在JSP页面中编写控制逻辑变得简单。 7. **国际化和本地化**:Struts1.x支持多语言,通过资源文件实现不同地区的文本和日期...
Struts 1.x 是一个非常经典的Java Web框架,它在早期的Web开发中占据了重要的地位。这个框架的主要目的是为了提供一种MVC(Model-View-Controller)架构,以帮助开发者更好地组织和管理Web应用程序的逻辑。批量封装...
1. **Struts标签库**:Struts1.x提供了丰富的JSP标签,如logic、bean、html等,简化了页面开发,提高了代码可读性。 2. **Tiles框架集成**:Tiles扩展了Struts,允许定义可重用的页面布局,提高了视图的复用性和可...
5. **JSP和TagLib**:在视图层,Struts1.x提供了一系列的定制标签库(TagLib),如logic、bean、html等,使得开发者能够更方便地创建动态网页。在购物网站中,这些标签可以用来显示商品列表、处理表单提交等。 6. *...
Struts的标签库如`struts-bean`, `struts-html`, `struts-logic`等,提供了丰富的标签帮助开发者更方便地在JSP中操作ActionForm数据和控制页面逻辑。 4. **DispatcherServlet**:Struts的核心控制器是ActionServlet...
Struts1.x是一个经典的Java Web开发框架,它极大地简化了MVC(模型-视图-控制器)架构的应用程序开发。Validator框架是Struts1.x的一个重要组成部分,主要用于处理客户端和服务器端的数据验证。在这个入门例子中,...
`Struts 1.x` 提供了一套强大的JSP标签库,如 `<html:form>`、`<logic:iterate>` 等,简化了JSP页面的编写,使代码更易读、更少出错。 ### 7. 表单验证 `Struts 1.x` 提供了内置的表单验证机制,允许开发者在 `...