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,一经查实,立即删除!

相关文章

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(): 在转到定义时 我们可以看见,这个方…

php snoopy视频教程,php的Snoopy类

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

城轨列控系统

关于列控系统想问的问题 1&#xff09;列控系统的组成&#xff1f; 2&#xff09;城轨列控系统和列控系统有哪些区别&#xff1f; 3&#xff09;列控系统的设备图片&#xff1f; 4&#xff09;列控系统的作用&#xff1f; 1、地铁的供电部分&#xff1a; 参考&#xff1a;http:…

4、Orcal数据库dmp文件导入

1、CMD命令导入备份数据库dmp文件&#xff1a; 以上一篇博客提到的gdnh用户&#xff0c;我们需要在cmd窗口执行如下命令&#xff1a; imp gdnh/admin123orcl fileE:/createTable.dmp fully 截图说明&#xff1a; 导入成功的标志&#xff1a; 导入完成之后刷新表&#xff1a; 转…

iOS APP 安全测试

1、ipa包加壳 首先&#xff0c;我们可以通过iTunes 下载 AppStore的ipa文件(苹果 把开发者上传的ipa包 进行了加壳再放到AppStore中)&#xff0c;所以我们从AppStore下载的ipa都是加壳的&#xff0c;所以不能直接用来反编译。 得到ipa文件 可以分析APP 里包含的一些资源&#x…

oracle 与 client端执行结果不一致_Oracle -PLSQLDeveloper 13 数据库连接

关于oracle 及PLSQLDeveloper 13如何下载&#xff0c;安装流程不一一赘述&#xff0c;网络帖子很多&#xff0c;知乎直接搜索亦可。本次主要分享&#xff1a;学习前辈们关于安装流程中出现设置报错&#xff0c;应如何处理&#xff08;本人个例&#xff0c;通过网络找思路&#…

Redis——学习之路一(初识redis)

在接下来的一段时间里面我要将自己学习的redis整理一遍&#xff0c;下面是我整理的一些资料&#xff1a; Redis是一款依据BSD开源协议发行的高性能Key-Value存储系统&#xff08;cache and store&#xff09;&#xff0c;所以redis是可以查看源代码https://github.com/MSOpenTe…

css----实现checkbox图片切换

1、效果图 2、代码 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>checkbox</title><style type"text/css">label {width: 20px;font-size: 12px;cursor: pointer;}label i {display: inline-block…

【无删减】Python老司机收藏夹的17个国外免费学习网站

用Python编写代码一点都不难&#xff0c;事实上它一直被赞誉为最容易学的编程语言。如果你准备学习web开发&#xff0c; Python是一个不错的开始&#xff0c;甚至想做游戏的话&#xff0c;用Python来开发游戏的资源也有很多。这是快速学习这门语言的途径之一。许多程序员都把Py…

iframe vue 前进 后退_vue常见面试题

1、说说你对 SPA 单页面的理解&#xff0c;它的优缺点分别是什么&#xff1f;SPA&#xff08; single-page application &#xff09;仅在 Web 页面初始化时加载相应的 HTML、JavaScript 和 CSS。一旦页面加载完成&#xff0c;SPA 不会因为用户的操作而进行页面的重新加载或跳转…

交叉熵与相对熵

熵的本质是香农信息量()的期望。 现有关于样本集的2个概率分布p和q&#xff0c;其中p为真实分布&#xff0c;q非真实分布。 按照真实分布p来衡量识别一个样本的所需要的编码长度的期望(即平均编码长度)为&#xff1a;H(p)。 如果使用错误分布q来表示来自真实分布p的平均编码长度…

menustrip

在对应菜单上点击鼠标右键&#xff0c;插入&#xff0c;SEPARATOR 就可以了&#xff0c;然后可以选中拖动位置。转载于:https://www.cnblogs.com/Echo529/p/6382302.html

什么是copyonwrite容器

2019独角兽企业重金招聘Python工程师标准>>> CopyOnWrite容器即写时复制的容器。通俗的理解是当往一个容器添加元素的时候&#xff0c;不直接往当前容器添加&#xff0c;而是先将当前容器进行Copy&#xff0c;复制出一个新的容器&#xff0c;然后新的容器里添加元素…

P2341 [HAOI2006]受欢迎的牛 强连通

题目背景 本题测试数据已修复。 题目描述 每头奶牛都梦想成为牛棚里的明星。被所有奶牛喜欢的奶牛就是一头明星奶牛。所有奶 牛都是自恋狂&#xff0c;每头奶牛总是喜欢自己的。奶牛之间的“喜欢”是可以传递的——如果A喜 欢B&#xff0c;B喜欢C&#xff0c;那么A也喜欢C。牛栏…

spark mllib推荐算法使用

2019独角兽企业重金招聘Python工程师标准>>> 一、pom.xml <!-- 机器学习包 --><dependency><groupId>org.apache.spark</groupId><artifactId>spark-mllib_2.10</artifactId><version>${spark.version}</version>&…

R语言的自定义函数—字符组合

前两天写了几个函数&#xff0c;对里面收获到的一些东西做一些记录。 函数str_comb&#xff0c;用于输入一个字符串或数值向量&#xff0c;返回由向量中元素组成的不重复的长度小于向量长度的所有组合&#xff0c;结果用矩阵形式输出。 函数使用结果如下&#xff1a; 思路很简单…

oracle group by 两项,Oracle中group by 的扩展函数rollup、cube、grouping sets

Oracle的group by除了基本使用方法以外&#xff0c;还有3种扩展使用方法&#xff0c;各自是rollup、cube、grouping sets。分别介绍例如以下&#xff1a;1、rollup对数据库表emp。如果当中两个字段名为a&#xff0c;b,c。假设使用group by rollup(a,b)&#xff0c;首先会对(a,b…

机器学习基石13-Hazard of Overfitting

注&#xff1a; 文章中所有的图片均来自台湾大学林轩田《机器学习基石》课程。 笔记原作者&#xff1a;红色石头 微信公众号&#xff1a;AI有道 上节课主要介绍了非线性分类模型&#xff0c;通过非线性变换&#xff0c;将非线性模型映射到另一个空间&#xff0c;转换为线性模型…

oracle执行计划的rows不对,Oracle执行计划——all_rows和first_rows(n)优化器模式

Oracle执行计划——all_rows和first_rows(n)优化器模式0. 环境创建[sql]SQL> create usertest identified by test2 default tablespace users3 temporary tablespace temp4 quota unlimited on users;User created.SQL> grant createsession, resource, alter session t…