熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> JSP教程 >> 正文

Structs中基本配置入門

2022-06-13   來源: JSP教程 
 

  為Structs應用配置Webxml文件

第一步:配置ActionServlet



 

  <servlet> <servletname>action</servletname> <servletclass>orgappache structsActionSer vlet</servletclass></servlet><servletmapping> <servletname>action</servletname> <uripa ttern>*do</urlpattern></servletmapping>

  

注意:不管應用中包含多少個子應用都只需配置一個ActionServlet因為ActionServlet支持多線程目前的Structs框架只允許在應用中配置一個ActionServlet

第二步初始化參數對Servlet的運行環境進行初始化配置

 

  <servlet> <servletname> action</servletname> <servletclass> orgappache structsActio nServlet </servletclass> <initparam><paramname>config</paramname><paramvalue>/W EBINF/structsconfigxml</paramvalue></initparam> </servlet>

  

Struts中用到的初始化參數

 

參數名 含義/默認值 config 以相對路徑的方式指明 Struts應用程序 的配置文件位置 如不設置則默認值為/WEBINF /strutsconfigxml config/sub 以相對路徑的方式指明子應用程序 的配置文件位置一般來說 很少用到子應用程序 在此不多描述 debug 設置Servlet的debug級別 控制日志記錄的詳細程度 默認為 記錄相對最少的日志信息 detail 設置Digester的debug級別 Digester是Struts框架所使用的 用來解析xml配置文件的一個框架 通過該設置可以查看不同詳細 等級的解析日志默認為 記錄相對最少的日志信息

  

第三步配置歡迎清單

當客戶訪問Web應用時如果僅僅給出Web應用的Root URL沒用指定具體的文件名Web容器會自動調用Web應用的歡迎文件

 

  <welcomefilelist><welcomefile>welcomejsp</welcomefile><welcomefile>indexjsp</welcom efile> </welcomefiellist>

  

說明

可以包含多個子元素首先查找第一個文件

由於元素中不能配置Servlet映射因此不能直接把Structs的Action作為歡迎文件可以采用一種變通的方法來實現在歡迎文件中調用Structs Action

首先在Structs配置文件中為被調用的Action創建一個全局的轉發項例如

 

  <globalforwards> <forward name=”welcome” path=”HelloWorddo”/></globalforwords>

  

創建一個welcomejsp的文件最後在webxml文件中把welcomejsp文件配置為歡迎文件代碼如下

 

  <welcomefilelist><welcomefile>welcomejsp</welcomefile> </welcomefilelist>

  

第四步配置錯誤處理

 

  <errorpage> <errorcode></errorcode> <location>/commom/jsp</location></erro rpage><errorpage> <errorcode></errorcode> <location>/commom/jsp</locati on></errorpage>

  

也可以為Web容器捕獲的Java異常配置需要設置子元素它用於指定Java異常類Web容器可能捕獲如下異常RuntimeException或Error ServletException或它的子類IOException或它的子類

 

  <errorpage> <exceptiontype>javaioIOException </exceptiontype> <location>/common/sy stem_ioerrorjsp </location></errorpage>

  

第五步配置Structs標簽庫

使用客戶化的標簽庫要配置它們

 

  <taglib> <taguri>/WEBINF/structshtmltld <taguri> <tagliblocation> /WEBINF/str uctshtmltld </tagliblocation> </taglib>

  

用於指定標簽庫的相對或者絕對URI地址Web應用根據這一URI來訪問標簽庫

指定標簽描述文件在文件資源系統中的物理位置

  Structs配置文件

Structs框架在啟動時會讀入其配置文件根據它來創建和配置各種Structs組件

元素

元素是Structs配置文件的根元素元素有個子元素它的DTD定義如下

  <!ELEMENT structsconfig(datasources?formbean?globalexeception?globalforward?actionmapp ingcontroller?messageresources*plugin*)>

  

在Struts配置中必須按照以上的DTD指定的先後順序來配置元素的各個子元素如果顛倒了這些元素的配置文件中的位置在Structs應用啟動時會生成錯誤

元素

元素包含零個一個或者多個子元素用於配置特定的數據源它可以包含多個子元素用於設置數據源的各種屬性

配置了數據源後就可以在Action類中訪問數據源在orgapachestructsactionAction類中定義了getDataSource(HttpRequrst)方法它用於獲取數據源對象的引用

 

  DataSource dataSource; Connection connection; dataSource =getDataSource(request); conn ection=dataSourcegetConnection();

  

也可以在配置文件中聲明多個數據源此時需要為每一個數據源分配唯一的key值通過改值來標識特定的數據源

元素

元素用來配置多個ActionForm Bean 包含多個子元素每個包含多個屬性ClassName nametype

 

  <formbeans> <formbean name="HelloForm" type="helloHelloForm"/></formbeans>

  

注意配置動態ActionForm Bean還必須配置 元素的 元素

 

  <formbeans> <formbean name="HelloForm" type="helloHelloForm"/> <formbean na me="userForm" type="orgapachestructsactionDynaAction"> <fromproperty name="firstnam e" type="javalangString"/> <formproperty name="secondname" type="javalangStrin g"> <formproperty name="age" type="javaInteger" initial=""> </formbeans>

  

()元素

用於配置異常處理元素可以包含零個或者多個元素

元素用來設置java異常和異常處理類orgapachestructsactionException Hander之間的映射

()元素

元素用來聲明全局的轉發關系有零個或多個元素組成元素用於把一個邏輯映射到特定的URL

 

屬性 描 述 className 和元素對應的配置類 默認為orgapachestructs actionActionForWard name 轉發路徑的邏輯名 此項時必須的 path 指定或者重定向的URI 此項時必須的 必須以”/”開頭 redirect 此項是true表示是執行重定向的操作 此項是false時 表示請求轉發

  

 

  <globalforwards> <forward name="forward" path="/Actiondo"/><forward name="forw ard" path="/Actiondo"/> </globalforwards>

  

如果jspjsp把請求轉發給Action可以使用以下代碼

 

  <html:link forward=”forward”>

  

或者

 

  <logic:forward name=”forward”>

  

如果Action的execute()方法把請求轉發給JSPjsp可以使用一下代碼

 

  return(mappingfindForward(“forward”))

  

()元素

元素包含零個或者多個元素元素描述了從特定的請求路徑到相應的Action類的映射

()元素

元素用於配置ActionServlet

()< messageresources>元素

元素用於配置Resource BundleResource Budle用於存放本地化消息文件

Structs標簽

HTML標簽

標簽名 描述

base 包裝HTML的base元素

button 包裝HTML的 button類型的input元素

cancel 包裝HTML cancel 按鈕

checkbox 包裝HTML checkbox 類型的輸入域

errors 有條件地顯示一些error消息顯示ActionErrors信息

file 包裝HTML文件上傳輸入域

form 定義HTML form 元素

frame 包裝HTML frame 元素

hidden 包裝HTML hidden 輸入域

html 包裝 HTML中的 html 元素

image 包裝 "image"類型的輸入域

img 包裝HTML的 img 元素

javascript 包裝根據ValidatorPlugIn提供的校驗規則所提供的javascript校驗腳本

link 包裝超鏈接

messages 有條件地顯示一些提示信息顯示ActionMessages信息

multibox 包裝多選輸入框

option 包裝一個選擇輸入框

options 包裝一批選擇輸入框

optionsCollection 包裝一批選擇輸入框集

password 包裝密文輸入框

radio 包裝單選輸入框

reset 包裝“重置”功能的按鈕

rewrite 包裝一個URL

select 包裝一個選擇輸入框

submit 包裝一個提交按鈕

text 包裝一個文本輸入框

textarea 包裝一個備注輸入框

ActionForm

ActionForm 的要求

創建一個ActionForm 並不困難但是你的類必須符合一些要求

ActionForm 必須擴展自orgapachestrutsActionForm基類ActionForm 是不能實

例化的

ActionForm 必須為每個應該從請求中收集的HTML控件定義一個公共屬性

(Struts 要求每個屬性都要mutator 和accessor Struts 則沒有如此嚴格)

ActionForm還可能要符合一些可選的要求:

如果你要求ActionForm 在傳遞屬性到Action之前校驗它們你就必須實現validate

方法如果想在組裝前初始化屬性必須實現reset 它在ActionForm 組裝前被調用

動態ActionForm

ActionForm 作為類型轉換器

ActionForm的一個強制點是應該使用String 和boolean屬性實際上這意味著屬性

必須得從一種轉換到另一種類型大部分應用也需要一些屬性比如電話號碼或者數量以一種格式化的方式出現

核心Java 包提供一些工具來做這種事情但是要清楚地將他們集成到應用中仍然是一個挑戰

Struts開發人員經常在ActionForm中包含helper方法來進行類型轉換helper 方法

可以有很多種實現方式

ActionForm 作為防火牆

當請求提交時ActionServlet 使用一個自動組裝機制來從請求參數中設置請求的

ActionForm屬性這讓你可以通過控制哪個ActionForm 屬性被暴露來控制哪個請求參數

是可接受的這也意味著如果你的ActionForm 的粗心設計你可能失去控制哪個參數可以接受的能力ActionForm一定不能包含看起來像是一個JavaBean屬性但不能從HTTP請求設置的屬性方法

ActionForm 可以嵌套其它bean

因為Struts標簽擴展和自動組裝機制都支持點號語法來從ActionForm訪問其它bean這是一個方便的方式可以通過ActionForm來組裝存在的bean在JSP頁面你可以象這樣引用一個嵌套的bean

 

  <html:textpropety="valuestelephoneText"size=""maxlength=""/>

  

分發(Dispatch )

Struts 開發人員通常使用同一個Action處理相關的操作一個通常做法來選擇操作是在

HTML表單中使用隱藏屬性BaseForm 的dispatch 屬性也可用作這個目的

 

  public void setDispatch(String dispatch);public String getDispatch();

  

Struts 配置提供連個級別嵌套的ActionForward:

Global (全局) ActionForward對整個應用中的所有Action 對象均有效

Local (局部) ActionForward 則在ActionMapping 元素中定義

僅對那些在這個ActionMapping中調用的Action對象有效從Action 對象內部來看forward 通常像這樣來選擇

 

  ActionForward forward = mappingfindForward("continue");


From:http://tw.wingwit.com/Article/program/Java/JSP/201311/19975.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.