??xml version="1.0" encoding="utf-8" standalone="yes"?> 解决一Q?/P>
陷阱Q?BR>Calendar中的MONTH字段和数l下标一P?开始,0代表Calendar.JANUARYQ?代表Calendar.FEBUARY…?2代表ơ年Calendar.JANUARY。因此用戯入的月䆾在置入Calendar对象之前必须q行处理Q即减一?BR> Joshua BlochQ《Effective Java》的作者,J2SE 1.5的主要开发h员之一Q效仿William BlakeQ?757-1827Q英国诗人)(j)的?A >Tiger》一诗,些特性撰写了(jin)q样一l诗:(x) q一首是总说Tiger中的能开发变得简单的各种新语aҎ(gu)?/P>
q一首单表Enhanced for Loop机制提供?jin)一U更单的遍历数组、Collection和其它实C(jin)java.lang.Iterable接口的对象的Ҏ(gu)?/P>
q一首单表Autoboxing机制/Auto-Unboxing提供?jin)一U更单的整合两套不同的类型系l(基本cd和引用类型)(j)的机制?/P>
q一首单表Varargs机制提供?jin)一U更单的传递个数可变的实参的方法?/P>
q一首单表Static Import机制提供?jin)一U更单的讉K?rn)态成员的机制?/P>
q一首单表Enumeration机制提供?jin)一U更单的定义“类型安全的枚DcZ的Ҏ(gu)?/P>
q一首单表Metadata机制提供?jin)一U更单的定义“机器可ȝ说明信息”的机制?/P>
q一首是说用Generics机制Q可以免d多强制类型{化的步骤的事情。Generics机制q有些其它用法,在这里没有提到?/P> 前天写一个类旉C个很眼生的编译错误(问题化后Q:(x) ~译时出错(W?行)(j)Q?/P>
illegal forward refrence 仔细一惻I是因为VAR2引用的VAR1在VAR2之后定义Q看来在Java中定义static变量时应遵@“声明先于用”的原则?BR> q是上一个类QVAR1和VAR2定义成finalQ值存在一个properties文g中,在用前必须值loadq来Q?/P>
System.getProperties().load(new FileInputStream("constants.properties")); 于是上面的代码攑֜static块中Q?BR> 但在q行时VAR1和VAR2没有被赋|debug后发现static块根本没有执行。于是顿(zhn):(x)final变量在编译时便被~译器计、赋|因此在运行时没有必要执行static块?/P>
Java API 文档中文?/SPAN>
Sun 公司提供的Java API Docs是学?fn)和使用Java语言中最l常使用的参考资料之一。但是长期以来此文档只有英文版,对于中国地区的Java开发者来说相当的不便。目前Sun 公司正在l织多方力量此文档译成中文,q于q日在Sun 中国技术社区(http://gceclub.sun.com.cn/Q正式发布java.lang和java.utilcdAPI 文档的中文版Q其他类库API文档的中文版也将于今后一D|间内陆箋向中国地区的开发h员提供。在J2SE API文档Q?.0版本Q的汉化工作完成之后QSun 中国技术社开通Java API 文档中文版的打包下蝲服务?BR>
Java API 文档中文版发布计?/SPAN>
发布旉
相关cd
阅读/下蝲
2005/10/31
java.lang
java.util在线阅读
2005/12/31
java.awt
java.io
java.text
2006/02/28
java.swing
2006/03/31
java.applet
java.beans
java.maths
java.net
java.nio
java.rmi
java.security
java.sql
javax.accessibility
javax.activity
javax.crypto
2006/04/30
javax.imageio
javax.management
javax.net
javax.naming
javax.print
javax.rmi
javax.security
javax.sound
2006/05/31
javax.sql
javax.transaction
javax.xml
org.ietf
org.xml
org.w3c
org.omg
String latin =
;
String gbk = new String(latin.getBytes("iso-8859-1"),"gbk");
q个Ҏ(gu)q去我也比较常用Q的有效,但很累赘Ӟ丝毫没有模式之美Q有没有更优雅的Ҏ(gu)呢?如果你和我一h疑虑的话Q可以考虑使用FilterServletQ?BR>
import java.io.*;
2import javax.servlet.*;
3import javax.servlet.http.*;
4
5import org.apache.log4j.*;
6
7public class CharsetFilter
8 extends HttpServlet implements Filter
{
9 private static Logger logger = Logger.getLogger("Filter servlet");
10
11 public void init(FilterConfig filterConfig)
12 throws ServletException
{
13 }
14
15 public void doFilter(ServletRequest request,ServletResponse response,
16 FilterChain filterChain)
{
17 if(request != null)
{
18 String charset = request.getCharacterEncoding();
19 if(charset == null || !charset.equalsIgnoreCase("gbk"))
20 try
{
21 request.setCharacterEncoding("GBK");
22 }
23 catch(UnsupportedEncodingException ex)
{
24 logger.warn(ex.getMessage());
25 }
26 }
27 try
{
28 filterChain.doFilter(request,response); // 递交责Q链下一?/SPAN>
29 }
30 catch(Exception ex)
{
31 logger.error(ex.getMessage());
32 }
33 }
34
35 public void destroy()
{
36 }
37}
38
FilterServlet内部应该使用责Q链(Chain of ResponsibilityQ实玎ͼ在这里我们把对字W串的{码做任链中的一环,从上一环拿到requestQ处理后交给铄下一环。另外需要在web.xml里做些配|:(x)
<filter>
<filter-name>charsetfilter</filter-name>
<filter-class>pqp.servlet.CharsetFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>charsetfilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
其中“REQUEST”指定了(jin)filter拦截的类型,有REQUEST、FORWARD、ERROR和INCLUDEQ可l合选择Q一般选REQUEST。全部设|好后重新打包、部|Ԍq样Servlet可以自动把所有的request转换为GBK的字W集?jin),是不是很方便Q?IMG height=19 src="http://www.aygfsteel.com/Emoticons/teeth_smile.gif" width=19 border=0>但在q里加了(jin)filter后对性能斚w的媄(jing)响未知,大家可以讨论一下?img src ="http://www.aygfsteel.com/fidodido/aggbug/18185.html" width = "1" height = "1" />
从输入框得到用户分开输入的年、月、日Q将信息做ؓ(f)Datecd插入数据?/P>
InputBean bean = new InputBean(); // 装用户输入
// 获取用户输入Q封装于bean对象?/SPAN>
Calendar cal = Calendar.getInstance();
cal.set(cal.YEAR,bean.getYear()); // Year
cal.set(cal.MONTH,bean.getMonth()); // Month
cal.set(cal.DAY_OF_MONTH,bean.getDay()); // Day
// 数据库操?/SPAN>
解决二:(x)InputBean bean = new InputBean(); // 装用户输入
// 获取用户输入Q封装于bean对象?/SPAN>
Calendar cal = Calendar.getInstance();
cal.set(cal.YEAR,bean.getYear()); // Year
cal.set(cal.MONTH,bean.getMonth() - 1); // Month
cal.set(cal.DAY_OF_MONTH,bean.getDay()); // Day
// 数据库操?/SPAN>
public static <T> void sort(List<T> list, Comparator<? super T> c)
1、既然该Ҏ(gu)无返回|voidQ,W一个?lt;T>”有什么作用?
2、?”代表什么含义?
3、“super”v什么作用?
4、基??Q?lt;? super T>”如何理解?
public static <T extends Comparable<? super T>> void sort(List<T> list)
1、“extends”如何理解?
2、其余同?img src ="http://www.aygfsteel.com/fidodido/aggbug/15971.html" width = "1" height = "1" />
VERSION
CODE NAME
RELEASE DATE
JDK 1.1.4
Sparkler
Sept 12, 1997
JDK 1.1.5
Pumpkin
Dec 3, 1997
JDK 1.1.6
Abigail
April 24, 1998
JDK 1.1.7
Brutus
Sept 28, 1998
JDK 1.1.8
Chelsea
April 8, 1999
J2SE 1.2
Playground
Dec 4, 1998
J2SE 1.2.1
(none)
March 30, 1999
J2SE 1.2.2
Cricket
July 8, 1999
J2SE 1.3
Kestrel
May 8, 2000
J2SE 1.3.1
Ladybird
May 17, 2001
J2SE 1.4.0
Merlin
Feb 13, 2002
J2SE 1.4.1
Hopper
Sept 16, 2002
J2SE 1.4.2
Mantis
June 26, 2003
J2SE 5.0 (1.5.0)
Tiger
Sept 29, 2004
Future Releases
J2SE 6.0 (1.6.0)
Mustang
Not yet released
J2SE 7.0 (1.7.0)
Dolphin
Not yet released package pqp.service;
public enum ServiceExceptionType
{
DB_FAILURE
,USER_EXISTED
,INVALID_USERNAME_OR_PASSWORD
}
在新用户注册的逻辑Ҏ(gu)中会(x)(g)查用户名是否已存在,存在的话抛出ServiceExceptionQƈServiceExceptionType装q去。action的excute不处理ServiceExceptionQ接着往外扔Q最后由error.jsp处理Q?BR>
<%@ page contentType="text/html; charset=GBK" %>
<%@ page isErrorPage="true" %>
<%@ page import="pqp.service.*" %>
<%
ServiceException ex=(ServiceException)exception;
switch(ex.getType())
{
case USER_EXISTED:
out.println("无法注册Q用户名?/SPAN>"+ex.getMessage()+"”已存在");
break;
}
%>
l果~译的时候报错:(x)
NTomcat 5.5.9不支持对enumerationq行switch操作Q?img src ="http://www.aygfsteel.com/fidodido/aggbug/13439.html" width = "1" height = "1" />咏Tiger
Tiger, Tiger burning bright
Like a geek who works all night
What new-fangled bit or byte
Could ease the hacker"s weary plight?咏Enhanced for Loop
While Iterators have their uses
They sometimes strangle us like nooses
With enhanced-for"s deadly ray
Iterator"s kept at bay咏Autoboxing/Auto-Unboxing
When from the collections ints are drawn
Wrapper classes make us mourn
When Tiger comes, we"ll shed no tears
We"ll autobox them in the ears咏Varargs
O joyless nights, o joyless days
Our programs cluttered with arrays
With varargs here, we needn"t whine;
We"ll simply put the args inline咏Static Import
And from the constant interface
We shall inherit no disgrace
With static import at our side
Our joy will be unqualified咏Enumeration
The int-enum will soon be gone
Like a foe we"ve known too long.
With type safe-enum"s mighty power
Our foe will bother us no more咏Metadata
As for noble metadata
I"ll have to sing its praises later
Its uses are so numerous
To give their due, I"d miss the bus咏Generics
To the most despised collections" cast
We"ll bid a fond farewell at last
With generics" burning spear
The need for cast will disappear
Map map = new HashMap();
2map.clone();
Map是一个接口,HashMap是一个类。clone()Ҏ(gu)在ObjectcM定义Q因此我下意识认为第二行可以q么写。结果编译器报错Qclone()Ҏ(gu)未定义。这个错误让我很郁闷Q看?jin)半天doc才发原来Map是一个接口,而接口和ObjectcL有Q何关p,所以Map也就没有l承clone()。于是把代码Ҏ(gu)下面的样子:(x)
HashMap map = new HashMap();
2map.clone();
q样可以了(jin)?img src ="http://www.aygfsteel.com/fidodido/aggbug/10506.html" width = "1" height = "1" />punlic final class Constants
{
2 public static int VAR2 = VAR1 + 1;
3 public static int VAR1 = 1;
4}
二、static?/H4>
punlic final class Constants
{
static
{
System.getProperties().load(new FileInputStream("constants.properties"));
}
public static final int VAR2 = System.getProperties().getProperty("var2");
public static final int VAR1 = System.getProperties().getProperty("var1");
}
StringTokenizer st = new StringTokenizer("this is a test"," ");
while (st.hasMoreTokens())
{
System.out.println(st.nextToken());
}
输出Q?BR>
this
is
a
test
Q构造器中第二个字符串是分隔W的集合Q默认是I格Q?B>
如果要读出文件的话只需调用BLOB的getBinaryStream()生成一个输入流Q再写入一个文件就行了(jin)?/FONT>