25 三月 2008

I18N格式标签库总结

I18N标签库主要进行国际格式化支持,此功能可以对一个特定的语言请求作出合适的响应。如果要在JSP页面中使用I18N标签库,如下:

<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>

I18N标签库主要包含:国际化、消息和数字日期格式化。

一、国际化(<fmt:setLocale>和<fmt:requestEncoding>)

  1. <fmt:setLocale>:用来设定用户的语言区域。
  2. <fmt:requestEncoding>:用来设定字符串编码,功能和ServletRequest.setCharacterEncoding()相同。

二、消息(<fmt:message>、<fmt:param>、<fmt:bundle>和<fmt:setBundle>)

  1. <fmt:message>:从指定的资源中把特定关键字中的值抓取出来。
  2. <fmt:param>:从数据源抓出内容时,进行动态参数的设定。
  3. <fmt:bundle>:用来设定本体内容的数据来源。
  4. <fmt:setBundle>:用来设定默认的数据来源,也可以将其设定到属性范围中。

三、数字、日期格式化(<fmt:formatNumber>、<fmt:parseNumber>、<fmt:formatDate>、
<fmt:parseDate>、<fmt:setTimeZone>和<fmt:timeZone>)

  1. <fmt:formatNumber>:根据设定的区域将数字改为适当的形式。
  2. <fmt:parseNumber>:将字符串类型的数字、货币或百分比,转化为梳子类型。
  3. <fmt:formatDate>:用来格式化日期和时间。
  4. <fmt:parseDate>:将字符串类型的时间或日期都转换为日期时间类型。
  5. <fmt:setTimeZone>:用来设定默认时区或是将时区存储至属性范围中。
  6. <fmt:timeZone>:设定暂时时区。

24 三月 2008

pageContext、request、session和application的区别

我们经常会将pageContext、request、session和application混为一谈,因为它们都可以通过setAttribute()和getAttribute()来设定或读取属性。但它们之间是有别的,它们最大的区别在于使用范围。

pageContext对象的范围只适用于当前页面范围,即超过这个页面就不能够使用了。所以使用pageContext对象向其它页面传递参数是不可能的。

request对象的范围是指在一JSP网页发出请求到另一个JSP网页之间,随后这个属性就失效。

session的作用范围为一段用户持续和服务器所连接的时间,但与服务器断线后,这个属性就无效。比如断网或者关闭浏览器。

application的范围在服务器一开始执行服务,到服务器关闭为止。它的范围最大,生存周期最长。

22 三月 2008

SQL标签库总结

SQL标签库提供了访问关系数据库的能力,提供了增、删、改、查以及事务处理功能。在JSP页面中使用SQL标签库,如下:
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>

SQL标签库包含<sql:setDataSource>、<sql:query>、<sql:param>、<sql:dateParam>、<sql:update>、<sql:transaction>

  1. <sql:setDataSource>用于设置数据源。

  2. <sql:query>用于对数据库进行查询。

  3. <sql:param>用于设置SQL语句中标记为(?)的参数值,类似于PreparedStatement中的setXXX()方法的作用。

  4. <sql:dateParam>用java.util.Date类型的值设置SQL语句中标签为(?)的参数。

  5. <sql:update>用于执行增、删、改操作,还可以执行DDL语句。

  6. <sql:transaction>用于为<sql:query>和<sql:update>子标签建立事务处理上下文。

20 三月 2008

Core标签库总结

Core标签库作用:主要包含了一般用途的标签、条件标签、迭代标签和URL相关的标签。在JSP中使用Core标签库,使用taglib指令如下:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

一、表达式操作(<c:out>、<c:set>、<c:remove>和<c:catch>)

  1. <c:out>:用于计算一个表达式并将结果输出到JspWriter对象。它的功能类似于JSP中的表达式<%=expression%>,或者EL表达式${el-expression}。
  2. <c:set>:用来将变量存储至JSP范围中或是JavaBean的属性中。
  3. <c:remove>:用来移除变量。
  4. <c:catch>:用来处理错误异常,并且将异常信息存储起来。

二、流程控制(<c:if>、<c:chooise>、<c:when>和<c:otherwise>)

  1. <c:if>:功能类似于程序语言中的if语句。
  2. <c:choose>:只用作<c:when>和<c:otherwise>的父标签。
  3. <c:when>:类似于程序语言中的when。
  4. <c:otherwise>:当所有<c:when>的条件没有成立时,则执行这个标签的本体内容。

三、迭代操作<c:forEach>和<c:forTokens>

  1. <c:forEach>:循环控制,可以将集合Collection中的成员循序访问一遍。当条件符合时,会持续重复执行本体内容。支持Java中的集合框架。
  2. <c:forTokens>:用来浏览字符串中所有成员,其成员有自定义符合所分割。

四、URL操作<c:import>、<c:redirect>和<c:url>

  1. <c:import>:用来导入其它文件或者JSP页面。和<jsp:include>的区别在于后者只能包含和自己同一个web应用程序下的文件;前者可以包含不同web应用程序下的文件。
  2. <c:redirect>:将客户的请求从一个JSP网页导向其它文件。
  3. <c:url>用来产生一个URL。

Powered by Zoundry Raven

16 三月 2008

类和接口

从网上看到的

把接口比喻成寄生虫。寄生虫不能独自存活。接口也是,必须要靠类来实现它。

如果再把类看成人。每个人只能有一个父亲(后爹不提),但是身上可以有多个寄生虫。

interface InterfaceA{}
interface InterfaceB{}
interface InterfaceC{}

class ClassA{}
class ClassB{}
class ClassC{}

//有一个父亲,身上没有寄生虫。是正确的
class SubClassA extends ClassA {}

//有一个父亲,寄生多个寄生虫。正确的
class SubClassA extends ClassA implements InterfaceA,InterfaceB,InterfaceC{}

//有一个以上的父亲,身上没有寄生虫。错误的
class SubClassA extends ClassA,ClassB,ClassC{}

//有一个以上的父亲,身上有很多寄生虫。错误的
class SubClassA extends ClassA,ClassB,ClassC implements InterfaceA,InterfaceB,InterfaceC{}