29. ExtJs - Struts2 整合(1) - 登录页面

转自:https://yarafa.iteye.com/blog/729197

初学 ExtJS,在此记录下学习过程中的点点滴滴,以备不时只需,也希望能给跟我一样的菜鸟一些帮助,老鸟请忽略。如有不当之处,欢迎指正。

开发环境:

MyEclipse 6.5

Struts 2.1.8

ExtJs 3.0

 

1. 准备工作

首先需要配置 Struts2 和 ExtJS,具体操作这里不再多说。

 

2. 登录页面

 1 <%@ page language="java" pageEncoding="UTF-8"%>
 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 3 <html xmlns="http://www.w3.org/1999/xhtml">
 4     <head>
 5         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 6         <title>login Page Test-2</title>
 7 
 8         <!-- 引入ExtJS所需文件-->
 9         <link rel="stylesheet" type="text/css" href="js/extjs/resources/css/ext-all.css" />
10         <script type="text/javascript" src="js/extjs/adapter/ext/ext-base.js"></script>
11         <script type="text/javascript" src="js/extjs/ext-all.js"></script>
12         <script type="text/javascript">
13             var loginForm;
14             Ext.onReady(function() {
15                 Ext.BLANK_IMAGE_URL = 'js/extjs/resources/images/default/s.gif';
16                 Ext.QuickTips.init();
17     
18                 // 定义一个 FormPanel 对象
19                 loginForm = new Ext.FormPanel({
20                     width: 400,
21                     frame: true,
22                     renderTo: "loginForm",
23                     title: "登录",
24                     method: "POST",
25                     monitorValid: true, // 该属性表示表单在通过验证之前提交按钮无效
26                     labelWidth: 50, // 标签宽度
27                     labelAlign: "left", // 标签的对齐方式
28                     labelPad: 0, // 标签与输入框的间隔
29                     buttonAlign: 'center', // 底部按钮居中对齐
30                     
31                     items: [
32                         {
33                             xtype: "textfield",
34                             fieldLabel: "用户名",
35                             allowBlank: false, // 是否允许为空, 默认为 true
36                             blankText: "用户名不能为空", // 显示错误提示信息
37                             name: "user.username", // name 属性应与 Struts2 Action 中的属性保持一致
38                             id: "username",
39                             width: 300
40                         },
41                         {
42                             xtype: "textfield",
43                             inputType: "password",
44                             fieldLabel: "密&nbsp;&nbsp;&nbsp;码",
45                             allowBlank: false,
46                             blankText: "密码不能为空",
47                             name: "user.password",
48                             id: "password",
49                             width: 300
50                         }
51                     ],
52                     buttons: [
53                         {
54                             text: "登&nbsp;录",
55                             formBind: true,
56                             handler: doLogin
57                         },
58                         {
59                             text: "重&nbsp;置",
60                             handler: doReset
61                         }
62                     ],
63                     keys: [
64                         {
65                             key: [10, 13],
66                             fn: doLogin
67                         }
68                     ],
69                     
70                     // 表单不使用AJAX方式提交
71                     onSubmit: Ext.emptyFn,
72                     submit: function() {
73                         this.getEl().dom.action = "login.action";
74                         this.getEl().dom.submit();
75                     }
76                 });
77             });
78             
79             // 登录
80             function doLogin() {
81                 if(loginForm.form.isValid()) {
82                     loginForm.form.submit();
83                 }
84             }
85             
86             // 重置
87             function doReset() {
88                 loginForm.form.reset();
89             }
90         </script>
91     </head>
92 
93     <body>
94         <div id="loginForm" style="margin: 100px">
95         </div>
96     </body>
97 </html>

 

页面效果如下图所示:

 

3. Java 类编辑

3.1 User 类

 1 /***********************************************************************
 2  * <p>Project Name: extjs</p>
 3  * <p>File Name: com.thu.afa.extjs.bean.User.java</p>
 4  * <p>Copyright: Copyright (c) 2010</p>
 5  * <p>Company: <a href="http://afa.thu.com">http://afa.thu.com</a></p>
 6  ***********************************************************************/
 7 package com.thu.afa.extjs.bean;
 8 
 9 import java.io.Serializable;
10 
11 /**
12  * <p>Class Name: User</p>
13  * <p>Description: </p>
14  * @author Afa
15  * @date Aug 4, 2010
16  * @version 1.0
17  */
18 public class User implements Serializable
19 {
20     private static final long serialVersionUID = 2851358330179740778L;
21     
22     private String username;
23     private String password;
24     public String getUsername()
25     {
26         return username;
27     }
28     public void setUsername(String username)
29     {
30         this.username = username;
31     }
32     public String getPassword()
33     {
34         return password;
35     }
36     public void setPassword(String password)
37     {
38         this.password = password;
39     }
40 }

3.2 Action 类

 1 /***********************************************************************
 2  * <p>Project Name: extjs</p>
 3  * <p>File Name: com.thu.afa.extjs.action.UserAction.java</p>
 4  * <p>Copyright: Copyright (c) 2010</p>
 5  * <p>Company: <a href="http://afa.thu.com">http://afa.thu.com</a></p>
 6  ***********************************************************************/
 7 package com.thu.afa.extjs.action;
 8 
 9 import com.opensymphony.xwork2.ActionSupport;
10 import com.thu.afa.extjs.bean.User;
11 
12 /**
13  * <p>Class Name: UserAction</p>
14  * <p>Description: </p>
15  * @author Afa
16  * @date Aug 4, 2010
17  * @version 1.0
18  */
19 public class UserAction extends ActionSupport
20 {
21     private static final long serialVersionUID = 3093253656888703000L;
22     
23     private User user;
24     
25     public User getUser()
26     {
27         return user;
28     }
29 
30     public void setUser(User user)
31     {
32         this.user = user;
33     }
34 
35     @Override
36     public String execute() throws Exception
37     {
38         return ("test".equals(user.getUsername()) && "test".equals(user.getPassword())) ? SUCCESS : INPUT;
39     }
40 }

4. 配置文件 struts.xml

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE struts PUBLIC
 3     "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
 4     "http://struts.apache.org/dtds/struts-2.1.7.dtd">
 5 <struts>
 6     <package name="com.thu.afa.extjs" extends="struts-default">
 7         <action name="login" class="com.thu.afa.extjs.action.UserAction">
 8             <result name="success">/result.jsp</result>
 9             <result name="input">/login.jsp</result>
10         </action>
11     </package>
12 </struts>

 

5. 部署运行

开发过程完成,部署运行即可。

 

6. 注意事项

6.1 表单元素的 name 属性

Html代码  收藏代码
  1. name: "user.username", // name 属性应与 Struts2 Action 中的属性保持一致  

 

6.2 表单的提交地址

Html代码  收藏代码
    1. this.getEl().dom.action = "login.action"; 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/393981.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

leetcode690. 员工的重要性(bfs)

给定一个保存员工信息的数据结构&#xff0c;它包含了员工唯一的id&#xff0c;重要度 和 直系下属的id。 比如&#xff0c;员工1是员工2的领导&#xff0c;员工2是员工3的领导。他们相应的重要度为15, 10, 5。那么员工1的数据结构是[1, 15, [2]]&#xff0c;员工2的数据结构是…

如何使用Webpack 4简化React.js开发过程

by Margarita Obraztsova玛格丽塔(Margarita Obraztsova) 如何使用Webpack 4简化React.js开发过程 (How to streamline your React.js development process using Webpack 4) In the real world of development, we have to add new features very quickly. In this tutorial,…

HDU - 3247 Resource Archiver (AC自动机,状压dp)

\(\quad\)Great! Your new software is almost finished! The only thing left to do is archiving all your n resource files into a big one.\(\quad\)Wait a minute… you realized that it isn’t as easy as you thought. Think about the virus killers. They’ll find …

space index.php 7-14,disk_free_space()

disk_free_space()(PHP 4 > 4.1.0, PHP 5, PHP 7)返回目录中的可用空间说明disk_free_space(string$directory):float给出一个包含有一个目录的字符串&#xff0c;本函数将根据相应的文件系统或磁盘分区返回可用的字节数。参数$directory文件系统目录或者磁盘分区。Note:如果…

云专网和云专线的区别_企业更适合互联网专线还是云专线联网?

随着云计算、移动应用及全球化的发展&#xff0c;纵横企业专网20年的MPLS专线弊端逐渐暴露&#xff0c;MPLS专线越来越难以满足企业的业务发展需求&#xff0c;而云计算、SaaS及移动应用具有天然的互联网属性。为什么“互联网”可以取代专线?互联网的持续发展&#xff0c;为取…

composer安装thinkphp

https://getcomposer.org/Composer-Setup.exe 正常安装composer以后,执行composer create-project topthink/thinkphp myapp安装thinkphp.转载于:https://www.cnblogs.com/lijurui/p/6362012.html

wordpress 插件_如何为您的Web应用程序创建WordPress插件

wordpress 插件by Feedier by Alkalab由Feedier通过Alkalab 如何为您的Web应用程序创建WordPress插件 (How to create a WordPress plugin for your web app) Today, we are going to see how to create a very simple WordPress plugin for any web app that needs to insert…

Android 软键盘相关问题

1. windowSoftInputMode属性的使用 Android使用windowSoftInputMode来控制Activity 的主窗口与包含屏幕软键盘的窗口的交互方式。 该属性的设置影响两个方面&#xff1a; 当 Activity 成为用户注意的焦点时软键盘的状态 — 隐藏还是可见。对 Activity 主窗口所做的调整 — 是否…

git php框架,如何用Git安装TP框架

本篇文章主要给大家介绍如何用Git安装Thinkphp框架。关于TP框架的安装&#xff0c;想必大家都知道较为常见的方式是通过composer安装tp框架。首先简单的给大家介绍下Git和TP框架。Git是一个开源的分布式版本控制系统&#xff0c;可以快速&#xff0c;高效地处理从小型到大型项目…

C#EF中,使用类似于SQL中的% 模糊查询

最近在做项目的时候需要使用到模糊查询,但是后台使用EF写的 而不是ADO或者是Dapper,如果是这样的话,我们就可以使用Sql语句直接进行模糊查询 现在我们需要在LINQ中使用类似于模糊查询 在EF中有两个方法:StartsWith()和EndWith() StartsWith(): 在转到定义时 我们可以看见,这个方…

android toast居中显示_Android Toast 设置到屏幕中间,自定义Toast的实现方法,及其说明...

Android Toast用于在手机屏幕上向用户显示一条信息&#xff0c;一段时间后信息会自动消失。信息可以是简单的文本&#xff0c;也可以是复杂的图片及其他内容(显示一个view)。1.简单用法Toast.makeText(midlet.getApplicationContext(), "用户名不能为空", Toast.LENG…

leetcode103. 二叉树的锯齿形层次遍历(bfs)

给定一个二叉树&#xff0c;返回其节点值的锯齿形层次遍历。&#xff08;即先从左往右&#xff0c;再从右往左进行下一层遍历&#xff0c;以此类推&#xff0c;层与层之间交替进行&#xff09;。例如&#xff1a; 给定二叉树 [3,9,20,null,null,15,7],3/ \9 20/ \15 7 返回…

LintCode Find the Weak Connected Component in the Directed Graph

原题链接在这里&#xff1a;http://www.lintcode.com/en/problem/find-the-weak-connected-component-in-the-directed-graph/ 题目&#xff1a; Find the number Weak Connected Component in the directed graph. Each node in the graph contains a label and a list of its…

简单了解tengine

Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上&#xff0c;针对大访问量网站的需求&#xff0c;添加了很多高级功能和特性。最终目标是打造一个高效、稳定、安全、易用的Web平台。1、基本的HTTP服务器特性1.处理静态文件&#xff0c;索引文件以及自动索引&#xff…

服务器创建多个dhcp服务_如何在15分钟内创建无服务器服务

服务器创建多个dhcp服务by Charlee Li通过李李 如何在15分钟内创建无服务器服务 (How to create a serverless service in 15 minutes) The word “serverless” has been popular for quite a while. When Amazon released the AWS Lambda service in 2015, many tools emerg…

php snoopy视频教程,php的Snoopy类

用了两天这个类&#xff0c;发现很好用。获取请求网页里面的所有链接&#xff0c;直接使用fetchlinks就可以&#xff0c;获取所有文本信息使用fetchtext(其内部还是使用正则表达式在进行处理)&#xff0c;还有其它较多的功能&#xff0c;如模拟提交表单等。使用方法&#xff1a…

网页解析 css

网页解析 css转载于:https://www.cnblogs.com/guozepingboke/p/10792298.html

如何看pg数据库版本号_查看pg数据库版本

PostgreSQL 基本命令链接&#xff1a;http://blog.itpub.net/28602568/viewspace-1841163/标题&#xff1a;PostgreSQL 基本命令作者&#xff1a;&#xff4c;ōττ&#xff52;&#xff59;©版权所有[文章允许转载,但必须以链接方式注明源地址,否则追究法律责任.]安装步…

leetcode1091. 二进制矩阵中的最短路径(bfs)

在一个 N N 的方形网格中&#xff0c;每个单元格有两种状态&#xff1a;空&#xff08;0&#xff09;或者阻塞&#xff08;1&#xff09;。一条从左上角到右下角、长度为 k 的畅通路径&#xff0c;由满足下述条件的单元格 C_1, C_2, ..., C_k 组成&#xff1a;相邻单元格 C_i …

lock和synchronized的同步区别与选择

区别如下&#xff1a; 1. lock是一个接口&#xff0c;而synchronized是java的一个关键字&#xff0c;synchronized是内置的语言实现&#xff1b;&#xff08;具体实现上的区别在《Java虚拟机》中有讲解底层的CAS不同&#xff0c;以前有读过现在又遗忘了。&#xff09; 2. syn…