strut1.x及JSTL的标签库、EL表达式

struts标签库

国际化配置

配置国际化

1.国际化配置

在struts自带的app中的struts-config.xml中的<message-resources
parameter="MessageResources"/>加入到项目中的配置文件中默认为struts-config.xml。

2.国际化文件导入

MessageResources.properties(位于
\struts-1.3.10\src\apps\blank\src\main\java\MessageResources.properties ),并将该文件放入项目文件的src下

在jsp文件头部分加入

<%@taglib uri="http://struts.apache.org/tags-bean"prefix="bean" %>

语法

hello标签:  <bean:write name="hello"/>

这样就会显示在request设置的信息

Java

request.setAttribute("hello","cfltaglib");

分类

在struts1.3的版本中,taglib分为: bean
htmllogic nested

每种标签的使用和定义说明在相应dtld文件中有相关的说明。tld文件是什么?打开文件可以看见,主要是一些xml配置,记录了该标签.

如:

版本号  <tlib-version>1.3</tlib-version>

jsp版本号  <jsp-version>1.2</jsp-version>

建议前缀使用名,当然也可以不使用它的建议,为了统一标准和开发的便利最好还是和建议的一致或者整个项目开发组保持一致即可。

<short-name>bean</short-name>

uri资源定位文件的地址<uri>http://struts.apache.org/tags-bean</uri>

这个即是用来访问存放在struts服务服务器上的资源地址的,这个地址是tags-bean的资源定位地址。当然和我们平时接触的url不一样。

tld的根目录是taglib,用来定义对应的标签的描述放在子元素的tag元素中,对应的例子和使用说明。

Bean

用来访问javabean中的定义的一些数据,而查找则是利用标签中的name来查找,查找的顺序是则是按照设置的scope里设置的范围来进行查找。如果没有针对该标签设置特定的范围则查找的顺序则是page,request,
session, application。另外三中标签也是这样一个原理来进行查找和显示处理数据的。

1.输出文本

<bean:write name="hello"/>

2.格式化日期

<bean:write name="propertyname"format="yyyy-mm-dd" />

3.输出javabean对象属性

<bean:write name="beanname"property="property" />

Name:为javabean对象

property:为javabean中提供了get和set方法的属性。

Logic

执行逻辑判断,这里的逻辑判断仅限于用于数据显示的逻辑判断和后面关于业务的逻辑处理还是有区别的。标签着重的还是数据的显示。

引入<%@taglib uri="http://struts.apache.org/tags-logic"prefix="bean" %>

1.是否为空

<logic:empty name="hello">
当为空时进入这里进行判断
</logic:empty>
<logic:empty name="hello">
当不为空是则进入这里进行判断
</logic:empty>

类似的还有logic:present

2.迭代器

<logic:iterate name="listname">
</logic:iterate>

其实显示大都一致,无非是在后台对相应的变量在javabean内配置相应的数据即可。

Html

主要是用来配置前端表单显示的标签库,使用起来很是方便。

如:<html:button />则会构造一个按钮,有点类似在.net中的asp空间,<asp:button/>让我有点恍如昨天还在.net中的赶脚。

更多:http://www.360doc.com/content/13/1227/16/1007797_340571617.shtml

EL表达式

在struts1.x中还配用了EL表达式来进行辅助工作,类似脚本的表达结构,也是直接在page、request、session、application中查找数据,但是不同的是直接返回的是在javabean中设置的对象类型。设置的是何种数据类型就返回什么样的数据类型。当然也是可以直接访问在javabean的对象的属性数据的。

语法:

${ name} or ${javabean.property}

使用起来相对简单,用户不用考虑数据的类型直接使用。而后struts2因为安全问题,不能嵌套使用EL表达式了,但是在html标签中还是可以使用。struts使用的是OGNI表达式,一种lambda的表达方式,但是也能够兼容普通的写法。后面的文章会解释使用。

也就是<s:url id="selectData1"value="${pageContext.request.contextPath}这样是不可以的,而<span>${name}</span>还是可以使用的。另外在页面也可以启用表达式,----<%@ page isELIgnored="false" %> 启用EL表达式,jsp2.0默认是启用的。

el还涉及到操作符,也能够完成类似struts1.x标签库的效果。更多:http://www.blogjava.net/supercrsky/articles/179363.html

JSTL

Jsp standard taglibrary一个不断完善的开源标签库,包括core
fmt sql tlv四个标签库。

使用时需要引用到两个jar包,jstl.jar和standard.jar。迭代和条件判断、数据管理格式化、XML
操作以及数据库访问。通常EL表达式会配合使用。

环境配置

导入.jar包

Jstl.jar和standard.jar

导入uri资源文件

<%@ taglib uri="http://java.sun.com/jsp/jstl/core"prefix="h"%>,这里我自定义写成了h,当然一般情况还是推荐写为c。

分类

Core

主要用于显示数据,可以替代 out
或者 <%=%> 标签来输出对象的值。类似struts中的write

demo

<li>测试jstl核心库</li>
	<br>
	<li>普通表达式</li>
	<br>   
	<h:out value="123普通文本显示" />
	<li>结合EL表达式显示在servlet中设置的属性</li>
	<br>   :
	<h:out value="${hello}" />
	<li>当显示为空时,显示相应的缺省值</li>
	<br>   :
	<h:out value="${hellodefault }" default="没有值" />
	<li>显示html字符串</li>
	<br>   :显示html效果  :${zi }
	<br>   :利用核心库标签直接显示html   :
	<h:out value="${zi }" escapeXml="true" />
	<br>
	<p>H:set & H:remove 设置变量及移除</li>
	<b r>
		  :<h:set value="setVal" var="setID" />显示在set中的value“setVal”  :
		${setID }
	<li>if条件控制</li>
	<br>
		<h:if test="${V1 lt V2 }">
			  :v1 小于 vs
		</h:if>
	<p>
	循环控制
	<li>传统jsp方式加载表格数据</li>
	<br>
	<%
		List userList = (List) request.getAttribute("user");
	%>
	<table border="1">
			<tr>
				<td>name</td>
				<td>age</td>
				<td>height</td>
			</tr>
			<%if(userList==null || userList.size()==0){

			%>
			<tr>
				<td colspan=3>对不起,没有数据!</td>
			</tr>
			<%}else{
				for(Iterator iter=userList.iterator();iter.hasNext();){
					People people =(People)iter.next();
			%>
			<tr>
				<td><%=people.student.name%></td>
				<td><%=people.student.age %></td>
				<td><%=people.height %></td>
			</tr>
			<%
				}
				 	}
			%>

		</table></body>

    <li>利用jstl标签显示表格数据</li>
    <br>
    <table border="1">
    	<tr>
    		<td>name</td>
    		<td>age</td>
    		<td>height</td>
    	</tr>
    	<h:choose>
    		<h:when test="${ empty  user}">
    			<tr><td colspan=3>真的,该表格没有数据!</td></tr>
    		</h:when>
    		<h:otherwise>
    			<h:forEach items="${user}" var ="user" varStatus="vs">
    			<h:choose>
    				<h:when test="${vs.count mod 2==0 }">
    					<tr bgcolor="grey">
    				</h:when>
    				<h:otherwise>
    					<tr bgcolor="red">
    				</h:otherwise>
    			</h:choose>
    					<td>${user.student.name }</td>
    					<td>${user.student.age }</td>
    					<td>${user.height }</td>
    					</tr>
    			</h:forEach>
    		</h:otherwise>
    	</h:choose>
    </table><br>

    <li>异常处理</li>
    <h:catch var="msg">
    	<%
    		Integer.parseInt("shishi");
    	 %>
    </h:catch>
    ${msg }<br>
    <p>
    <li>import引入资源</li>
    <h:import url="http://localhost:8080/drp3.0/login.jsp" />
    <p>
    <li>c:url,c:param演示指定url传值</li>
    <p>
    <h:url value="http://www.baidu.com" var="val">
    	<h:param name="userID" value="3"></h:param>
    	<h:param name="pwd" value="123456"></h:param>
    </h:url>
    ${val }<br>
    <li>url重定向</li>   

Fmt

顾名思义就是针对格式化的处理

demo

    <li>测试format日期</li>  
    <fmt:formatDate value="${riqi}" /><br>
    <li>short格式日期</li>  
    <fmt:formatDate value="${riqi}"  dateStyle="short"/>
    <li>both格式日期</li>  
    <fmt:formatDate value="${riqi}"  type="both"/>

Sql

直接在页面上针对数据库进行操作,当然一般这种情况很少使用,仅限特殊情况。

demo

建立数据库连接
<sql:setDataSourcedriver=”driverClass” url=”jdbcURL”

                                              user=”username”

                                              password=”pwd”                

                                              [var=”name”]

                                              [scope=”page|request|session|application”]/>

后序

JSTL、struts标签、EL表达式都是自定义标签的一种,而EL是servlet的标准,通常都会兼容使用,在一开始是为了来简化页面,杜绝页面java代码的出现;struts标签机JSTL都需要相应的jar包来配置,以及相应的uri定位资源引入。jstl是相对的标准,而struts开发包也携带了jstl的jar包,查询资料有讲struts标签的性能相对jstl差点,具体还没有实践过,没有体会。总的来讲,都是标签库的一种。具体使用,个人习惯结合项目标准来吧。

时间: 2024-11-09 15:46:30

strut1.x及JSTL的标签库、EL表达式的相关文章

EL表达式 JSTL的标签库 EL的函数 自定义EL函数 自定义标签 JSP的开发模式 注册登陆案例

EL表达式 JSTL的标签库 EL的函数 自定义EL函数 自定义标签 JSP的开发模式 注册登陆案例 EL表达式 1.获取域对象中的值 2.EL表达式支持运算 ${ num1 + num2 } EL获取常用的WEB对象 1.pageScope 获取page域对象的值 2.requestScope 获取request域对象的值 3.sessionScope 获取session域对象的值 4.applicationScope 获取application域对象的值 * 例子:向某个域中来存入值 req

2使用struts2的标签库 EL表达式

与struts1标签库进行比较,struts2的标签库有一个巨大的改进之处就是struts2标签库不依赖于任何表现层技术.就是说struts2的大部分标签可以在jsp页面中使用,也可以在Velocity和FreeMarker等模板技术中使用. Struts2的标签都定义在s标签库中,URI为/struts-tags的空间下.简单的对struts2的标签进行分类: UI标签,用于HTML元素的标签. 非UI标签,主要用于数据访问,逻辑控制等的标签. Ajax标签,用于Ajax支持的标签. 首先将s

EL表达式 与 JSTL标准标签库

目录 EL表达式 什么是EL表达式 作用 EL内置11对象 EL执行表达式 JSTL 什么是JSTL JSTL标准标签库有5个子库 把JSTL标签库jar包引入工程当中 if标签 foreach标签 JavaEE开发模式 什么是开发模式 JavaEE模式 EL表达式 什么是EL表达式 EL(Express Lanuage)表达式可以嵌入在jsp页面内部 减少jsp脚本的编写 EL出现的目的是要替代jsp页面中脚本的编写. 作用 ? EL最主要的作用是获得四大域中的数据 ? 从四大域当中取数据 p

jsp之jstl核心标签库

JSTL核心标签库技术 1. JSTL介绍 在JSP页面中即可书写html,也可以书写Java代码,导致页面混乱,维护,修改,升级难度加大,于是国际上不同的公司在实际应用中,根据页面的需求将Java代码进行抽离封装,页面上需要的时候,通过标签(和书写HTML标签差不多)的方式引入封装的Java代码.由于每个公司都有自己一套标签,开发人员在使用标签的时候,可以使用不同公司研发的标签,导致标签严重重复.为了解决这个问题,Apache Jakarta小组归纳汇总了那些网页设计人员经常遇到的问题,开发了

JSP常用标签——JSTL标签和EL表达式

一.JSTL简介 1.什么是JSTL JSTL是Java中的一个定制标记库集.(这个标记库集不需要自己编写,可以直接使用) 2.为什么要使用JSTL 实现了JSP页面中的代码复用(基于标签库原理,重复率较高的代码块支持复用,提高效率) 书写JSP页面时可读性更强(长得很像xml,方便前端查看和参与开发) 用事实告诉你为什么使用JSTL: 实现: 但是,使用JSTL效果如下: 3.JSTL环境搭建 JSTL的下载: 下载地址:http://archive.apache.org/dist/jakar

JSTL标准标签库详解

JSTL标签库的使用是为类弥补html表的不足,规范自定义标签的使用而诞生的.在告别modle1模式开发应用程序后,人们开始注重软件的分层设计,不希望在jsp页面中出现java逻辑代码,同时也由于自定义标签的开发难度较大和不利于技术标准化产生了自定义标签库.JSTL标签库可分为5类: q        核心标签库 q        I18N格式化标签库 q        SQL标签库 q        XML标签库 q        函数标签库 本章将对这些内容一一讲述. 9.1 核心标签库 J

Java学习——JSTL标签与EL表达式之间的微妙关系

原文总结的太好了,忍不住记录.转发. 原文地址:http://blog.csdn.net/u010168160/article/details/49182867 目录(?)[-] 一EL表达式 EL相关概念 EL基本格式 EL语法组成-标识符 PS使用EL的时候默认会以一定顺序pageContextrequestsessionapplication搜索四个作用域将最先找到的变量值显示出来 开启和关闭EL表达式 二JSTL标签库 相关概念 JSTL标签库分类 JSTL的优点 为什么要用JSTL 使

JSTL 核心标签库 使用(转)

JSTL 核心标签库标签共有13个,功能上分为4类: 1.表达式控制标签:out.set.remove.catch 2.流程控制标签:if.choose.when.otherwise 3.循环标签:forEach.forTokens 4.URL操作标签:import.url.redirect 使用标签时,一定要在jsp文件头加入以下代码: <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"

JSTL 核心标签库 使用

div id="cnblogs_post_body"> JSTL 核心标签库标签共有13个,功能上分为4类: 1.表达式控制标签:out.set.remove.catch 2.流程控制标签:if.choose.when.otherwise 3.循环标签:forEach.forTokens 4.URL操作标签:import.url.redirect 使用标签时,一定要在jsp文件头加入以下代码: <%@taglib prefix="c" uri="