2015年12月21日 星期一

JAVA SL-314_12/20

Date: 12/20
/================================================/

DAO(Data Access Object)資料存取物件
主要的功能是資料操作,屬於資料層的操作

client   →  JSP/Servlet  →  BO  →  DAO  →  Database
客戶層        顯示層          業務層     資料層       資源層

client →  B/S開發架構,大都以Browser進行存取
顯示層 → 以JSP/Servlet進行頁面效果的顯示
Business Object→ 將多個最小的DAO進行組合變成一個業務邏輯--> BO
DAO→ 提拱多個最小性的DAO操作,例如新增刪除、修改

/================================================/

DAO → 由以下幾個部分組成:

Database Connection → 負責資料庫的開啟與關閉 (xxx.dbc.DatabaseConnection)
VO → 主要是屬性,setter、getter方法組成,與欄位相對應,每一個VO的組成都對應到一條記錄 (like JavaBean)
DAO → 定義操作的介面,新增、刪除、修改、按ID查詢等 (xxx.dao.ImplDAO)
Impl → DAO介面的真實實歸類別,完成實際的資料庫操作不負責開啟和關閉(xxx.dao.xxxImplDAO)
Proxy →  代理實現類別,完成資料庫的開啟和關閉 (xxx.dao.xxxDAOProxy)
Factory → 工廠類別,透過他取得一個DAO產生的實體物件 (xxx.factor.DAOFactory)

/================================================/
組成: 註冊系統 --> 將資料存到架設好的mySQL建表
1. index.jsp、emp_list.jsp、insert_success.jsp
2. com.demo => DatabaseConnection.java、Emp.java、IEmpDAO.java、IEmpDAOImpl.java、EmpDAOProxy.java、DAOFactory.java
3. com.dome.dbc => DatabaseConnection.java、MySQLDatabaseConnection.java

2015年12月17日 星期四

JAVA SL-314_12/13

JAVA SL-314_12/13

Date: 12/13

/======================================================/

<jsp:useBean>
與 import 功能相同
<jsp:useBean id=”產生的實體物件” scope="儲存範圍" class=”套件.class name” />

※ scope => 表示這個物件的儲存範圍,一共有四個屬性: page, request, session, application

/======================================================/

<jsp: setProerty>
可以透過 * 的形式完成屬性的自動設定
一其有4種方法

自動比對: <jsp: setProperty name=”實體的名稱(id)” property=”*” />
指定屬性: <jsp: setProperty name=”實體的名稱(id)” property=”屬性明稱” />
指定參數: <jsp: setProperty name=”實體的名稱(id)” property=”屬性明稱” param=”參數名稱” />
指定內容: <jsp: setProperty name=”實體的名稱(id)” property=”屬性明稱” value=”內容” />

/======================================================/

2015年12月6日 星期日

JAVA SL-314_12/06

Date: 12/06

/========================================================/
session物件

session的用處就是完成使用者的login logout
等常見功能,每一個session都表示不同的存取
使用者,其為javax.servlet.http.HttpSesion介面
所產生的實體物件

HttpSession介面中存在以下4種屬性操作方法:
1. 設定屬性 public void patValue(String name, Object value)
2. 取得屬性 public Object getValue(String name)
3. 刪除屬性 public void removeValue(String name)
4. 取得全部性屬性名稱 public String[ ] getValueNames()
/========================================================/
※ 作業系統伺服器+web伺服器(mysql+tomcat)
web伺服器是用來解譯web程式語言

※ JSP是一個很嚴謹的程式語言,因此相對的比較不容易被駭客入侵。
/========================================================/

三種工程師——Coder, Hacker and Architect


三種工程師——Coder, Hacker and Architect


Reference:http://www.inside.com.tw/2015/01/13/coder-hacker-and-architect

2015年11月29日 星期日

JAVA SL-314_11/29

Date: 11/29

在JSP中為了簡化使用者開發JSP內建
9種物件供開發者使用

pageContext  頁面內容容器
request   請求者資訊
response   用戶端回應資料
session   儲存使用者資訊
application  使用者共同資訊
config   初始化參數伺服器設定
out  輸出
page
exception

page → 跳躍無效,一個頁面
request → 一次請求,跳躍然有效
session → 一次階段範圍中儲存 新開browser無效
application →整個 伺服器上儲存 all user使用

/===============================================/

2015年11月23日 星期一

JAVA SL-314_11/22

JAVA SL-314
Date: 11/22

/*
<%!
        public static final String INFO="www.google.com";
        int x=0;
%>

<%
        out.println("<h2>x="+x+++"</h2>"); //敘述
%>

<%!
        public int add(int x, int y){
                       return x+y;
        }
%>

<%!
        class Person {
                      private String name;
                      private int age;
                      Person(String name, int age){
                                          this.name=name;
                                          this.age=age;
                      }
                      public String toString(){
                                          return "name="+this.name+"; age="+this.age;
                      }
        }
 %>
 <%!
          out.println("<h3>INFO"+INFO+"</h3>");
          out.println("<h3>3+5="+add(3,5)+"</h3>");
          out.println("<h3>"+new Person("name",18)+"</h3>");
%>
*/

/====================================================/
想要在自己的 NB 上架 Drupal 及 Wordpress 等 Open Source 免費架站軟體的開發測試
環境,以前都是從 Apache 、PHP 、 MySQL 、phpMyAdmin 一個一個的安裝設定,
還蠻麻煩的,而且也容易出問題,現在直接用 AppServ 四合一包還蠻方便,安裝快速
又容易,很快就可以準備好自己的開發測試環境了 !

1. 先下載appserv-win32-2.5.10.exe:
https://drive.google.com/file/d/0B8Dfp4n5Q35CVjY0SjV3QmljTDQ/view?usp=sharing

2. 執行安裝 ---> 以系統管理員執行
appserv-win32-2.5.10.exe

3. 點按next

4. 點按I agree

5. 依照下列指示安裝下一步





6. 安裝完成後,可以查看工作管理員--->服務--->Apache2.2、mysql


7. 服務都起來後,執行google輸入localhost,就會看見以下畫面,再點選指示

 8. 輸入root,及密碼

9. AppServ 2.5.10 安裝測試成功


/====================================================/

Page指令

1. contemt Type ---> 定義JSP字元的編號和頁面MIME的回應型態。
2. import ---> 要載入那些套件。
3. pageEncoding ---> JSP頁面的字元編碼。
3. info ---> 資訊。
4. language ---> 指令碼語言。
5. is ErrorPage ---> 此頁面是否為出錯的處裡頁true處理,false則無法處理。

/====================================================/

include指令 => @

可分為動態包含及靜態包含:
1. 靜態包含---> 就是包含一個文字或JSP檔案,過程是靜態的,
                           例如: JSP檔案、html檔案、文字檔。
2. 動態包含---> 是使用<jsp: include>可以將靜態及動態頁面一
                            起包含進來,分別處裡,先處理靜態頁面結果。

ex:
      <h3>靜態包含操作</h3>
      <%@ include file = "info.html"% >
      <%@ include file = "info.inc"%>
   
※page,include => %後都要加@

/====================================================/
//include.jsp<br />
<%@ page language="java" import="java.util.*" pageEncoding="BIG5"%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  </head>
  
  <body>
    <% 
     int x=10;
    %>
    <h1>include.jsp--x<%=x%></h1>
  </body>
</html>
/====================================================/
receive_param.jsp
/*
<html>
  <head>
 
  </head>

  <body>
    <h1>參數一:
    <%= request.getParameter("name") %></h1>
    <h2>參數二:
    <%= request.getParameter("info") %></h2>
  </body>
</html>
*/
/====================================================/
App2.jsp (動態)
/*
<html>
  <head>
  </head>
  
  <body>
    <h1>動態包含操作</h1>
    <%
    String name="Google";
    %>
    <jsp:include page="receive_param.jsp">
    <jsp:param name="name" value="<%= name %>"/>
    <jsp:param name="info" value="www.google.com"/>
    </jsp:include>
    <%
    int x=100;//變數 
    %>
    <h1>App2.jsp...x<%=x %></h1>
    <jsp:include.page="include.jsp"/>
  </body>
</html>
*/
/====================================================/
App2.jsp (靜態)
/*
<html>
  <head>
  </head>
  
  <body>
    <h1>靜態包含操作</h1>
   
    <%
     int x=100;//變數 
    %>
    <h1>include.jsp...x</h1>
    <include.page="include.jsp"/>
  </body>
</html>
*/
/====================================================/

靜態 ---> 全部包含再處理。
動態 ---> 先處理,再把結果包含進去。

/====================================================/

跳轉指令語法

不傳遞參數
<jsp:forward page="要跳轉的檔案or運算式"/>

要傳遞參數
<jsp: forward page="要跳轉的檔案or運算式"/>
<jsp: param name="參數名稱"  value="參數名稱"  value="參數內容"/>
</jsp: forword>

/====================================================/

2015年11月15日 星期日

JAVA SL-314_11/15

JAVA   SL-314
Date: 11/15

※ HTTP/FTP/HTTPS
基於請求/回應模型
沒有狀態的通訊協定

| HTTP|  請求URL|   請求的資源           | HTTP版本
http://                     /download.do?file… /HTTP 1.1

---> 向伺服器取得指定的資源

1. 可以請求的參數有限 (依brower的版本而有不同)
2. 不適合大量的資料


※ POST
請求發佈(POST)資訊給伺服器
1. 大量的資料發送都會使用POST
2. 請求資訊移到主體,網址列不會出現請求參數
3. 一般即使請求資料不多也大都會採用POST

※GET(等冪) or POST(非等冪)

1. 過長的請求參數                                                ---> POST
2. 較敏感的參數資料                                            ---> POST
3. 希望可以讓使用者設定書籤,以便日後瀏覽   ---> GET
4. 考慮Browser會cache資料問題                          ---> GET


※採用MVC架構來設計軟體系統會比較好維護,擴充及除錯。

web---> 實體server → http伺服器 → web容器 ---> servlert

Java → JVM

Servlert / JSP --->web容器 ----> my eclipse

php容器---> apahe
ASP.NET容器 ---> IIS

/========================================================/

註解
1. // 單行
2. /*...*/  多行
3. <!--xoo-->

/========================================================/

Script

<% %>
定義區域變數,敘述
      2.   <%!%>
定義全域變數,方法,類別
      3.   <%=%>
定異常數或運算式

/========================================================/



/========================================================/
使用MyEclipse
版本: MyEclipse 8.5


接下來讓我來lab吧!
首先開啟MyEclipse,接著在WebRoot建立新的html

//MyHtml.html

<html>
  <head>
    <title>HTML_Javascript</title>
  <script language="javascript"><!--Javasript-->
   function show(){   //定義函數
   var show = document.myform.name.value;  //取得輸入內容
    alert("輸入的內容是:"+show);
   }
  </script>

  </head>
  
  <body>
    <form action="" method="post" name="myform">
               請輸入內容:<input name="name" type="text" />
          <input onclick="show()" type="button" value="顯示" />
    </form>
</body>
</html>

/========================================================/
再到google輸入 ---> http://aaronhuang:8080/DEMO/MyHtml.html

再輸入123