[JSP]Study Note

摘要:#Study Note

 

###安裝工具###

Must Setup:J2SDK

JSP Server:ResinTomcat

JDBC driver:Java.sun.com/products/jdbc/jdbc.vrivers.html

 

### 指令###

<%@ page

language=”Java”

extends=”父類別名稱”

Import=”java.io.8, java.util.Date”

Session=”true|false”

Buffer=”none|緩衝大小kb”

autoFlush=”true|false”  //buffer滿了是否自動輸出

isThreadSafe=”true|false” //是否已執行緒方式回應jsp要求訊息

info=”網頁說明文件”

errorPage=”url” //發生錯誤時,顯示錯誤訊息之網頁url

isErrorPage=”true|false//是否為錯誤訊息網頁  取得: <%=exception.getMessage()%>

contentType=”text/html; charset=Big5”

%>

<%@ include File=”檔案名稱”%>

<%@ taglib URI=”uri” prefix”前置標記” %>

 

<%!                  …//宣告敘述%>

<%                   …//程式碼%>

<%-- 註解--%>

<%=”欲輸出資料” %>  // out.println

 

Out、Response、Request

Application、Pagecontext、Session

Config、page

 

jspInit()

jspDestroy()

### 比較值是否相同

變數.equals(“”) //比較字串

### url解碼

Java.net.URLDecoder.decode(“URL編碼文字”)

### 目前系統時間

(new java.util.Date()).getTime()

### 網頁導向

<%Response.sendRedirect(“url”);%>

<jsp:forward page=”url”/>

 

### Request ###

###屬性

request.getAttribute(名稱) request.setAttribute(名稱,值)

request.AttributeNames() request.removeAttribute(名稱)

###參數

request.getParameter(名稱) request.setParamater(名稱)

request.ParameterNames()

 

request.getCookies()

request.getContentType() //取得MIME型態(text/plain,text/htmml,image/gif)

request.getDateHeader(名稱)

request.getIntHeader(名稱)

request.getHeader(名稱)

request.getHeaders(名稱)

request.getHeaderNames(名稱)

 

request.getCharacterEncodeing() //取得要求訊息主體運用的編碼格式

request.Protocol() //取得連線使用的通訊協定

request.Mehod() //取得連線使用的HTTP方法(get,post,put)

request.getQueryString() //取得網址,包含查詢字串

request.getRealPath(Server Path)

request.getRemoteAddr() //取得client 電腦名稱

request.getRemoteHost() //取得ip

request.getRemoteUser()

request.getRequestDispatcher()

request.getRequestURI() //取得網址,包含路徑檔名

request.getRequestURL() //取得網址,不含?後查詢字串

request.getSession(flag)

 

Interger.prarseInt(String字串)  //資料型別轉換(Interger.paraseFloat ,Dobule.parseDobule)

Boolean.valueOf(String字串)  //資料型別轉換

 

###取得複選清單值

StringArrX [] = Request.getParameterValues(“變數名”); //取得值轉為陣列

Int ArrLn = java.lang.reflect.Array.getLength(ArrX); //取得陣列長度

for (int I = 0 ; i<ArrLn ; i++){

                        out.println(ArrX[i]);

}

 

###判斷核取方塊

request.getParameter(“chkbx1”) != null  //未被選取的值為null

 

### Response ###

response.flushBuffer()

response.getBufferSize()response.setBufferSize()

response.isCommitted()

response.reset()

 

response.sendRedirect(url)

response.setError(代碼,訊息)

response.Status(代碼)

 

response.addCookie(cookie物件)

response.DateHeader(名稱,值) response.setDateHeader(名稱,值)

response.addHeader(名稱,值) response.setHeader(名稱,值)

response.addIntHeader(名稱,值) response.setIntHeader(名稱,值)

response.containsHeader(名稱)

 

response.getCharacterEncodeing()

response.setContentType(型態)

 

response.encodeRedirectURL(url)

response.encodeURL(url)

 

<%

Response.setHeader(“Refresh”,20); //網頁自動更新same to <META HTTP-EQUIV=”Refresh” Content=”20”>

%>

 

<%@ page contentType=”application/msexcel; charset=Big5”%>

<% response.setHeader(“content-disposition”,”filename=book.xls”);

 

###Cookie設定###

<%@ page import=”java.net.URLDecoder”%>

<%

// save in cookie

Int AA = new Interger();

String BB = URLEncoder.encode(“中文資料”);

Cookie ck_AA = new cookie(“AA”,String.valueof(AA));

Cookie ck_BB = new cookie(“BB”,BB);

response.addcookie(ck_AA);

response.addcookie(ck_BB);

// load from cookie

Cookie tmp = null

Cookie[] ck_Arr = request.getCooies();

For (intI = 0 ; i<ck_Arr.length; i++){

                        Tmp = ck_Arr[i];

                        If (tmp.getName().equals(“AA”)){

                                String AA = URLDecoder.decode(tmp.getValue());

                        }

}

 

ck_AA.getPath();

ck_AA.setPath(“/jsp/path/”) //set可存取路徑

ck_AA.getDomain();

ck_AA.setDomain(“www.java.com.tw”) //set可存取網站

ck_AA.setMaxAge(秒); //set有效時間

%>

 

### OUT ###

Out.close()

Out.newLine()

Out.print(資料)

Out.println(資料)

 

Out.clear()

Out.clearBuffer()

Out.flush()

Out.IsAutoFluse()

Out.getBufferSize()

Out.getRemaining()

 

### PageContext ###

//屬性存取方法

pageContext.getAttribute(名稱)

pageContext.getAttributeNames()

pageContext.removeAttribute(名稱)

pageContext.setAttribute(名稱,)

//傳送request物件方法

pageContext.forward(路徑)

pageContext.include(路徑)

//取得其他隱含物件

pageContext.getException()

pageContext.getOut()

pageContext.getPage()

pageContext.getRequest()

pageContext.getResponse()

pageContext..getServletContext()

pageContext.getSession()

//存取隱含物件屬性的方法

pageContext.findAttribute(名稱)

pageContext.getAttribute(名稱,範圍)

pageContext.getAttributeNamesInScope(範圍)

pageContext.getAttributeScope(名稱)

pageContext.setAttribute(名稱,值,範圍)

pageContext.removeAttribute(名稱,範圍)

//有效範圍的常數

pageContext.APPLICATION_SCOPE

pageContext.PAGE_SCOPE

pageContext.REQUEST_SCOPE

pageContext.SESSION_SCOPE

 

### Server 指令###

<jsp:useBean> <jsp:setProperty> <jsp:getProperty>

<jsp:include page=”檔名”> //動態載入網頁

<jsp:forward page=”檔名”>//網頁導向至

<jsp:param name=”A” value=”100”>  //傳遞參數(by include,forward,plugin)

//載入java applet or java beans, same to HTML’s <object>

<jsp:plugin type=”類型” code=”檔名” codebase=”類別路徑” name=”物件名稱”

align=”對齊方式”height=”0” width=”0” hspace=”0” vspace=”0”

archive=”相關檔案路徑”jrevesion=”java環境版本”

nspluginurl=”供NC使用的plugin載入位置” iepluginurl=”供IE使用的plugin載入位置”

<jsp:params>

<jp:param name = “參數名1” value=”值1”>

<jp:param name = “參數名2” value=”值1”>

                        </jsp:params>

<jsp:fallback>錯誤訊息</jsp:fallback>

</jsp:plugin>

 

###Session ###

Javax.servlet.http.HttpSession

Session.setAttribute(變數,值名)//set Session

Objectobj = session.getAttribute(變數名)// load Session

Session.removeAttribute(變數名) // remove session

Session.setMaxInactiveInterval(“秒數”) //set Active-Time(s)

Session.getMaxInactiveInterval()// get Active-Time(s)

Session.isNew()//判斷是否為新建

Session.invaildate()// 強制中斷

Session.getCreationTime() //get Build-Time

Session.getLastAccessdTime() // get last Access-Time

Session.getId() //get session SN

 

###Application###

<Web-app id=“path” app-dir=”url”/>

###屬性存取

Application.getAttribute(名稱)

Application.getAttributeNames()

Application.removeAttribute(名稱)

Application.setAttribute(名稱,)

###取得版本資訊

Application.getMajorVersion

Application.getMinorVesion

Application.getServerInfo

###寫入記錄檔

Application.log(訊息)

Application.log(訊息,例外物件)

###取得web應用程式的初始參數web.xml

Application.getInitParameter

Application.getInitParameterNames()

###取得伺服器的相關資源

Application.getContext(path)

Application.getMimeType(file)

Application.getRealPath(path)

Application.getResource(path)

 

###File###

File 變數= new File(path,Filename)

Request.getRealPath(“/”)

f.createNewFile(); // create file

f.delete() //delete file

f.mkdir(); //Create Directory

f.exists() // check is file exites?

f.listFiles() //顯示所有檔案列表

###檔案屬性取得

f.getName() //檔名

f.length() //長度

f.isFile() //是否為檔案

f.isDirectory() //是否為資料夾

f.canRead() //是否可讀

f.canWrite() //是否可寫

f.isHiddenO() // 是否隱藏

f.Modified() //最後修改時間

###檔案取得

FileReader fr= new FileReader(path+file)

fr.close()

fr.read(arr, s, n) //從s字元開始讀取n個字元存到arr陣列

fr.skip(n)//略過n字元

fr.read = 13//(換行字元crlf 為13 + 10)

BufferedReader br = new BufferedReader(fr)

br.close()

br.readLine()  //讀取整行資料 

fr== -1 , br == null  //判斷檔案結尾

###寫入檔案

fileWriter fw = new FileWriter(path+file)

fw.close()

fw.write(char | char[] | string | char[])

fw.write(char[], str, n)

BufferedWriter bw = new BufferedWriter(fw)

bw.close()

bw.write(char | char[] | string | char[])

bw.write(char[], str, n)

bw.newLine(); //斷行

 

###例外處理

Try

{

 //錯誤偵測區塊

          throw new Exception(“message”)

          thr_fun()

}

Catch(錯誤類型1 ){ //錯誤處理區塊}

Catch(錯誤類型2 ){ //錯誤處理區塊}

Finally{//結束處理區塊}

 

Void thr_fun() Throws exception{

          throw new exception(“message”)

}

 

###DataBase

###建立連線

Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver”) //MS-SQL

Connection cn= DriverManger.getConnection(“jdbc:microsoft:sqlserver://ip:port;databasename=db”, ”Acc”,”pw”)

Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”) //MS-Access

Connection cn= DriverManger.getConnection(“jdbc:odbc:ODBC來源”,”Acc”,”pw”)

cn.close()

###JNDI

■■■Servier.xml

<Resource name=”java:comp/env/路徑” auth=”servlet|container” type=”javax.sql.DataSource” description=”說明” />

<ResourceParams name=”java:comp/env/路徑”>

            <parameter><name>driverClassName</name><value>sun.jdbc.odbc.JdbcOdbcDriver</value></param…

            <parameter><name>url</name><value>jdbc:odbc: ODBC來源</value></parameter>

            <parameter><name>username</name><value>acc</value></parameter>

            <parameter><name>password</name><value>pw</value></parameter>

</ResourceParams name>

■■■Code

Context ic= new InitialContext();

DataSource ds= (dataSource) ic.lookup(“java:comp/env/路徑”);

Connection cn= ds.getConnection();

 

###取得資料

statement sm= cn.createStatement(type|type)

sm.close()

ResultSet rs= sm.executeQuery(sql)

rs.getInt(field|index) //get{Boolean,Byte,Bytes,Date,Double,Float,Int,Long,Time}

rs.beforefirst()//rs.bof

rs.first()

rs.previous()

rs.next()

rs.last()

rs.afterLast()  //rs.eof

rs.close()

###MetaData

ResultSetMetaDatarsmd= rs.getMetaData();

rsmd.getColumnCount(); //取得欄數

rsmd.getColumnName(index)// 取得欄名

###page

rs.getRow() //目前指標位置

rs.absolute(n) //移至n位置

 

###JavaBeans

<jsp:useBean id=”bn” scope=”application|session|request|page” class=”bean類別”/> //載入Bean

<jsp:setProperty name=”AAA” property=”屬性” param=”值”/>

<jsp:setProperty name=”AAA” property=”*” > //introspection mode

bn.setAAA(值)

<jsp:getProperty name=”AAA” property=”屬性” />

bn.getAAA(值)

###Example

Package aaa.bbb.ccc;

Import java.io.*;

Public class Personimplements serializable

{

          //屬性

          Private string name=””;

          Private int age= 0;

          //建構子

          Public Person()            

          {

          }

          //set bean param method

          Public void setUserName (string name)

          { this.Name = name; }

          Public void setAge(intage);

          {this.age= age; }

          //get bean param method

          Public string getUserName()

          { return this.Name;}

          Public int getAge()

          { returnthis.age;}

}