阿加莎的JSP(2day)

terryisme發表於2009-03-18

今天的學習內容有:
Spring外掛的安裝和使用
安裝中文補丁
啟動時清除eclipse記憶體
閱讀SPRINGSIDE文件
程式碼事例分析
關於程式碼中中文亂碼問題的處理

Spring外掛的安裝
1.考檔案org.springside.ide_1.0.0.jar到D:J2EEeclipseplugins中
<wbr>
2.重新啟動ECLIPSE 加引數-CLEAR
3.在新建OTHER中看有沒有SPRING專案

Spring外掛的使用
1.新建其他專案
<wbr>
2.選擇SPRINGSIDE PROJECT
<wbr>
3.填入名字
<wbr>
4.選擇元件
<wbr>
以後元件還可以再增加
5.這樣一個專案就生成了:)嘿嘿
<wbr>

<wbr>

<wbr>

安裝中文補丁
1. <wbr>解壓NLpack1-eclipse-SDK-3.2-win32.zip到eclipse中eclipseplugins下
2. <wbr>記錄路徑D:J2EEeclipsepluginsNLpack1-eclipse-SDK-3.2-win32
3. <wbr>在LINKS目錄裡面建立檔案language.link,用TXT開啟將PATH=D:J2EEeclipsepluginsNLpack1-eclipse-SDK-3.2-win32寫入即可
4. <wbr>重新啟動eclipse(可能要重新裝載MY eclipse)

閱讀SPRINGSIDE文件
<wbr>


程式碼事例分析
程式功能:實現使用者的列出,編輯,刪除,增加

<wbr>

<wbr>


一個CRUD介面由下面的五個關鍵檔案組成
" <wbr>User-- <wbr> POJO Entity
" <wbr>UserManager--Business Manager
" <wbr>UserAction -- Controller
" <wbr>userList.jsp -- 使用者列表頁面
" <wbr>userForm.jsp --新增與修改使用者頁面

1. <wbr>類
User.java
User類使用了Hibernate Annotation來標示ORM的對映關係,因為預設類名與資料庫表名,屬性名與資料庫列名相同,因此註釋量比hbm檔案大大降低。
程式碼中只以@Entity註釋User類,以@Id 和 @GeneratedValue註釋id列,表明主鍵及其生成策略,其餘屬性全部與資料庫中的列預設對映。

package org.springside.helloworld.model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

/**
<wbr>* 使用者.帶jpa annotation簡版配置.
<wbr>*
<wbr>* @author calvin
<wbr>* @author schweigen
<wbr>*/
@Entity//這個語句是JDK1.5後新增加的功能,定義一個實體物件
@Table(name = "USERS")//定義表名為USERS,但是USERS這個是可以修改的
public class User {// USER類的定義,與資料表欄位一一對應
<wbr>private Integer id;//ID屬性
<wbr>private String name;
<wbr>private String email;
<wbr>private String descn;
<wbr>@Id//表明是主鍵
<wbr>@GeneratedValue(strategy = GenerationType.AUTO)//用GenerationType型別來自動定義
<wbr>public Integer getId() {//方法的定義
<wbr> <wbr>return id;
<wbr>}
<wbr>public void setId(Integer id) {
<wbr> <wbr>this.id = id;
<wbr>}
<wbr>public String getName() {
<wbr> <wbr>return name;
<wbr>}
<wbr>public void setName(String name) {
<wbr> <wbr>this.name = name;
<wbr>}
<wbr>public String getEmail() {
<wbr> <wbr>return email;
<wbr>}

<wbr>public void setEmail(String email) {
<wbr> <wbr>this.email = email;
<wbr>}

<wbr>public String getDescn() {
<wbr> <wbr>return descn;
<wbr>}

<wbr>public void setDescn(String descn) {
<wbr> <wbr>this.descn = descn;
<wbr>}
}

UserManage.java
Manager類傾向於RoR式的簡潔,所以No Dao,No Interface ,繼承於強力基類HibernateEntityDAO, 基類使用SpringHibernateTemplate,並用泛型封裝了預設的CRUD函式。
package org.springside.helloworld.service;

import org.springside.core.dao.HibernateEntityDao;
import org.springside.helloworld.model.User;

/**
<wbr>* 使用者管理業務類.
<wbr>*


<wbr>* 繼承於HibernateEntityDao,不需任何程式碼即擁有預設的對User物件的CRUD函式. 如果想了解不繼承於EntityDao,自行編寫CRUD的寫法, 參考 UserManagerNativeVersion}.
<wbr>*
<wbr>* @author calvin
<wbr>* @see HibernateEntityDao
<wbr>* @see org.springside.core.dao.HibernateGenericDao
<wbr>* @see UserManagerNativeVersion
<wbr>*/
public class UserManager extends HibernateEntityDao {
<wbr>// ....CRUD以外的其它商業方法C增加R查詢U更新D刪除,UserManager對於User類的操作,這裡只有一個對HibernateEntityDao的繼承。
}

UserAction.java
<wbr>Struts Action 部分避免了舊式Struts 用法的繁瑣,詳見Pragmatic Struts篇。
<wbr> <wbr> <wbr> 新模式下,繼承DispatchAction 每個Controller 響應一組相關操作,LazyValidatorForm免去FormBean定義,同樣採用了強力的StrutsEntityAction CRUD基類。
<wbr> <wbr> <wbr> UserAction 首先用泛型宣告管理型別為User,Manger型別為UserManager,再宣告userManager變數和它的setter函式,就擁有了預設的CRUD管理函式。

package org.springside.helloworld.web;
import org.springside.core.web.StrutsEntityAction;
import org.springside.helloworld.model.User;
import org.springside.helloworld.service.UserManager;

/**
<wbr>* 使用者管理Controller.
<wbr>*


<wbr>* 繼承於StrutsEntityAction,不需編碼就擁有預設的對User物件的CRUD響應函式. 如果想了解不繼承於EntityAction,自行編寫CRUD的寫法, 參考 UserActionNativeVersion}.
<wbr>*
<wbr>* @author calvin
<wbr>* @see org.springside.core.web.StrutsEntityAction
<wbr>* @see org.springside.core.web.StrutsAction
<wbr>* @see UserActionNativeVersion
<wbr>*/
public class UserAction extends StrutsEntityAction {

<wbr>@SuppressWarnings("unused")//對本句後面的程式碼不進行檢查
<wbr>private UserManager userManager;

<wbr>public void setUserManager(UserManager userManager) {
<wbr> <wbr>this.userManager = userManager;//定義各個BEAN之間的關係
<wbr>}
}

2. <wbr>JSP
Userlist.jsp


//包含檔案taglibs.jsp


<wbr>
<wbr>User Manage



<wbr>
<wbr>
<wbr>

<wbr> <wbr>

User Infomation Manage


<wbr> <wbr>

<wbr> <wbr> <wbr>
<wbr> <wbr> <wbr>
<wbr> <wbr> <wbr>
<wbr> <wbr> <wbr> <wbr>
<wbr> <wbr> <wbr> <wbr> <wbr>
<wbr> <wbr> <wbr> <wbr> <wbr>
<wbr> <wbr> <wbr> <wbr>
<wbr> <wbr> <wbr>

<wbr> <wbr> <wbr> <wbr> <wbr> <wbr>
<wbr> <wbr> <wbr> <wbr> <wbr> <wbr>*
<wbr> <wbr> <wbr> <wbr> <wbr> <wbr>
<wbr> <wbr> <wbr> <wbr> <wbr>

<wbr> <wbr> <wbr>

<wbr> <wbr> <wbr> <wbr>Save
<wbr> <wbr> <wbr> <wbr>Cancel
<wbr> <wbr> <wbr>

<wbr> <wbr>

<wbr>


// staticJavascript="false"自動動態生成JAVASCRIPT程式碼

//${ctx}是個變數為了表示絕對地址

Userform.jsp




<wbr>
<wbr>//
<wbr>User Manage



<wbr>

<wbr>


<wbr> <wbr>

User List


<wbr> <wbr>
<wbr> <wbr><!--
<wbr> <wbr> <wbr> <wbr> <wbr> action="${pageContext.request.contextPath}/user.do">
<wbr> <wbr> <wbr>
<wbr> <wbr> <wbr>
<wbr> <wbr> <wbr> <wbr>
<wbr> <wbr> <wbr> <wbr>
<wbr> <wbr> <wbr> <wbr>
<wbr> <wbr> <wbr> <wbr>
<wbr> <wbr> <wbr> <wbr> <wbr>Edit
<wbr> <wbr> <wbr> <wbr>

<wbr> <wbr> <wbr> <wbr>
<wbr> <wbr> <wbr> <wbr> <wbr>Delete
<wbr> <wbr> <wbr> <wbr>

<wbr> <wbr> <wbr>

<wbr> <wbr>--&gt
<wbr>

<wbr>


<wbr> <wbr>
<wbr>




3. <wbr>配置檔案

Dataaccesscontext-hibernate.xml
連線資料庫的時候要修改


<wbr><!-- 資料來源定義,使用Apache DBCP 連線池 --&gt
<wbr>
<wbr> <wbr>
<wbr> <wbr>
<wbr> <wbr>
<wbr> <wbr>
<wbr>

<wbr><!--Hibernate SessionFatory--&gt
<wbr>
<wbr> <wbr>
<wbr> <wbr>
<wbr> <wbr> <wbr><!--
<wbr> <wbr> <wbr> <wbr>org.springside.bookstore.commons.model.Book
<wbr> <wbr> <wbr> <wbr>org.springside.bookstore.commons.model.Category
<wbr> <wbr> <wbr>--&gt

<wbr> <wbr>

<wbr> <wbr>
<wbr> <wbr> <wbr>
<wbr> <wbr> <wbr> <wbr> <!-- see /components/orm/hibernate/meta/dialect.properties for all Dialect --&gt
<wbr> <wbr> <wbr> <wbr>org.hibernate.dialect.HSQLDialect//紅字需要改
<wbr> <wbr> <wbr> <wbr>false
<wbr> <wbr> <wbr> <wbr>org.hibernate.cache.EhCacheProvider
<wbr> <wbr> <wbr> <wbr>true
<wbr> <wbr> <wbr>

<wbr> <wbr>

<wbr>

<wbr><!--Hibernate TransactionManager--&gt
<wbr>
<wbr> <wbr>
<wbr>


Servicecontext.xml


// default-lazy-init="true"說明只有要用的時候才載入
<wbr><!--
<wbr> <wbr> <wbr> <wbr>
<wbr> <wbr> --&gt

Validation.xml

br /> <wbr> <wbr>"-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.3.0//EN"
<wbr> <wbr>"">


<wbr><!--
<wbr> <wbr> <wbr>


<wbr> <wbr> <wbr> <wbr>
<wbr> <wbr> <wbr> <wbr> <wbr>
<wbr> <wbr> <wbr> <wbr>

<wbr> <wbr> <wbr>

<wbr> <wbr>--&gt


啟動時清除eclipse記憶體
<wbr>


關於程式碼中中文亂碼問題的處理
1. <wbr>在專案屬性中點右鍵
<wbr>
2. <wbr>選擇UTF-8
<wbr>


javabean相關知識:javabean 是一種元件技術,服務邏輯層程式設計實現,對應與microsoft的com技術;jsp是java server page,在c/s和b/s結構中實現server端程式設計,對應mic的asp;jdbc是java
db connection,是一種java db的驅動技術,對應mic的odbc,如果想從事web開發,這裡的幾個都要學,尤其是javabean.組合起來就是所謂的mvc的開發模式,mvc也就是通常所說的模,檢視,控制的縮寫
Java Bean簡易教程
  SqlMap 架構需要對 Java Bean 有堅實的理解。幸運的是,和 SqlMap 有關係的 Java Bean API 的並不是很多。因此,如果您以前沒有接觸過 Java Bean,下面是一個簡單的介紹。
  Java Bean 是什麼呢?Java Bean 是一種特殊的 Java類,它嚴格遵循 JavaBean 命名規範,定義存取類狀態資訊方法的命名規則。
  Java Bean 的屬性由它的方法定義(而不是由欄位定義)。以“set”為名稱開始的方法是可寫的屬性,而以“get”為名稱開始的方法是可讀的屬性。
  對於“boolean”型別的欄位,可讀的方法名稱也可以用“is”開始。“Set”方法不應擁有返回型別(即必須為 void),並且只能有一個引數,引數的資料型別必須和屬性的資料型別一致。“Get”方法應返回合適的型別並且不允許有引數。
  雖然通常並不強制,但“Set”方法引數的資料型別和“Get”方法的返回型別應一致。Java Bean 還應實現Serializable介面。
Java Bean 還支援其他特性(如事件等)。但這些特性 SQL Map 和 Web 應用中並不重要。
下面是 Java Bean 的一個例子:
public class Product implements Serializable ...{
private String id;

private String description;

public String getId() ...{
<wbr> <wbr> <wbr> return id;
}

public void setId(String id) ...{
<wbr> <wbr> <wbr> this.id = id;
}

public String getDescription() ...{
<wbr> <wbr> <wbr> return description;
}

public void setDescription(String description) ...{
<wbr> <wbr> <wbr> this.description = description;
}
<wbr> 注意!對於特定的屬性,不要混淆“Get”方法和“Set”方法的資料型別。例如,對於數值型別的“account”屬性,確保 getter方法和 setter方法使用同一數值型別,如下面的 例子:
public void setAccount (int acct) {….}
public int getAccount () {….}
注意到兩個方法都使用了“int”型別。如果從“get”方法返回“long”型別,會出現問題。
注意!類似的,您必須只有一個“get”方法和“set”方法。Be judicious with polymorphic methods. You’re better off naming them more specifically anyway.
注意!對於“boolean”型別的屬性,“get”方法還可以有別的語法,可以是“isXxxx()”格式。確保您只有一個“is”方法或“get”方法,不能同時有兩種寫法。

問題:
1.USERLIST.jsp中的id="page"div id="header"

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/93029/viewspace-1018945/,如需轉載,請註明出處,否則將追究法律責任。

相關文章