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

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

开发环境:

MyEclipse 6.5

Struts 2.1.8

ExtJs 3.0

1. 准备工作

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

2. 登录页面

 <%@ page language="java" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>login Page Test-2</title> <!-- 引入ExtJS所需文件-->
<link rel="stylesheet" type="text/css" href="js/extjs/resources/css/ext-all.css" />
<script type="text/javascript" src="js/extjs/adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="js/extjs/ext-all.js"></script>
<script type="text/javascript">
var loginForm;
Ext.onReady(function() {
Ext.BLANK_IMAGE_URL = 'js/extjs/resources/images/default/s.gif';
Ext.QuickTips.init(); // 定义一个 FormPanel 对象
loginForm = new Ext.FormPanel({
width: 400,
frame: true,
renderTo: "loginForm",
title: "登录",
method: "POST",
monitorValid: true, // 该属性表示表单在通过验证之前提交按钮无效
labelWidth: 50, // 标签宽度
labelAlign: "left", // 标签的对齐方式
labelPad: 0, // 标签与输入框的间隔
buttonAlign: 'center', // 底部按钮居中对齐 items: [
{
xtype: "textfield",
fieldLabel: "用户名",
allowBlank: false, // 是否允许为空, 默认为 true
blankText: "用户名不能为空", // 显示错误提示信息
name: "user.username", // name 属性应与 Struts2 Action 中的属性保持一致
id: "username",
width: 300
},
{
xtype: "textfield",
inputType: "password",
fieldLabel: "密&nbsp;&nbsp;&nbsp;码",
allowBlank: false,
blankText: "密码不能为空",
name: "user.password",
id: "password",
width: 300
}
],
buttons: [
{
text: "登&nbsp;录",
formBind: true,
handler: doLogin
},
{
text: "重&nbsp;置",
handler: doReset
}
],
keys: [
{
key: [10, 13],
fn: doLogin
}
], // 表单不使用AJAX方式提交
onSubmit: Ext.emptyFn,
submit: function() {
this.getEl().dom.action = "login.action";
this.getEl().dom.submit();
}
});
}); // 登录
function doLogin() {
if(loginForm.form.isValid()) {
loginForm.form.submit();
}
} // 重置
function doReset() {
loginForm.form.reset();
}
</script>
</head> <body>
<div id="loginForm" style="margin: 100px">
</div>
</body>
</html>

页面效果如下图所示:

3. Java 类编辑

3.1 User 类

 /***********************************************************************
* <p>Project Name: extjs</p>
* <p>File Name: com.thu.afa.extjs.bean.User.java</p>
* <p>Copyright: Copyright (c) 2010</p>
* <p>Company: <a href="http://afa.thu.com">http://afa.thu.com</a></p>
***********************************************************************/
package com.thu.afa.extjs.bean; import java.io.Serializable; /**
* <p>Class Name: User</p>
* <p>Description: </p>
* @author Afa
* @date Aug 4, 2010
* @version 1.0
*/
public class User implements Serializable
{
private static final long serialVersionUID = 2851358330179740778L; private String username;
private String password;
public String getUsername()
{
return username;
}
public void setUsername(String username)
{
this.username = username;
}
public String getPassword()
{
return password;
}
public void setPassword(String password)
{
this.password = password;
}
}

3.2 Action 类

 /***********************************************************************
* <p>Project Name: extjs</p>
* <p>File Name: com.thu.afa.extjs.action.UserAction.java</p>
* <p>Copyright: Copyright (c) 2010</p>
* <p>Company: <a href="http://afa.thu.com">http://afa.thu.com</a></p>
***********************************************************************/
package com.thu.afa.extjs.action; import com.opensymphony.xwork2.ActionSupport;
import com.thu.afa.extjs.bean.User; /**
* <p>Class Name: UserAction</p>
* <p>Description: </p>
* @author Afa
* @date Aug 4, 2010
* @version 1.0
*/
public class UserAction extends ActionSupport
{
private static final long serialVersionUID = 3093253656888703000L; private User user; public User getUser()
{
return user;
} public void setUser(User user)
{
this.user = user;
} @Override
public String execute() throws Exception
{
return ("test".equals(user.getUsername()) && "test".equals(user.getPassword())) ? SUCCESS : INPUT;
}
}

4. 配置文件 struts.xml

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

5. 部署运行

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

6. 注意事项

6.1 表单元素的 name 属性

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

6.2 表单的提交地址

    1. this.getEl().dom.action = "login.action";

29. ExtJs - Struts2 整合(1) - 登录页面的更多相关文章

  1. java web: eclipse & maven & jetty & struts2 & mysql = 简单登录页面

    第一次接触java web开发,花费了一天半的时间,写了个简单的登录页面,以此文为记. 开发工具 Eclipse Luna Release (4.4.0) 已集成maven,maven目前的体会就是管 ...

  2. struts2拦截器实现session超时返回登录页面(iframe下跳转到其父页面)

    需求:session超时时,返回登录页面,由于页面嵌套在iframe下,因此要跳转到登录页面的父页面,但是首页,登录页面等不需要进行跳转 实现: java文件:SessionIterceptor.ja ...

  3. struts2整合spring应用实例

    我们知道struts1与spring整合是靠org.springframework.web.struts.DelegatingActionProxy来实现的,以下通过具体一个用户登录实现来说明stru ...

  4. php 整合 微博登录

    现在很多网站都整合了便捷的第三方登录,如QQ登录.新浪微博.搜狐.网易等,为用户提供不少方便和节约时间.我们可以选择使用JS或SDK实现第三方提供用户授权API,本文主要讲解 JAVA SDK 新浪微 ...

  5. Struts2 整合jQuery实现Ajax功能(1)

    技术领域非常多东西流行,自然有流行的道理.这几天用了jQuery,深感有些人真是聪明绝顶,能将那么多技术融合的如此完美. 首先明白个概念: jQuery是什么:是使用javascript语言开发的,用 ...

  6. MyBatis数据持久化(十一)Mybatis3、Spring4、Struts2整合开发

    上一节我们將Mybatis和Spring4进行整合,本节向大家介绍Mybatis在Web开发中的应用,并与主流的MVC框架Struts2进行整合. 我们首先需要获取Struts2框架,Struts2官 ...

  7. 无废话ExtJs 入门教程十六[页面布局:Layout]

    无废话ExtJs 入门教程十六[页面布局:Layout] extjs技术交流,欢迎加群(201926085) 首先解释什么是布局: 来自百度词典的官方解释:◎ 布局 bùjú: [distributi ...

  8. 基于Struts2框架实现登录案例 之 使用Struts2标签库简化表单+继承ActionSupport完成输入交验

    一,使用Struts2标签库简化表单 在文章[基于Struts2框架实现登录案例]的基础上,通过使用Struts标签库可以简化登录页面login2.jsp <%@ page language=& ...

  9. 基于Struts2框架实现登录案例

    一,准备工作  1)新建web项目,并导入Struts2jar文件和配置web.xml文件. struts2 jar文件 web.xml文件 <?xml version="1.0&qu ...

随机推荐

  1. Django所包含属性

    Django包含的属性 定义属性 概述: 1.django根据属性的类型确定以下信息 2.当前选择的数据库支持字段的类型 3.渲染管理表单时使用的默认html空间 4.在管理站点最低限度的验证 注意: ...

  2. Hdu 5274 Dylans loves tree (树链剖分模板)

    Hdu 5274 Dylans loves tree (树链剖分模板) 题目传送门 #include <queue> #include <cmath> #include < ...

  3. Java线程和多线程(一)——线程的基本概念

    Java 线程是一个轻量级执行任务的处理单元.Java提供了Thread类来支持多线程,开发者在应用中可以创建多个线程来支持并发执行任务. 在应用中存在两种类型的线程,用户线程和守护线程.当我们启动应 ...

  4. [java基础原理] BigDecimal

    1.类 简化示例 属于java.math包,因此包含各种数学运算,abs,pow等等. package java.math; public class BigDecimal { //值的绝对long型 ...

  5. Windows学习总结(11)——Windows批处理命令编写代码及小程序简介

    批处理(Batch)也称为批处理脚本.顾名思义,就是对某对象进行批量的处理.DOS批处理是基于DOS命令,用来自动地批量地执行DOS命令以实现特定操作的脚本.批处理是一种简化的脚本语言,它应用于DOS ...

  6. 九度oj 题目1063:整数和

    题目1063:整数和 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:4043 解决:2638 题目描述: 编写程序,读入一个整数N.若N为非负数,则计算N到2N之间的整数和:若N为一个负数 ...

  7. [BZOJ1179] [Apio2009]Atm(tarjan缩点 + spfa)

    传送门 题意 N个点M条边的有向图 每个点有点权 从某一个结点出发 问能获得的最大点权和 一个点的点权最多被计算一次 N<=500000 M<=500000 思路 先tarjan缩点,然后 ...

  8. 洛谷P1257 平面上的最接近点对

    n<=10000个点,求欧几里德距离最小的一对点. 经典分治,把这些点按x排序,分成两半,每边分别算答案,答案是左边的最小,右边的最小,左右组起来的最小三者的最小.发现只有左右组的有点难写. 假 ...

  9. POJ 3723 Conscription【最小生成树】

    题意: 征用一些男生和女生,每个应都要给10000元,但是如果某个男生和女生之间有关系,则给的钱数为10000减去相应的亲密度,征集一个士兵时一次关系只能使用一次. 分析: kruskal求最小生成树 ...

  10. SQL SERVER 小技巧

    SQL SERVER 小技巧(不用exec实现in()的功能) declare @x varchar(20) SET @x='1,2,3' SELECT @x select * from data00 ...