Calendar g=Calendar.getInstance();
g.add(Calendar.YEAR,1);
SimpleDateFormat s=new SimpleDateFormat("yyyy-MM-dd HH-mm-ss",Locale.US);
String d=s.format(g.getTime());
System.out.println(d);
System.currentTimeMillis();
以毫秒為單位返回當前時間
java.util.Calendar
event.getValue() instanceof ActionForm 返回true或falsejava.lang.Class
在類加載時,java虛擬機會自動創建相應的class對象
1.獲取class對象
Class c=Class.froName("c");
2.解析屬性信息
Field[] fs=c.getDeclaredFields();
for(Field f:fs){
System.out.println("屬性:"+f.toString());
System.out.println("數據類型:"+f.getType());
System.out.println("屬性名:"+f.getName());
int mod=f.getModifeers();
System.out.println("屬性修飾符:"+Modifier.toString(mod));
}
3.解析方法信息
Method[] ms=c.getDeclaredMethods();
for(Method m:ms){
System.out.println("方法:"+m.toString());
System.out.println("方法名:"+m.getName());
int mod=f.getModifeers();
System.out.println("方法修飾符:"+Modifier.toString(mod));
Class pts[] = m.getParameterTypes();//得到參數列表
m.getReturnType();//得到返回值類型
}
4.解析構造方法
Constructor[] cs=c.getDeclaredConstructors();
for(Constructor con:cs){
System.out.println("構造方法:"+con.toString());
System.out.println("方法名:"+con.getName());
System.out.println("方法修飾符:"+Modifier.toString(mod));
Class pts[] = m.getParameterTypes();//得到參數列表
m.getReturnType();//得到返回值類型
}
5.解析當前類類型的父類
Class superClass=c.getSuperclass();
6.解析當前類實現的接口
Class[] interfaces=c.getInterfaces();
for(Class cl:interfaces){
System.out.println(cl.toString());
}
7.解析當前包
Package p=c.getPackage();
---------------------------------------------------------------
1.直接操作對象屬性
User u=new User();
Class c=u.getClass();//同Class.forName("p2.User");
Field f=c.getField(fieldName);
Object fv=f.get(u);//得到對象u實例對應f屬性的值
f.set(u,value);設置u對象f屬性的值為value
2.調用對象成員方法
Class[] argTypes={String.class,int.class};
//上行等同Class[] argTypes=new Class[]{String.class,int.class};
Object[] args=new Object[]{"王五",99};
Class c-u.getClass();
Method m=c.getMethod(methodName,argTypes);
Object result=m.invoke(u,args);
System.out.println(result);
3.調用類成員方法
Class c=Class.forName("className");
Method m=c.getMethod(methodName,argTypes);
Object result=m.invoke(null,args);//沒有對象,所以指定為null
---------------------------------------------------------------
獲取class對象
*針對引用數據類型
1.調用靜態方法Class.forName()
Class.forName("p1.User");
2.調用Object類中定義的getClass()方法
User u=new User();
Class c=u.getClass();
3.使用.class表達式
Class c1=String.class;
Class c2=p1.User.class;
*針對基本數據類型及void
1.使用.class表達式
Class c1=int.class;
Class c2=double.class;
Class c3=void.class;
2.調用相應封裝類的.Type屬性
Class c1=Integer.TYPE;
Class c2=Double.TYPE;
Class c3=Void.TYPE;
----------------------------------------------
java.lang.reflect.Field
1.獲取Field對類(Class類提供)
public Field[] getDeclaredFields()//當前類的所有屬性,不包括父類
public Field getDeclaredField(String name)//當前類指定屬性,不包括父類
public Field[] getFields()//當前類所有public的屬性,包括父類
public Field getField(String name)//當前類指定的public屬性,包括父類
2.Field類主要成員方法
public Object get(Object obj)
pbulic void set(Object obj,Object value)
public xxx getXxx(Object obj)
public void setXxx(Object obj,xxx x)//xxx為基本數據類型
public String getName()
public int getModifiers()//當前屬性的修飾符
public <T extends Annotation> T getAnnotation(Class<T> annotationClass)
返回當前屬性前面的注釋
public String toString()
public boolean equals(Object obj)
------------------------------------------------------------------------
java.lang.reflect.Method
1.獲取Method對類(Class類提供)
public Method[] getDeclaredMethods()//當前類的所有方法,不包括父類
public Method getDeclaredMethod(String name,Class<?> parameterTypes)//當前類指定方法,不包括父類
public Method[] getMethods()//當前類所有public的方法,包括父類
public Method getMethod(String name)//當前類指定的public方法,包括父類
2.Method類主要成員方法
public Object invoke(Object obj,Object args)****
public String getName()
public Class<?>[] getParameterTypes()
public int getModifiers()//當前屬性的修飾符
public Class<?> getReturnType()
public Class<?>[] getExceptionTypes()
public <T extends Annotation> T getAnnotation(Class<T> annotationClass)
返回當前屬性前面的注釋
public String toString()
public boolean equals(Object obj)
-----------------------------------------------------------
java.lang.reflect.Modifier
1.獲取Modifier對象
public int getModifieers()
2.Modifier類方法
public static boolean isPublic(int mod)
public static boolean isPrivate(int mod)
--------------------------------------------------------------
java.lang.reflect.Constructor
public T newInstance(Object initargs)
Class c=Class.forName("p1.Person");
Class[] argTypes={String.class,int.class};//參數列表
Constructor cons=c.getConstructor(argTypes);
Object obj=cons.newInstance("中國",5000);
調用無參構造方法
cons=c.getconstructor();
obj=constructor.newInstance();
obj=c.newInstance();
----------------------------------------------------------------
java.lang.reflect.Array
class類方法
public Class<?> getComponentType()//返回數組對象的數據類型
Tomcat 配置文件修改
修改server.xml
<Connector port="8080" protocol="HTTP/1.1" maxThereads="150"
connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/>
目的:解決Get方法傳參的中文亂碼問題
修改Context.xml
<Context>修改成<Context reloadable="true">
目的:當WEB應用中的文件或web.xml 文件修改后Tomcat服務器會自動加載當前的web應用。避免重新啟動Tomcat.
<Context reloadable="false">產品階段不要改為true,改為 false
修改tomcat-users.xml
<?xml version='1.0' encoding='uft-8'?>
<tomcat-users>
<role rolename="manager"/>
<role rolename="admin"/>
<user username="liuwei" password="liuwei"
roles="admin,manager"/>
</tomcat-users>
web錯誤處理
401錯誤
404錯誤
500錯誤
解決方案:訂制錯誤信息頁面,設置web.xml文件
<error-page>
<error-code>404</error-code>
<location>/error404.html</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/error500.html</location>
</error-page>
1、設置SQL Server服務器:
1-1、“SQL Server 2005 服務”中停止服務“SQL Server (SQLEXPRESS)”(默認是啟動狀態)
1-2、“SQL Server 2005 網絡配置” → “MSSQLSERVER 的協議”,啟動“TCP/IP”(默認是禁用狀態),然后雙擊“TCP/IP”進入屬性設置,在“IP 地址”里,確認“IPAll”
中的“TCP 端口”為1433
1-3、“SQL Server 2005 服務”中啟動服務“SQL Server (MSSQLSERVER )”(默認是停止狀態)
1-4、關閉“SQL Server Configuration Manager”(此時可以啟動“SQL Server Management Studio”,并用帳戶sa、密碼123登錄,SQL Server服務器設置正確的話應該能登錄成功)
2、導入jar包:
打開Test的“Properties” → “Java Build Path” → “Libraries” → “Add External JARs” ,選擇下載好的連接驅動包“sqljdbc.jar”,然后點擊“OK”確定
3如果你以前用JDBC連接SQL Server 2000的話就要注意了:
在SQL Server 2000 中加載驅動和URL路徑的語句是
“com.microsoft.jdbc.sqlserver.SQLServerDriver”
“jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=JSPTest”
而SQL Server 2005 中加載驅動和URL的語句則為
“com.microsoft.sqlserver.jdbc.SQLServerDriver”
“jdbc:sqlserver://localhost:1433; DatabaseName=JSPTest”
注意兩者的差異
管理連接對象
Modle:biz,dao,entity
數據源接口:javax.sql.DataSource
得到
javax.namming.Context接口的lookup()方法
java:comp/env/jdbc/books
1 Tomcat的conf/context.xml(Tomcat5.5以前配在server.xml中<host>標簽中)
<context>
<Resource name="jdbc/books"http://JNDI名稱
auth="Container"http://連接池由誰管理(container完全由容器管理/application由程序管理)
type="javax.sql.DataSource"http://數據源類型
maxActive="100"http://最大連接
maxIdle="30"http://最大空閑
maxWait="10000"http://單位毫秒,最大等待,無限等待值設為-1
username="sa"
password="accp"
driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
url="jdbc:sqlserver://localhost:1433;databaseName=food"
/>
</context>
2 加數庫據驅動jar
-5.5以前
TomCat/comm/lib
-5.5以后
TomCat/lib目錄下
3 編寫代碼
*javax.naming.context;
*javax.naming.InitialContext;
Connection conn;
Statement stmt;
ResultSet rs;
try{
Context ctx=new InitialContext();
DataSource ds=(DataSource)ctx.lookup("java:comp/env/jdbc/books");
conn=ds.getConnection();
stmt=conn.createStatement();
rs=stmt.executeQuery(sql);
}catch(){}
1 輸入/輸出流
字節流 字符流
輸入流 InputStream Reader
輸出流 OutputStream Writer
2 字節流和處理流
------------------------------------------------------------------------
3 InputStream 向程序中輸入數據
InputStream---FileInputStream
InputStream---StringBufferInputStream
InputStream---ObjectInputStream
基本方法
-讀取一個字節并以整數的形式返回
-如果返回-1已到輸入流的末尾
int read() throws IOException
-讀取一系列字節并存儲到一個數組buffer
int read(byte[] buffer) throws IOException
-讀取length個字節并存到一個字節數組buffer
int read(byte[] buffer,int offset[數組的那個下標開始存],int lenght) throws IOException
-關閉流
void close() throws IOException
-------------------------------------------------------------------------------
4 outputStream 輸出數據
OutputStream---FileOutputStream
OutputStream---ObjectOutputStream
-向輸出流中寫一個字節數據
void write(int b)throws IOException
-將一個字節類型的數組中的數據寫入輸出流
void write(byte[] b)throws IOException
-將一個字節類型的數組中的從指定位置off開始的len個字節寫入到輸出流
void write(byte[] b,int off,int len)throws IOException
-關閉流
void close()throws IOException
-將輸出流中緩沖的數據全部寫出到目的地(重要:先flush再close)
void flush() throws IOException
-----------------------------------------------------------------------------------
5 Reader/Writer
---------------------------------------------------
6 FileInputStream/OutputStream
long num=0;
try{
FileInputStream in=new FileInputStream("d:\\test.txt");
FileOutputStream out=new FileOutputStream("d:/test1.text");
while(int b=in.read()!=-1){
out.write(b);
}
in.close();
out.close();
}catch(){}
7 FileReader/FileWriter
FileReader fr=null;
FileWriter fw=null;
int c=0;
try{
fr=new FileReader ("d:\\test.java");
fw=new FileWriter ("d:/test1.java");
while((c=fr.read)!=-1){
System.out.print((char)c);
fw.write(c);
}
fr.close();
fw.close();
}
8 緩沖流
常用構造方法
BufferedReader(Reader in)
BufferedReader(Reader in,int sz)
BufferedWreter(Writer out)
BufferedWreter(Writer out,int sz)
BufferedInputStream(InputStream in)
BufferedInputStream(InputStream in,int size)
BufferedOutputStream(OutputStream out)
BufferedOutputStream(OutputStream out,int size)
*BufferedReader提供了readLine方法用于讀取一行字符串
*BufferedWreter提供了newLine用于寫入一個行分隔符
*可以使用flush方法將輸出到緩沖流的數據在內存中清空立刻寫入硬盤
try{
FileInputStream fis=new FileInputStream("d:\\share\\HelloWorld.java");
BufferedInputStream bis=new BufferedInputStream (fis);
bis.mark(100);從第100開始讀
}
try{
BufferedWriter bw=new BufferedWriter (new FileWriter("d:\\test.txt"));
BufferedReader br=new BufferedReader(new FileReader("d:\\test.txt"));
String s=null;
for(int i=0;i<=100;i++){
s=String.valueOf(Math.random());
bw.write(s);
bw.newLine();//寫一個換行符
}
bw.flush();//清空緩存寫入文件
while((s=br.readLine())!=null){
System.out.println(s);
}
bw.close();
br.close();
}
9 轉換流
InputStreamReader/OutputStreamWriter
用于字節數據到字符數據之間的轉換
InputStreamReader 需要和 InputStream "套接"
OutputStreamWriter 需要和 OutputStream "套接"
InputStream isr=new InputStreamReader(System.in,"ISO8859-1");
try{
OutputStreamWriter osw=new OutputStreamWriter (new FileOutputStream("d:\\test.txt"));
osw.write("ssssssssssssssss");
osw.close();
osw=new OutputStreamWriter(new FileOutputStream("d:\\test.txt",true),"ISO8859-1");//true是指在原來的基礎上添加
osw.write("ddddddddddddddddddd");
osw.close();
}
InputStreamReader isr=new InputStreamReader(System.in);
BufferedReader br=new BufferedReader(isr);
String s=br.readLine();
10 流據流,存儲和讀取java原始類型
DataInputStream(InputStream in)/DataOutputStream(OutputStream out)
boolean readBoolean()
double readDouble()
String readUTF()
11 PrintStream / PrintWriter
printStream ps=null;
try{
FileOutputStream fos=new FileOutStream("d:\\test.txt");
ps=new PrintStream(fos);
}
if(ps!=null){
System.setOut(ps);
}
int ln=0;
for(char c=0;c<=60000;c++){
System.out.print(c+" ");
if(ln++>=100){
System.out.println();
ln=0;
}
}
12 ObjectInputStream/ObjectOutputStream
對象讀寫必須序列化,transient關鍵字表示該必性不被序列化
class t implements Serializable{
int i=10;
transient int j=9;
double d=2.3;
}
T t=new T();
FileOutputStream fos=new FileOutputStream ();
ObjectOutputStream oos=new ObjectOutputStream (fos);
oos.writeObject(t);
oos.flush();
oos.close();
13 Externalizable接口
方法:
void readExternal(ObjectInput in)
void writeExternal(ObjectOutput out)