顯示具有 JSP 標籤的文章。 顯示所有文章
顯示具有 JSP 標籤的文章。 顯示所有文章

2012年8月3日 星期五

JSP 0801 Java Bean

利用java bean做一個資料庫連結
原因: 跟資料庫連結一般網頁都有都有幾十個jsp 如果要改動內容就必須更動每一個網頁,若改成java bean以後就只要修正javabean就好!!



0726 JSP XML

取得XML物件
紅色是變數
Document BookDOM = null;
String File = request.getRealPath("/") + "ex17-1\\book.xml";
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
try {
       DocumentBuilder builder = factory.newDocumentBuilder();
       BookDOM = builder.parse(File);
}
catch (Exception e) {
      out.println("xml文件剖析錯誤 :" + e.getMessage());


2012年7月23日 星期一

0723 JSP java 重點回顧 try catch

try catch
語法
try {   }
catch (    ) {     }
.
.
.
.
finally {    }
第一個重點 page:327(高橋麻奈)
1.不管try catch有沒有抓到意外,finally一定會被執行
2.可以有多個catch但子類別要被寫在上頭
第二個重點 page331
3.例外類別的層級關係
4.一定要有try 可以沒有catch 或finally

throws 通常寫在main之後,及雖然有例外產生,但是如果有例外產生main會攔截

是不是有throws就可以不用try catch ,還是可以兩者並存呢?那甚麼時候要用到兩者並存的

finally 通常何時會用到
第一個練習

第二個練習

第三個練習
第四個練習 自己製作例外 page334

assert 是關鍵字,boolean值預設是true(建議assert後不要再做任何運算)
assert 是在沒有高階工具程式時除錯用的工具,try catch 要截取的是 assertion error.
詳如練習



<%@ 網頁的設定
<%!   網頁的定義
<%     java的語法


接下來老師提到serverlet的語法,有點我不太了解,老師總是一直強調serverlet是JSP還沒開發出來的做法,現在使用的情況少了,我們只是了解過去有多辛苦在使用SERVERLET在作同樣的事,但這樣適合我們花半天的時間去實作這個主題嗎?

2012年7月17日 星期二

0717 JSP 資料庫 SELECT DELECT UPDATE

今天的JSP重點 是資料庫的資料增加及刪除,更新這件事本來是明天才要做的事,結果下午老師記先做更新的網頁,可惜我在下課前用自己地方法做了新增及刪除!
先看index的程式碼!
老師的作法是SELECT及DELETE各作一組程式,但這兩個程式碼相近,只差在SQL的與法不同,所以老師先做SEL,然後再複製SEL的程式改作DEL。我覺得這樣多費時間,因為我自己獨自將SEL的程式做完,覺得與其再COPY一份,不如我將原先的SEL改成跟DEL共用,利用FORM方法作選擇是否要新增或是刪除資料。





































因為老師已經先預設要修正的是部門別的資料,所以部門的資料就SHOW在FORM表單之下。(我自己覺得有點突兀,不合常情)
再來就是資料確認,在index.jsp選好的項目及輸入的資料,在doubleC.jsp作double check
程式碼
就是在這裡作中繼,再一次確認要新增或刪除的資料,值得一題的是,老師只有在DEL的程式中加上double check的控管,我等於是即使新增也要作確認,不過老師另外不一樣的地方是,若是在這裡取消的話,是在這裡回到上一頁,我則是把訊息再往下送到tobeornot去作處理!(會這樣做的原因,是因為老師試了好機種方式都有問題,所以我就把它改成我的作法。
tobeornot.jsp 程式碼


執行畫面及結果如圖。有圖有真相!

在這個程式,因為SQL的語法尚未學習到,所以花了很多時間在揣摩。其實早上在做這個檔案時,其實落後進度很多,但是自從下午邏輯一度搞通了後,進度就直追而下,下課前就把檔案算是完成了。本來是要挑戰UPDATE的語法,但是我覺得這樣把SEL DEL及UPDAT三個修改的語言分開三種來寫,就覺得有點浪費時間,雖然說在教學上這樣的作法按部就班,但我覺得要嘗試把它做在一塊,而再作的中途又與同學聊天,時間又耽擱了,故沒做完,只得明天完成了!!!






















































2012年7月16日 星期一

0716 JSP 資料庫

這個禮拜的重點是資料庫!!
ACCESS的致命缺點,如果檔案名稱被猜出來的話,整個資料庫會被以文字檔的方式下載!!所以重要資料以檔案型態存取都有被下載的風險,故應該以資料庫型態存取較為安全!!!
第一個主題是以JAVA連結EXCEL的資料庫檔案,做查詢及新增的動作,而且是利用JAVA語言就可以做到,不是JSP!!
程式碼

Excel 資料表

JAVA連Excel 因為不是網頁,故沒有在網頁show出成果,在command line執行

java程式碼可以在堪入jsp中連結mysql資料庫 這是第二個練習
執行結果(因為式資料庫所以show出結果很陽春)



第三個是在mysql下載coneccet/] 是java對mysql的連結,將jar檔存入tomcat lib中


第四個是在網頁login的練習中加入連接mysql資料,而不以輸出檔案做控制!
程式碼

整組程式雖然是以login_session去改的,但主要只有改checkjsp的部分也就是只有改帳號密碼核對的程式段,從原來建好的txt文字檔改為資料庫的資料去核對!這段與excel那段雷同,請注意差異的部分!其實就是Class.forName的路徑及url的路徑
在歡迎畫面加上一個show出使用者名稱!
以 jacky 密碼 123輸入 執行結果!!

0713 JSP 網頁來客數


今天雖然是Black Friday! 但是仍然不怕阿姨打,繼續上JSP預計上訪客計數器 。

這個主題本以為很簡單,但搞了一個周五,甚至是一個小麻煩讀取及存入的問題,一直到星期六才解決,所以筆記才延遲!!!
網頁來客地記錄,分作本日來客數統計,及網頁開始以來就累計的結果!
以必須利用application.getAttribute 及 application.setAttribute的方法統計
因為要利用JSP改寫,主網頁,所以原index.htm改成index.jsp
程式碼如下

這個程式debug了一天,主要是在存入數據後,從檔案不能讀取出來的,反覆嘗試後,發現存入後會有空格產生,在這一個點上一直不能解決,原以為是輸入的格式或存取的格式的問題,但就算是改為utf8或ansi都一樣有相同的問題,所以在程式碼中加上去除空白的程式,最後是完成了,但我懷疑其實是最後寫入檔案時,原本我的程式碼是:
    String str = String.valueOf(a);
    bw.write(str);
    也就是將總人數是int型態轉為字串後在輸入bw.write()中寫入,
解決的方式其實就是直接改為下列
    bw.write(String.valueOf(a));
就完成了,問題是,這兩種方式寫的意義是一樣地,為甚麼成果不同呢?我也很好奇,為何會這樣呢?......可能這要請教老師了!!!!

這是最後的結果!!! 算是完成了!!!

2012年7月12日 星期四

0712 JSP 留言板練習

今天感覺會很慘烈,所以先把筆記準備好,...
第一個是擷取表頭資訊
這個我沒實作,事實是擷取client端的表頭資料要幹嘛?我也很懷疑?老師也說實用性不高!!
第二個是龜兔賽跑
           龜兔賽跑有關於JAVA執行緒的應用,雖然與JSP沒太多相干,但是對我們也很重要!



插播一個 撲克牌比大小改良版 贏家牌的長寬度變大
撲克牌我自己快改好了,就是大小的無法變化出來!!!



第三個是留言板
留言板加強部分 將留言show在網頁上
應該是分三個階段完成,第一個就是截取使用者輸入資料,第二個是將資料show在歷史資料show在留言板上,書上是另起一個視窗看留言(這個比較簡單),第三個比較嚴謹是將< > / \ 這些字元改變成全形,以防網頁被綁架!
我花比較多的時間是在摸索怎麼show在留言板上,其他的就還好,因為是自己搞出來的,所以畫面及排列都與老師不同,老師以實作為主,畫面的排法及美觀皆不注重,我希望能同時完成,所以用了比較多時間,連同網頁login的檔案總共有10個,不過實際還是以增加的guest(留言版)及get篩選資料及message的資料檔為主! 好有圖有真相
我的流程是自登入畫面輸入使用者名稱及密碼後-->經check驗證後,錯誤-->到err網頁後3秒退回登入畫面,正確的化-->進入歡迎畫面,然後選擇進入留言板。

實際運作圖檔




雖然今天其實主題還滿多的,但是最後還是決定以留言板為主軸,因為龜兔賽跑其實只有看老師的程式碼,但是我沒有實作出來,下午練習留言板,因為老師不提供進階的程式碼,所以是自己摸索中作出來的,雖然花了還蠻久的時間,但是總算是自己獨力完成,所以自己心裡還算欣慰。

2012年7月11日 星期三

0711 JSP LogIn Session實作

今天的重點是LogIn 就是一般網頁會員登入的畫面,
總共做瞭三種的lLog in 的不同程式 (這樣就花了一天)


第一個程式比較單純,就是主畫面輸入使用者名稱及密碼,
另外一個JSP檔案做輸入的驗證,也就是將使用者輸入的資料做判斷,正確地話轉入正確的畫面,如果錯誤的話,就改到錯誤的網頁,show出輸入資料錯誤訊息,這樣就4個檔案!!!

第二個程式就稍微加強網頁的安全性,已就是不讓使用者在網址列輸入目標檔案,以防使用者繞過輸入資料判斷的程序,其手段是利用session的控制,在check.jsp的檔案中加入,如果使用者的輸入資料正確的話,派上一個session值,在目標的網頁檔案內再加上判斷session值不是null的程序,如果是null就是表示使用者是透過網址列輸入等不正常的方法進入網頁,故利用sendRedirection 改派至錯誤訊息網頁,本組程式有再加上一個logout的檔案,故共5個檔案。






第三個程式最複雜啦!因為使用者輸入的資料,我們必須要在檔案中去查詢判別,其資料是否正確!所以必須加上File的讀取,程式碼節錄如下:


    File f = new File("檔案位置");
    FileReader fr = new FileReader(f);
    BufferedReader br = new BufferedReader(fr);
    String s = null;


特別節錄這個程式碼的原因是,第一. 練習輸入程式碼(太長太難背了),第二. 最後哪一句,
    String s =null;
通常我們是直接輸入String s = br.readLine(); 輸入null值這個地方,把null地方改過之後,居然一值繞不出來,我不太了解。剛問過之後,是wihle迴圈之內應該要再加上 s=br.readLine();
也就是資料要再讀一次,不然網頁就會卡住,一值無法進行下去!


第三個程式碼

2012年7月9日 星期一

0709 JSP 早上小考 下午上課實做

      今天早上java小考,就花瞭將近一個上午,時間有點浪費,但也沒法控制,我底考試成績如下
      不太好 只有60分!!
      座位: B01, 考生: 葉冠猷
      總題數: 20, 答對數: 11
      =====================================================
      考生答案: B, 正確答案: B
      3.14 此數值的預設型態為何?
      A) float
      B) double
      C) 不一定,視作業平台或JVM而定
      =====================================================
      考生答案: C, 正確答案: C
      int i = 017;
          System.out.println(i);
          結果是:
      A) 017
      B) 17
      C) 15
      D) 編譯會錯誤
      E) 執行會丟出例外
      F) 不一定, 視作業平台或JVM而定
      =====================================================
      考生答案: C, 正確答案: C
      何者為輔助製作文件說明的程式
      A) java
      B) javac
      C) javadoc
      D) jar
      =====================================================
      考生答案: AFH, 正確答案: ADEFGH
      java的命名規則,下列何者為對 (也許不恰當, 但只考慮編譯是否會過)
      A) Interface
      B) 7up
      C) const
      D) method
      E) $_$
      F) _U_
      G) 列印
      H) array
      =====================================================
      考生答案: B, 正確答案: B
      何者為編譯程式
      A) java
      B) javac
      C) javadoc
      D) jar
      =====================================================
      考生答案: D, 正確答案: D
      int a = 2^10;
        System.out.print(a);
      結果是:
      A) 編譯錯誤
      B) 執行會丟出例外
      C) 1024
      D) 8
      E) 不一定, 視作業平台或JVM而定
      =====================================================
      考生答案: D, 正確答案: C
      boolean[] test = new boolean[2];
      陣列內容為何?
      A) {null, null}
      B) {true,false}
      C) {true,true}
      D) {false,false}
      E) {false,true}
      F) 不一定
      =====================================================
      考生答案: AB, 正確答案: D
      float a=1, b=0;
        System.out.print(a/b);
      結果是:
      A) 編譯錯誤
      B) 執行會丟出例外
      C) 0
      D) infinity
      E) 不一定, 視作業平台或JVM而定
      =====================================================
      考生答案: ABCDEFG, 正確答案: ABCD
      String[] t = new String[變數];
      上述程式碼中, 變數資料型態可以是下列何種型態? (選出所有正確的)
      A) byte
      B) short
      C) char
      D) int
      E) long
      F) float
      G) double
      =====================================================
      考生答案: AB, 正確答案: A
      byte a=1, b=2;
      byte c = a+b;
      System.out.println(c);
      結果是:
      A) 編譯錯誤
      B) 執行會丟出例外
      C) 3
      D) 不一定, 視作業平台或JVM而定
      =====================================================
      考生答案: ABCDEFG, 正確答案: ADEFG
      Java 的原始檔 *.java, 有哪些部份:
      A) package
      B) include
      C) default
      D) import
      E) class
      F) interface
      G) enum
      =====================================================
      考生答案: C, 正確答案: A
      float pi = 3.14;
      System.out.print(pi);
      結果是:
      A) 編譯錯誤
      B) 執行會丟出例外
      C) 3.14159...略
      D) 不一定, 視作業平台或JVM而定
      =====================================================
      考生答案: DEF, 正確答案: DEF
      下列何者為迴圈 (Loop)
      A) if ... else
      B) switch ... case
      C) ? :
      D) while
      E) do ... while
      F) for
      =====================================================
      考生答案: ADE, 正確答案: ADE
      17) 下列何者為 java 的註解 (選出對的)
      A) // 註解內容
      B) \\ 註解內容
      C) <!-  註解內容 -->
      D) /* 註解內容 */
      E) /** 註解內容 */
      F) ' 註解內容
      G) # 註解內容
      =====================================================
      考生答案: C, 正確答案: C
      7 此整數的預設型態為何?
      A) byte
      B) short
      C) int
      D) long
      =====================================================
      考生答案: D, 正確答案: D
      int a=0, b=0;
      int x = a++ + a++ + a++;
      int y = ++b + ++b + ++b;
      結果是:
      A) 編譯錯誤
      B) 執行會丟出例外
      C) a,b,x,y 內容為 1,1,3,3
      D) a,b,x,y 內容為 3,3,3,6
      E) 不一定, 視作業平台或JVM而定
      =====================================================
      考生答案: ABCDEFGH, 正確答案: DEH
      下列何者為:關鍵字or保留字:
      A) method
      B) function
      C) polymorphism
      D) goto
      E) const
      F) array
      G) include
      H) instanceof
      =====================================================
      考生答案: ABCD, 正確答案: ABCD
      有關 final 的敘述: (選出對的)
      A) final double PI = 3.1415926;
      表示 PI 變數內容已不能再改變
      B) final public class BankAccount{}
      表示 BankAccount 類別不能被繼承
      C) final public void obeyConventions(){}
      表示 obeyConventions 方法是不可以 override
      D) final 與 abstract 不可共用
      =====================================================
      考生答案: ABCD, 正確答案: ABCD
      程式啟始點(main執行緒)下列何者正確
      A) public static void main ( String[] args )
      B) static public void main ( String[] args )
      C) public static void main ( String args[] ) 
      D) public static void main ( String[] array )
      E) public void main ( String[] args )
      F) static void main ( String[] args )
      ====================================================
      考生答案: ABCD, 正確答案: ABDE
      switch (運算式){
      case 結果1:
      case 結果2:
      }
      上述運算式結果, java允許何種型態資料?
      A) char
      B) int
      C) long
      D) String (JavaSE 7.0 版本)
      E) enum
      F) Object
      ====================================================

    下午實作 enum 十二生肖判別
 
利用ENUW 方式製作
 




















   擲筊老師用form表單方式製作
      




















     下午實作 JSP的FORM表單,結果我的腦筋有點給他混沌,昏昏沉沉有點聽不太懂!
     我們實作兩個習題,一個是作電子表單將
     檔案













   除了htm檔案外另要有一個jsp檔案去承接data










完成畫面
















    我要說老師在講這個表單的時候,我覺得太快了,我沒有辦法完全吸收,特別是裡頭有些特別的語法,像是
     [meta http-equive="Content-Type" content="text/html; charset=UTF-8"]
      這一句是說明網頁標籤的型態,其是我看了霧煞煞,就算是後來承興有來幫忙解釋一下,我還是一知半解!
     可是老師馬不停蹄的繼續講撲克比大小的程式,當然這又是賭博遊戲。

     比大小程式碼

















    開始畫面
     












     執行結果畫面
     




















今天的重點應該是JSP的FORM表單,一些語法是特殊的,有些設計的部分,包括單選的RADIO及多選的CHECKBOX,可惜今天沒提到下拉式選單,另外就是承接的JSP檔案,因為是兩兩搭配的程式,故必須

2012年7月6日 星期五

0705 JSP java 基礎課程 複習

第一個主題 DATE

Date d = new Dabe();
System.out.println(d)
SimpleDataFormat 簡單的日期轉換
檔案練習這次用eclipse
執行結果很簡單就是把預設的日期顯示出來!
接下來為了介紹 資料庫的部分
所以 下載 mysql 的driver
利用原本的appser 的webserver
把Excel 或acess 匯入資料庫

JAVA 補充 
static
變數加上static  (公用變數) 如果變數加上static 表示
此變數為共同所有 ,所以其他修改會改變此變數的值,
方法加上static 為靜態方法 可以不用new就直接使用
靜態方法只能用靜態變數 非靜態方法也可以用靜態變數
靜態方法不可以使用非靜態變數。
加強練習
Static 範例 建立Statclass

在建立Test01 class 執行 利用static地特性
請注意getsibling

紅線區域是執行結果

下午是簡單的JSP的輸入製作
先下載 APPARCHE 的 Tomcat 然後執行安裝
將原本製作的網頁貼在
C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps
因為先前安裝appser所以以本機登入地方是
內建的port是8080可在server.srt下更改
在網頁下輸入
localhost:8080/BlueData
在主網建立hola超連結,建立hola.jsp
建立hola world 的index.jsp文件

執行結果(很單調,背景是白色的)

改了天空藍,是否好點呢>?

心得:import 的部分必須自己加入,不像eclpse
會自己加入,另外大部分的語法(90%以上)都與java相同,只有部分必須注意的,像class就不用宣告 Main() 也不用宣告,所以前段的部分不同的地方較多,其他就大同小異了,唯一要注意的是因為是用notepade編輯,所以像括號沒刮拉,字大小寫拉或打錯字拉,都必須要自己留意,否則常在這種小地方卡住往往要花許多的眼力才能找出來,不過Tomcat會除錯提醒錯誤更正的行數,所以看懂錯誤碼也是很重要的
今天的課題是將四星彩及大樂透加上網頁。