`
erikchang
  • 浏览: 50644 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

Ext Without JS系列教程---构建登陆面板

    博客分类:
  • java
阅读更多

Ext是一个非常优秀的js框架,使用Ext能够构建非常漂亮的应用程序,但是由于Ext完全使用js代码书写,js的灵活性和复杂性导致了不少人对Ext望尘莫及,EasyJWeb1.1版开始集成Ext框架,使用easyjweb完全面向对象的构建Ext程序,本教程将连载使用easyjweb构建Ext程序。
      本节我们将使用easyjweb构建一个登陆面板,最终效果如下:
   
                              图1-1  登陆面板
   
                           图1-2 正在登陆...
 这个效果还是不错的吧,如果使用js来书写这个面板有一定的难度,使用easyjweb书写只需要几行代码,甚至不需要任何页面文件即可合成这样漂亮的页面。
 easyjweb1.1版可以使用easyjweb.bat  projectName ext这样的命令生成一个ext应用程序,笔者不喜欢使用命令行生成,还是自动动手吧!
首先新建一个工程,这里使用Eclipse,添加相应的jar文件到classpath中(可以直接从easyjweb源码中拷贝所有的包),编写web.xml,代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app 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_5.xsd"
    metadata-complete
="false" version="2.5">

    
<!--定义EasyJWeb的主控Servlet  -->
    
<servlet>
        
<servlet-name>国产开源框架</servlet-name>
        
<servlet-class>com.easyjf.web.ActionServlet</servlet-class>
        
<load-on-startup>1</load-on-startup>
    
</servlet>
    
<servlet-mapping>
        
<servlet-name>国产开源框架</servlet-name>
        
<url-pattern>*.ejf</url-pattern><!--所有.ejf的扩展名都由easyjweb来处理-->
    
</servlet-mapping>


    
<!-- 定义字符处理Filter -->
    
<filter>
        
<filter-name>CharsetFilter</filter-name>
        
<filter-class>com.easyjf.web.CharsetFilter</filter-class>
        
<init-param>
            
<param-name>encoding</param-name>
            
<param-value>UTF-8</param-value>
        
</init-param>
        
<init-param>
            
<param-name>ignore</param-name>
            
<param-value>true</param-value>
        
</init-param>
    
</filter>
    
<filter-mapping>
        
<filter-name>CharsetFilter</filter-name>
        
<servlet-name>国产开源框架</servlet-name>
    
</filter-mapping>


</web-app>

关于web.xml这里不介绍了。

编写easyjweb默认的配置文件easyjf-web.xml,代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<国产开源框架-web xmlns="http://www.easyjf.com/schema/easyjf/web"
    xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation
="http://www.easyjf.com/schema/easyjf/web http://www.easyjf.com/schema/easyjf/web/easyjf-web-0.0.1.xsd ">
    
<framework-setting>
        
<property name="com.easyjweb.debug">false</property><!--调试模式,每次加载都会重新初始化EasyJWeb-->
        
<property name="com.easyjweb.maxUploadFileSize">51200</property><!--最大上传文件为51200kb-->
        
<property name="com.easyjweb.uploadSizeThreshold">512</property><!--上传文件缓存值-->
    
</framework-setting>
    
<import resource="mvc.xml" />
</国产开源框架-web>

为了显示代码的层次和清晰,我们在easyjf-web.xml中只有一些简单的配置,关于easyjweb具体配置在mvc.xml中进行定义,这里只需要import recource="mvc.xml"即可,这里支持多个导入。
 编写mvc.xml,代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<国产开源框架-web xmlns="http://www.easyjf.com/schema/easyjf/web"
    xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation
="http://www.easyjf.com/schema/easyjf/web http://www.easyjf.com/schema/easyjf/web/easyjf-web-0.0.1.xsd ">
    
<framework-setting>
        
<property name="com.easyjweb.debug">false</property><!--调试模式,每次加载都会重新初始化EasyJWeb-->
        
<property name="com.easyjweb.maxUploadFileSize">51200</property><!--最大上传文件为51200kb-->
        
<property name="com.easyjweb.uploadSizeThreshold">512</property><!--上传文件缓存值-->
        
<!-- <property name="com.easyjweb.propertiesType">xml</property> -->
        
<property name="com.easyjweb.defaultActionPackages">
            com.easyjf.ext.action
        
</property><!--设置自加Action扫描的路径,根据你的情况调整-->
    
</framework-setting>
    
<beans>
        
<!--异常处理Bean,把所有的异常控制都转到error.html这个页面-->
        
<bean name="exceptionHandler"
            class
="com.easyjf.web.exception.DefaultExceptionHandle"
            scope
="singleton">
            
<!--    <property name="errorPage" value="/error.html"/>-->
        
</bean>
        
<!-- 重复提交时的处理Bean -->
        
<bean name="tokenExceptionHandler"
            class
="com.easyjf.web.exception.DefaultTokenVaildExceptionHandler"
            scope
="singleton">
        
</bean>
        
<!--acegi异常处理器,使得acegi的相关异常可以得到正确的处理-->
        
<bean name="acegiException"
            class
="com.easyjf.web.security.acegi.AcegiExceptionHandler" />
    
</beans>
</国产开源框架-web>

mvc.xml中配置了默认action包为 com.easyjf.ext.action,这样就不需要给每个action配置一个moudle了,比如请求为manage.ejf,那么系统自动回到默认包 com.easyjf.ext.action下查找名为ManageAction的类处理该请求
编写ManageAction,代码如下:

   package com.easyjf.ext.action;
import com.easyjf.web.components.Button;
import com.easyjf.web.components.Function;
import com.easyjf.web.components.RichComponentAction;
import com.easyjf.web.components.Window;
import com.easyjf.web.components.form.ActionFunction;
import com.easyjf.web.components.form.Form;
import com.easyjf.web.components.form.FormAction;
import com.easyjf.web.components.form.TextField;

public class ManageAction extends RichComponentAction ...{
    
public void doLogin() ...{
        Window win 
= new Window("win1""登陆系统"265140);//新直接使用win1建一个window,win1为名称,后面可以之际使用win1来应用该window
        win.setClosable(
false);//设置该window关闭按钮不可用
        Form f 
= new Form("fp");//新建一个form
        f.setLabelAlign(
"right");//设置form的标签对齐为右对齐
        f.setLabelWidth(
55);//设置form的标签宽度为55px
        f.set(
"bodyStyle""padding-top:6px");//设置form的bodystyle属性为paddint-top:6px
        f.set(
"frame"true);//设置form为frame
        f.getDefaults().put(
"width"158);
        TextField tf1 
= new TextField("userName""帐号");//新建一个TextField对象,相当于网页中input
        tf1.set(
"cls""user");
        TextField tf2 
= new TextField("password""密码");
        tf2.setInputType(
"password");
        tf2.set(
"cls""key");
        f.add(tf1, tf2);//添加2个TextField到form
        win.add(f);//添加form到window
        Function success 
= new ActionFunction(
                
"window.location.href = 'manage.ejf';");//新建一个函数,这里为登陆成功后的导向为:manage.ejf
        Function failure 
= new ActionFunction(
                
"form.reset();if(action.failureType == Ext.form.Action.SERVER_INVALID)Ext.MessageBox.alert('警告',action.result.errors.msg);");//新建登陆错误提示函数
        FormAction action 
= new FormAction("loginAction",
                
"portal.ejf?cmd=adminLogin", success, failure);//新建FormAction,命名为loginAction,登陆成功后执行success函数,失败执行failure函数
        action.setWaitMsg(
"正在登陆,请稍后...");//设置登陆时候的提示
        Button b 
= new Button("登陆"new Function(
                
"var fp=Ext.getCmp('fp');fp.form.submit(loginAction);")
);//新建一个按钮,点击该按钮的时候执行后面的函数new Function( "var fp=Ext.getCmp('fp');fp.form.submit(loginAction);"),这里就是一个页面中的js函数
        Button b2 
= new Button("重置"new Function(
                
"var fp=Ext.getCmp('fp');fp.form.reset();"));
        win.addButtons(b, b2);//添加按钮到window
        win.show();//显示window
        
this.addComponents(action, win);//添加FormAction和Window
        this.componentPage();//返回easyjweb定义的页面,如果没有这一句就返回用户自己的页面,这里将返回views/manage/login.html
    }

}

这样一个完全面向对象的java方法就会自动生成一个登陆页面,启动tomcat,输入http://yourhost:port/manage.ejf?cmd=login就可以看到前面的页面了,这个项目结构如下:

这里要注意的是要给ext源代码拷贝到项目下,并且目录为:plugins/extjs/ext-2.0,是不是有点心动了,那就赶紧试一试吧!
 

分享到:
评论
3 楼 flhs 2008-02-28  
说实话 我对这段代码不感冒 本来EXT的代码在可读性上挺不好的 正考虑如何把它简化呢
再把他搞到Action上,结构更不清晰,美工也不知道干啥.
2 楼 stworthy 2008-02-28  
这段代码如果用纯JS编写会更清昕,对于更复杂的布局,如果使用EASYJWEB编写代码会更凌乱,这种封装不见得有什么优势。个人意见。
1 楼 maoweiwer 2008-02-28  
呀。。easyjweb又出1。1版本了呀。我晕。速度这么快。

相关推荐

    Ext-JS-4.1-Beta-3.zip

    Ext JS 是一个强大的JavaScript库,专门用于构建富客户端应用程序。版本4.1是该库的一个重要迭代,引入了新功能和改进,以提升用户体验和开发效率。"Ext-JS-4.1-Beta-3.zip"是这个版本的beta 3版本的压缩包,包含了...

    前端开源库-style-ext-html-webpack-plugin

    接下来,在Webpack配置文件(通常是`webpack.config.js`)中引入并配置该插件: ```javascript const StyleExtHtmlWebpackPlugin = require('style-ext-html-webpack-plugin'); module.exports = { // 其他配置.....

    ext-ms-win-gdi-desktop-l1-1-0.dll

    ext-ms-win-gdi-desktop-l1-1-0.dll 用于解决这个dll文件丢失问题,下载后将此文件放置在相关文件根目录下,即可解决丢失问题

    ext-2.0 ext-2.0 ext-2.0 ext-2.0 ext-2.0

    ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0ext-2.0

    Ext入门-详细教程

    Ext入门-详细教程Ext入门-详细教程Ext入门-详细教程Ext入门-详细教程Ext入门-详细教程Ext入门-详细教程Ext入门-详细教程Ext入门-详细教程Ext入门-详细教程Ext入门-详细教程Ext入门-详细教程Ext入门-详细教程Ext入门-...

    ext4magic-0.3.2-3.10.x86_64.rpm

    ext4magic-0.3.2-3.10.x86_64.rpm

    bcprov-ext-jdk15on-160.jar

    1.下载 bcprov-ext-jdk15on-160.jar,复制到jdk_home\jre\lib\ext 2.配置bcprov,在 jdk_home\jre\lib\security\目录中找到 java.security 在内容增加一行 security.provider.11=org.bouncycastle.jce.provider....

    bcprov-ext-jdk15on-1.52和bcprov-jdk15on-1.52

    标题中的"bcprov-ext-jdk15on-1.52"和"bcprov-jdk15on-1.52"是两个不同版本的Java软件包,它们都是由The Legion of the Bouncy Castle(Bouncy Castle)组织提供的加密库。Bouncy Castle是一个广泛使用的开源Java...

    bcprov-jdk15on-1.54.jarr和bcprov-ext-jdk15on-1.54.jar和教程.rar

    bcprov-jdk15on-1.54.jarr和bcprov-ext-jdk15on-1.54.jar和教程 win10 64位 java1.8连接SQL Server2008报错 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接

    bcprov-ext-jdk15on-152和bcprov-jdk15on-152

    "bcprov-jdk15on"系列是面向JDK 1.5及更高版本的,"ext"后缀表示这是扩展版,包含更多加密算法。 在压缩包子文件的文件名称列表中,我们有两个档案:"bcprov-jdk15on-152.jar"和"bcprov-ext-jdk15on-152.jar"。这些...

    Ext-JS-3-Cookbook源码

    《Ext-JS-3-Cookbook源码》是关于Ext JS 3.x版本的一个实践教程,其中包含了完整的源代码示例。这个压缩包文件提供了丰富的代码资源,旨在帮助开发者深入理解并掌握Ext JS 3的核心功能和应用技巧。 Ext JS是一个...

    bcprov-ext-jdk15on-1.52.jar和bcprov-jdk15on-1.52.jar

    标题中的"bcprov-ext-jdk15on-1.52.jar"和"bcprov-jdk15on-1.52.jar"是两个与Java相关的库文件,它们都属于Bouncy Castle加密库的不同版本。Bouncy Castle是一个开源的Java安全套件,提供广泛的安全服务,包括加密、...

    bcprov-jdk15on-1.52.jar、bcprov-ext-jdk15on-1.52.jar

    标题中的"bcprov-jdk15on-1.52.jar"和"bcprov-ext-jdk15on-1.52.jar"是两个Java Archive (JAR) 文件,它们属于Bouncy Castle加密库的不同版本。Bouncy Castle是一个广泛使用的开源Java安全套件,提供了大量的加密...

    bcprov-ext-jdk15on-1.68.jar

    bcprov-ext-jdk15on-1.68.jar

    bcprov-ext-jdk15on-1.54.jar,bcprov-jdk15on-1.54.jar

    导入方式通常是在项目的类路径中添加这两个jar包,或者在Maven或Gradle构建文件中声明依赖。对于Maven,可以在pom.xml文件中添加如下依赖: ```xml &lt;groupId&gt;org.bouncycastle &lt;artifactId&gt;bcprov-jdk15on ...

    3------通过实例学习------Ext.js------.pdf

    Ext.js 是一个强大的JavaScript库,主要用于构建富客户端的Web应用程序。它的主要特点是提供了一套完整的组件模型、数据绑定机制和丰富的用户界面控件。在深入理解Ext.js之前,我们需要了解其基本结构和如何引入到...

    bcprov-ext-jdk15on-164.jar

    bcprov-ext-jdk15on-164.jar:支持java5-11。将jar包放置在%java_home%/jre/lib/ext目录。

    bcprov-ext-jdk15on-154和bcprov-jdk15on-154下载

    bcprov-ext-jdk15on-154和bcprov-jdk15on-154下载,可以用于处理jdk6的javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure ,详情参考...

    bcprov-jdk15on-1.54.jar bcprov-ext-jdk15on-1.54.jar下载

    2.将下载的两个JAR文件复制到:JDK安装目录\jre\lib\ext下,例如我的就是D:\Program Files (x86)\java\JDK1.6\jre\lib\ext 3.打开java.security文件:在JDK安装目录\jre\lib\security下的java.security文件。

    3------通过实例学习------Ext.js------.docx

    Ext.js 是一个强大的JavaScript库,专门用于构建富客户端的Web应用程序。通过实例学习Ext.js,我们可以深入了解其核心组件、布局管理、数据绑定以及用户界面构建等关键知识点。 首先,让我们看一下解压后的Ext.js...

Global site tag (gtag.js) - Google Analytics