国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Apache Click framework測試報告

Apache Click framework測試報告

Apache Click Framework 測試報告

1.Apache Click框架簡介 3
2.開發(fā)環(huán)境配置 3
2.1常規(guī)配置 3
2.2 Apache Click IDE安裝 3
3.quickstart簡易入門程序 5
3.1 web應用結構 5
3.2添加Jar包 6
3.3 Welcome File 6
3.4 Home Page 6
3.5框架模板 8
3.6日志 9
4.Apache Click主要類介紹 11
4.1 Page類 11
4.1.1請求參數(shù)自動綁定 14
4.1.2用戶權限檢查 14
4.1.3頁面導航 14
4.1.4.模版頁面 15
4.1.5.錯誤處理: 15
4.1.6 信息資源文件 15
4.2.Control類 16
4.2.1 Control回饋: 17
4.2.2 Control類集: 18
4.2.3 Control類的頭部組件 18
4.2.4 Container類 18
5.配置 19
5.1 Servlet Configuration:Servlet設置 19
5.2 Config Service Class:服務類設置 20
5.3 Application Configuration:應用設置 20
5.4 Page:頁面設置 20
5.5 Headers:頁頭設置 21
5.6 Mode:模式設置 21
5.7 Auto Deployed Files:自動部署的文件 21
6.與其他框架集成 22
6.1與struts2集成 22
6.1.1 web.xml 22
6.1.2 click.xml 22
6.1.3 struts.xml 23
6.2與Spring集成 23
7.Apache Click應該注意的幾個方面 23
7.1 Click中文顯示問題。 23
7.2 在Click中使用FCKEditor控件。 24
7.3 使用Click的頁面權限驗證: 24
7.4 @Bindable屬性 24
7.5 頁面命名 24
7.6 Mock 25
8.Apache Click框架優(yōu)缺點 25
8.1優(yōu)點 25
8.2 缺點 25
附:Velocity簡介 25



1.Apache Click框架簡介
Click是一個高性能的J2EE Web應用程序框架適用商業(yè)Java開發(fā)者,它是基于頁面和組件的java web框架,基于事件編程模型,使用Velocity模板作為頁面視圖,沒有復雜的抽象和定義,簡單易學,商業(yè)開發(fā)者能夠在一天內把它運行起來。
◆ 簡單易學,
◆ 面向頁面與組件設計,
◆ 基于事件編程模型,
◆ 自動表單驗證,
◆ 使用Velocity模板作為頁面視圖,
◆ 漂亮的錯誤報告功能,
◆ 使用Rico(一個開源的JavaScript庫,它提供對AJAX完全支持并可讓Web應用程序支持拖放操作等其它功能)來對AJAX的支持等。
2.開發(fā)環(huán)境配置
2.1常規(guī)配置
jdk:1.6;
IDE:eclipse3.5帶wtp插件;
Tomcat:5.5或者6.0;
click包:click-2.1.0-RC1-incubating或者click-2.1.0,下載網址:http://click.apache.org/。
2.2 Apache Click IDE安裝
下載Click IDE clickide-2.1.0.0.zip,解壓后將plugins和 features兩個文件夾放置你的Eclipse安裝目錄,然后開啟Eclipse程序。
1. 新建 Dynamic Web Project,其中的configuration選擇Apache Click 2.1.0 project;
2. Click IDE提供了對click.xml文件的可視化編輯器,可以更方便的進行編輯。
3. 可以直接新建click Page,如下圖所示。
4. 提供了對Velocity Template模版的編輯器,帶有自動提示功能。
5. MyEclipse8+暫時不支持該IDE。

圖2.1 新建 Dynamic Web Project 項目

圖2.2 新建click Page頁面
3.quickstart簡易入門程序
接下去的主題將涵蓋:
web應用結構
Jar文件
Welcome File
Home Page
框架模板
日志
3.1 web應用結構
首先在你的web程序WEB-INF 目錄下添加click.xml 和web.xml 配置文件。

WEB-INF/ click.xml [51] - Application Configuration ( required)
WEB-INF/ web.xml [50] - Servlet Configuration ( required)


click.xml:
<?xml version="1.0" encoding="UTF-8"?>
<click-app>
  <pages package="com.quickstart.page"/>
</click-app>

web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app>
  <servlet>
    <servlet-name>ClickServlet</servlet-name>
    <servlet-class>org.apache.click.ClickServlet</servlet-class>
    <load-on-startup>0</load-on-startup>
  </servlet>
 
  <servlet-mapping>
    <servlet-name>ClickServlet</servlet-name>
    <url-pattern>*.htm</url-pattern>
  </servlet-mapping>
 
  <welcome-file-list>
    <welcome-file>redirect.html</welcome-file>
  </welcome-file-list>
</web-app>
3.2添加Jar包
把如下jar文件添加到你的程序的WEB-INF/lib目錄下:
click-2.1.0-RC1-incubating.jar(核心包)、click-extras-2.1.0-RC1-incubating.jar(擴展包)或者click-2.1.0.jar、click-extras-2.1.0.jar
3.3 Welcome File

 
為確保默認的請求被轉發(fā)到 home page, 我們將在web程序根目錄下新建redirect.html。 文件內容:
<html>
<head><meta http-equiv="Refresh" content="0;URL=home.htm"></head>
</html>
在web.xml中配置redirect.html, 使默認的請求都由該文件來提供服務。當瀏覽器執(zhí)行redirect.html 時, 它將被轉發(fā)到home.html頁面。
3.4 Home Page
1. 現(xiàn)在開始創(chuàng)建頁面類。創(chuàng)建包com.quickstart.page,在該包下創(chuàng)建類HomePage.代碼如下:
Package com.quickstart.page;  
import java.util.Date;  
import org.apache.click.Page;  
@SuppressWarnings("serial")  
public class HomePage extends Page {  
    //聲明一個私有的時間變量。  
    private Date time = new Date();  
    public HomePage () {  
        addModel("time", time);//將該時間變量添加到頁面模型map里  
    }  

2. 創(chuàng)建頁面home.htm,這里我們將home.htm直接放在webRoot下。代碼如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
<html>  
<head>  
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
<title>Insert title here</title>  
</head>  
<body>  
<h1>home--now time : $time</h1>  
</body>  
</html> 
注:$time 對應HomePage.java、addModel("time", time)中的time
3. 修改click.xml文件,確保home.htm能對應到類HomePage.java。在<click-app></click-app>中添加代碼:
<click-app charset="UTF-8">  
    <pages package="com.quickstart.page" />  
    <mode value="debug" />  
</click-app> 
注:
(1).這里使用了Click框架的一個重要功能,Automapping即自動映射功能,在請求某頁面時,Click將請求自動映射到與頁面命名對應的Page類上進行處理,關于Page類在后面有進一步的解釋。
(2).<mode value="debug" />聲明后臺日志的模式是什么,這里設置為debug級別。
除此之外還有development (開發(fā)模式info)、profile (規(guī)范輸出模式info)、production (生產模式warn)、trace (跟蹤模式)
(3).pages有屬性automapping默認為true該屬性將決定是否自動映射除WEB-INF下所有page到相應的類。
(4).啟動tomcat,在瀏覽器地址中輸入http://localhost:8080/quickstart /home.htm即可看到效果。如果僅在click.xml中聲明包名讓Click自己去定位( automapping ="true" ) 頁面對應類,則需要注意頁面名稱跟類名之間的關系。
對應規(guī)則為:
change-password.htm  =>  ChangePassword
change_password.htm  =>  ChangePassword
changePassword.htm   =>  ChangePassword
ChangePassword.htm   =>  ChangePassword
customer.htm         =>  CustomerPage
change-password.htm  =>  ChangePasswordPage
除自動映射外可以強制配置:
<pages package="com.quickstart.page">  
<page path="home.htm" classname="HomePage"/></pages>  
如果我們將頁面home.htm不直接放在webRoot下,而是放在page/home.htm下,那么要想讓Click自己知道對應的類,則我們需要將click.xml文件修正為<pages package="com.quickstart"/>。以此類推如果是放在quickstart/page/home.htm下,則我們的click.xml文件只需要配置成<pages package="com"/>即可。如果不遵循該規(guī)則,則只能在click.xml配置文件中顯示聲明出來。
顯示結果如下:

圖3.1 home.htm 顯示結果
3.5框架模板
現(xiàn)在我們打算建立一個頁面框架模板,以便應用程序頁面有一個統(tǒng)一的風格。
首先在web根目錄下建立文件border-template.htm。 此文件包含如下內容。
<html>
<head>
<title>Click Quickstart - $title</title>
<link rel="stylesheet" type="text/css" href="$context/assets/style.css" title="Style"/>
</head>
<body>
  <div id="header">
    <span class="title">$title</span>
  </div>
  <div id="container">
    #parse($path)
  </div>
</body>
</html>
注:這里的$context就是網站根目錄
現(xiàn)在我們定義BorderPage 類, 并將border-template.htm 文件指定為他的模板。
package com.quickstart.page;
import net.sf.click.Page;
public class BorderPage extends Page {
   public String getTemplate() {
      return "border-template.htm";
   }
}
我們命名模板文件為border-template.htm , 以便它不會自動地被Click映射我們的BorderPage 類。我們修改HomePage 類, 使其繼承自BorderPage , 并定義一個title字段。
public class HomePage extends BorderPage {
    public String title = "Home";
}
修改home.htm, 將頁面borber去掉。 home.html內容如下:
<b>Welcome</b> to Home page your application starting point.
其他都加載模版border-template.htm上的。
修改后的web應用程序文件如下:

圖3.2 框架模版目錄
現(xiàn)在, 如果你將瀏覽器請求定位到更新后的頁面,你應該能夠看到和前面同樣的頁面。
3.6日志
Click有一些自帶的日志功能, 它們可以幫助你顯示頁面模板何時自動映射到頁面class。 可以在click.xml中添加debug模塊來激活debug日志。
<?xml version="1.0" encoding="UTF-8"?>
<click-app>
  <pages package="com.quickstart.page"/>
  <mode value="debug"/>
</click-app>
當click應用啟動的時候,它將打印如下日志信息:
[Click] [debug] automapped pages:
[Click] [debug] /border-template.htm -> CLASS NOT FOUND
[Click] [debug] /home.htm -> com.quickstart.page.HomePage
[Click] [info ] initialized in debug mode 
click告訴我們 border-template.htm 模板沒有映射到任何page類,但是home.htm 模板被映射到HomePage 類,我們還可以得出click正運行在debug模式下。當向我們的主頁發(fā)送一個請求時, 我們可以得到如下輸出:
[Click] [debug] GET http://localhost:8080/quickstart/home.htm
[Click] [info ] renderTemplate: /home.htm,border-template.htm - 46 ms
[Click] [info ] handleRequest:  /home.htm - 62 ms 
它告訴我們ClickServlet收到的http請求。然后我們看到繪制頁面home.htm和模板border-template.htm 用掉了41毫秒。最后,我們可以看到處理請求共用掉了62毫秒。如果你想獲得更多的debuging信息, 你可以將應用模式設置為trace?,F(xiàn)在, 我們向瀏覽器發(fā)送一個請求:
http://localhost:8080/quickstart/home.htm?user=malcolm&password=secret
我們可以看到請求參數(shù)被記錄下來,這對調試post方式提交的表單很有用處。
[Click] [debug] GET http://localhost:8080/quickstart/home.htm
[Click] [trace]    request param: password=secret
[Click] [trace]    request param: user=malcolm
[Click] [trace]    invoked: HomePage.<<init>>
[Click] [trace]    invoked: HomePage.onSecurityCheck() : true
[Click] [trace]    invoked: HomePage.onInit()
[Click] [trace]    invoked: HomePage.onGet()
[Click] [trace]    invoked: HomePage.onRender()
[Click] [info ]    renderTemplate: /user/home.htm,border-template.htm - 6 ms
[Click] [trace]    invoked: HomePage.onDestroy()
[Click] [info ]  handleRequest:  /home.htm - 24 ms 










4.Apache Click主要類介紹
4.1 Page類

圖4.1 Page類 類圖
所有的傳統(tǒng)頁面的映射類都是Page類的子類,Page類與Context類、Control類關系類圖如上圖所示。Page類主要為Velocity模版上生成的各類組件提供了一個模型,這個模型也包括提供給用戶接口控制組件的Control類。而Context類則提供了接收HttpServletRequest屬性、參數(shù)和HttpSesssion類的接口。
Page類主要有以下方法:
onSecurityCheck():用于檢測用戶是否足夠權限訪問該網站
onInit():頁面初始化,包括Control類組件等。
onGet():用于接收get動作
onPost():用于接收post動作
onRender():頁面渲染生成
onDestroy():銷毀

圖4.2 Page類順序圖

其中頁面生成這步,會添加以下信息到模型中:
context - the Servlet context path, e.g. /mycorp
format - the Format object for formatting the display of objects.
headElements - the HEAD elements, excluding JavaScript, to include in the page header.
jsElements - the JavaScript imports and script blocks to include in the pages footer.
messages - the MessagesMap adaptor for the Page getMessage() method
path - the path of the page template to render
request - the pages HttpServletRequest object
response - the pages HttpServletResponse object
session - the SessionMap adaptor for the users HttpSession


圖4.3 Page類活動圖
Page主要有涉及以下功能:
4.1.1請求參數(shù)自動綁定
請求路徑:http://localhost:8080/mycorp/customer-details.htm?customerId=7203對應的Page類:
package com.mycorp.page;
public class CustomerDetails extends Page {
@Bindable protected Integer customerId;
}
對應的頁面:
<html>
<body>
Customer ID: $customerId
</body>
</html>
結果顯示:
Customer ID: 7203
此外還有請求類型轉換自動綁定等功能。
4.1.2用戶權限檢查
public class Secure extends Page {
public boolean onSecurityCheck() {
if (getContext().hasSession()) { //是否有會話的Session
//if (getContext().getRequest().getRemoteUser() != null) { //客戶端用戶是否存在
//if (getContext().getRequest().isUserInRole("admin")) { //訪問客戶是否是admin級別
return true;
} else {
setRedirect(LoginPage.class);
return false;
}
}
}
4.1.3頁面導航
Forward跳轉:主要利用servlet 類RequestDispatcher,
用法:setForward("index.htm");
帶參數(shù)跳轉:getContext().setRequestAttribute("customer", customer);
setForward("view-customer.htm");
帶頁面跳轉:EditPage editPage = (EditPage) getContext().createPage("/edit-customer.htm");
       //EditPage editPage = (EditPage) getContext().createPage(EditPage.class);
editPage.setCustomer(customer);
setForward(editPage);
模版路徑:addModel("customer", customer);
setPath("view-customer.htm");
Redirect跳轉:setRedirect("/logout.htm");
String path = getContext().getPagePath(Logout.class);
setRedirect(path);
帶參數(shù)跳轉: setRedirect("trans-complete.htm?transId=" + transId);
接收:       String transId = getContext().getRequest().getParameter("transId");    
4.1.4.模版頁面
3.簡易入門程序已寫
4.1.5.錯誤處理:
在web.xml設置:
<page path="click/error.htm" classname="com.mycorp.page.ErrorPage"/>
注:其中click/error.htm頁面在網站部署后自動生成,同時該文件夾還包括常用的頁面和Css.
出現(xiàn)的錯誤主要是以下兩類:
NullPointerException - in a page method
ParseErrorException - in a page template
4.1.6 信息資源文件
類似于struts中資源文件。比如說有個Page類/com/mycorp/page /Login,對應的properties文件名對應為:/com/mycorp/page/Login.properties。信息屬性文件設計的方法主要有:
getMessage(String)
getMessage(String, Object)
getMessage(String, Object[])
getMessages()
setErrorMessage(String)
setErrorMessage(String, Object)
4.2.Control類

圖4.4 Control類順序圖

圖4.5Control接口類圖
Control類主要方法:
getHeadElements() - defines the controls HTML header imports.
getMessages() - defines the controls localized messages map.
getName() / setName() - defines the controls name in the Page model or Form fields.
getParent() / setParent() - defines the controls parent.
onDeploy() - deploy resources on startup.
onInit() - on initialize event handler.
onProcess() - process request event handler.
onDestroy() - on destroy event handler.
render() - generate the control's HTML representation.
4.2.1 Control回饋:
主要有兩種方法:ActionListener interface  setListener(Object, String) method
4.2.2 Control類集:

圖4.6 Control類集
ActionLink - provides an anchor link which can invoke callback listeners.
Field - provides the abstract form field control.
Form - provides a form control for processing, validation and rendering.
Submit - provides an input type submit control which can invoke callback listeners.
TextField - provides an input type text control which can invoke callback listeners.
4.2.3 Control類的頭部組件
Control類利用getHeadElements() 方法獲得Page HEAD elements。如JsImport, JsScript, CssImport 和CssStyle.
4.2.4 Container類
Form - an HTML form which provides default layout of fields and error feedback.
Panel - similar to Page, this Container provides its own template and model.
FieldSet - draws a legend (border) around its child Controls.

圖4.7 Container類圖
主要涉及的抽象類有:
AbstractContainer
AbstractContainerField
5.配置
WEB-INF/ click.xml [51] - Application Configuration ( required)
WEB-INF/ web.xml [50] - Servlet Configuration ( required)

5.1 Servlet Configuration:Servlet設置
web.xml:
<web-app>
<servlet>
<servlet-name>ClickServlet</servlet-name>
<servlet-class>org.apache.click.ClickServlet</servlet-class>
<load-on-startup>0</load-on-startup>
<init-param>
<param-name>type-converter-class</param-name>
<param-value>com.mycorp.util.CustomTypeConverter</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>ClickServlet</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
</web-app>
注:Load On Startup:啟動優(yōu)先權
Type Converter Class:類型轉換類

5.2 Config Service Class:服務類設置
<context-param>
<param-name>config-service-class</param-name>
<param-value>com.mycorp.service.CustomConfigSerivce</param-value>
</context-param>
5.3 Application Configuration:應用設置
<pages package="com.mycorp.page"/>
<mode value="profile"/>
高級設置:
<click-app charset="UTF-8" locale="de">
<!-- Specify the Java package where Page classes can be found -->
<pages package="com.mycorp.banking.page">
<page path="index.htm" classname="Home"/>
</pages>
<!-- Specify a second Java package where Page classes can be found -->
<pages package="com.mycorp.common.page"/>
<format classname="com.mycorp.util.Format"/>
<mode value="profile"/>
<log-service classname="org.apache.click.extras.service.Log4JLogService"/>
</click-app>
5.4 Page:頁面設置
1.將自動映射automapping設為false后,要手動指定。
<click-app>
<pages package="com.mycorp.page" automapping="false">
<page path="index.htm" classname="Home"/>
<page path="search.htm" classname="Search"/>
<page path="contacts/contacts.htm" classname="contacts.Contacts"/>
<page path="security/login.htm" classname="security.Login"/>
<page path="security/logout.htm" classname="security.Logout"/>
<page path="security/change-password.htm" classname="security.ChangePassword"/>
</pages>
</click-app>
2.automapping默認設置為true后,名稱不對應的要手動指定。
<click-app>
<pages package="com.mycorp.page" automapping="true">
<page path="index.htm" classname="Home"/>
</pages>
</click-app>
3.自動綁定autobinding設置為false后,Page類中的Control類不會自動綁定到頁面中。
<pages package="com.mycorp.page" autobinding="false"/>
4.autoloading:自動載入,可以實現(xiàn)不用重啟服務器也更新頁面。
5.5 Headers:頁頭設置
<headers>
<header name="Pragma" value="no-cache"/>
<header name="Cache-Control"
value="no-store, no-cache, must-revalidate, post-check=0, pre-check=0"/>
<header name="Expires" value="1" type="Date"/>
</headers>
5.6 Mode:模式設置

圖 5.1 Mode模式比較
5.7 Auto Deployed Files:自動部署的文件
click/error.htm - the Page Error Handling [30] template
click/control.css - the Controls cascading stylesheet
click/control.js - the Controls JavaScript library
click/not-found.htm - the Page Not Found [31] template
6.與其他框架集成
6.1與struts2集成
6.1.1 web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns=http://java.sun.com/xml/ns/j2ee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
   <display-name>click</display-name>
<filter>
  <filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>

<filter-mapping>
  <filter-name>struts2</filter-name>
  <url-pattern>*.action</url-pattern>
</filter-mapping>

<servlet>
<servlet-name>click-servlet</servlet-name>
<servlet-class> org.apache.click.ClickServlet </servlet-class>
  <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
  <servlet-name>click-servlet</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>

<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>
6.1.2 click.xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<click-app charset="UTF-8">

<pages package="demo.page" autobinding="true"></pages>
<mode value="development" />
</click-app>
6.1.3 struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>

<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.devMode" value="false" /> 

<package name="struts2.action" extends="struts-default">
  <action name="HelloWorld" class="struts2.action.HelloWorld">
   <result>HelloWorld.jsp</result>
  </action>
   </package>
</struts>
6.2與Spring集成
Web.xml:
<servlet>
        <servlet-name>click-servlet</servlet-name>
        <servlet-class> org.apache.click.ClickServlet </servlet-class>
        <init-param>
            <param-name>spring-path</param-name>
            <param-value>/applicationContext.xml</param-value>
        </init-param>
        <load-on-startup>0</load-on-startup>
    </servlet>
7.Apache Click應該注意的幾個方面
7.1 Click中文顯示問題。
Click顯示中文時候,按默認的配置會顯示亂碼,你可以在click.xml中配置編碼:
<click-app charset="UTF-8">
<pages package="page" automapping="true">
</pages>
<headers>
   <header name="Content-Type" value="text/html;charset= UTF-8"/>
</headers>
<mode value="debug">
</mode>
</click-app>
推薦使用萬國碼UTF-8,記住workspace的編碼也相應設置為UTF-8.同時可以載模版資源文件velocity.properties設置:
input.encoding= UTF-8
注意編碼要統(tǒng)一,如果用UTF-8就要全部配置為UTF-8。
7.2 在Click中使用FCKEditor控件。
FCKEditor控件的JAVA版本可以有三種使用方式,在Click中大約只能是JAVASCRIPT方式。至于FCKEditor的具體配置方式請參考網上資料。
在Click中使用時候首先需要在Page類中申明一個TextArea控件。
7.3 使用Click的頁面權限驗證:
Click的整個Page周期中有個onSecurityCheck()事件,你可以通過重寫這個函數(shù)定義你的權限驗證,如:
public boolean onSecurityCheck() {
         if (getContext().getSessionAttribute("user")!=null) {
             return true;
         }else{
             setRedirect(Login.class);
             return false;
         }
     }
7.4 @Bindable屬性
在開發(fā)過程中,根據(jù)文檔所給的@Bindable protected 來設置屬性,在前臺如果采用$+屬性名無法讀取。因此最好改為@Bindable public.
7.5 頁面命名
網頁名稱與Page類名稱對應問題,有些網頁名稱過長或者單詞不規(guī)范的,建議中間都采用“-”來給隔離,同時在logger事件中觀察是否頁面和Page已經配對,實在不行的可以進行手動配對。
7.6 Mock
涉及到mock生成div標簽時,記得加入click-mock-2.1.0.jar,可以看到雖然說可以在java類中進行頁面布局,但是并不直觀。
8.Apache Click框架優(yōu)缺點
8.1優(yōu)點
(1)Click是基于事務編程的思想,與Struts、Spring、Tapestry等泛濫使用XML相比,采用java文件編譯的速度要快得多。
(2)click包含40種左右的控件, 這些控件對應了大部分主要的HMTL元素。 click表單和控件提供了自動驗證和頁面呈現(xiàn),使程序開發(fā)變得更加快速和健壯。
(3)Click 使用Velocity引擎來呈現(xiàn)HTML。 Velocity有一組非常容易學習和使用的簡單指令集。
(4)簡單易學:click被設計的很簡單以便于學習, 新開發(fā)者在一天內就可上手并運行出來。 這對技術層次跨度很大的開發(fā)團隊是非常關鍵的。文檔齊全,而且例子很多,容易上手。
8.2 缺點
(1)作為一門流行度不廣的框架,其成熟度無法與struts、webwork等相比,因此在遇到問題時難以有參考;
(2)雖然說利用Page類來render頁面的思想很大程度上提高了網頁生成的速度,但是這讓網頁設計變得更不直觀。
()與現(xiàn)有的框架吻合度并不是很好。

附:Velocity簡介
Velocity是一個基于java的模板引擎(template engine)。它允許任何人僅僅簡單的使用模板語言(template language)來引用由java代碼定義的對象。當Velocity應用于web開發(fā)時,界面設計人員可以和java程序開發(fā)人員同步開發(fā)一個遵循MVC架構的web站點,也就是說,頁面設計人員可以只關注頁面的顯示效果,而由java程序開發(fā)人員關注業(yè)務邏輯編碼。Velocity將java代碼從web頁面中分離出來,這樣為web站點的長期維護提供了便利,同時也為我們在JSP和PHP之外又提供了一種可選的方案。
Velocity的能力遠不止web站點開發(fā)這個領域,例如,它可以從模板(template)產生SQL和PostScript、XML,它也可以被當作一個獨立工具來產生源代碼和報告,或者作為其他系統(tǒng)的集成組件使用。Velocity也可以為Turbine web開發(fā)架構提供模板服務(template service)。Velocity+Turbine提供一個模板服務的方式允許一個web應用以一個真正的MVC模型進行開發(fā)。
本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Apache java項目全介紹
SSH實現(xiàn)的增刪改查實例
tomcat的web.xml設置問題:<servlet-name>Action</servlet-name><url-pattern>*.do的含義
Struts教程
Velocity初體驗
struts2 報錯:freemarker.log.JDK14LoggerFactory$JDK14Logger error
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服