java web开发人员经常使用标签
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服务server上的资源地址的。这个地址是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差点,详细还没有实践过。没有体会。总的来讲,都是标签库的一种。
详细使用。个人习惯结合项目标准来吧。