ExtJs+ Dwr 页面登入功能

本文介绍如何使用ExtJS和DWR实现一个简单的登录功能。通过整合这两种技术,可以构建出具备前后端交互能力的登录表单。文中详细展示了配置文件、登录页面及服务端验证等关键代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近正在学习extjs 和 dwr ,自己做了一个extjs结合dwr的登入功能,拿出来跟大家分享一下。本人第一次发帖,请各位大侠多多指教。

1.开发工具Myeclipse6.0+ExtJs2.0+dwr(忘了是那个版本,好像还是1.x的)

 

2.新建一个web project ,将dwr.jar包放到WEB-INF下的lib下配置dwr.xml 和 web.xml

dwr.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" "http://www.getahead.ltd.uk/dwr/dwr10.dtd">
<dwr>
	<allow>
		<create javascript="LoginService" creator="new">
		    <param name="class" value="com.c35.service.LoginService"></param>
		</create>
	</allow>
	<signatures>
	  <![CDATA[	  
	  ]]>
	</signatures>
</dwr>

 web.xml

	<servlet>
		<servlet-name>dwr-invoker</servlet-name>
		<servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
		<init-param>
			<param-name>debug</param-name>
			<param-value>true</param-value>
		</init-param>
	</servlet>
	<servlet-mapping>
		<servlet-name>dwr-invoker</servlet-name>
		<url-pattern>/dwr/*</url-pattern>
	</servlet-mapping>
	<welcome-file-list>
		<welcome-file>/login/login.jsp</welcome-file>
	</welcome-file-list>

 由于时间有限只贴关键代码:

login.jsp

<link rel = "stylesheet" type = "text/css" href="/ExtJsDemo/scripts/ext/resources/css/ext-all.css">
    <script type="text/javascript" src="/ExtJsDemo/scripts/ext/adapter/ext/ext-base.js"></script>
    <script type="text/javascript" src="/ExtJsDemo/scripts/ext/ext-all.js"></script>
    <script type="text/javascript" src="/ExtJsDemo/scripts/js/login.js"></script>
    
    <script type="text/javascript" src="/ExtJsDemo/dwr/engine.js"></script>
	<script type="text/javascript" src="/ExtJsDemo/dwr/util.js"></script>
	<script type="text/javascript" src="/ExtJsDemo/dwr/interface/LoginService.js"></script>

<body style='background:#dfe8f6;'>
 
    <div id="show" style="position:absolute;top:5%;left:18%;padding:150px;text-align:'left';"></div>
    
  </body>

 login.js

Ext.onReady(function() {
	Ext.QuickTips.init();//开启表单提示,支持tips提示
	Ext.form.Field.prototype.msgTarget = 'side';//设置提示信息位置为边上,提示的方式,枚举值为"qtip","title","under","side",id(元素id)
	var simple = new Ext.FormPanel({//初始化表单面板
		renderTo:'show', ////填充到指定区域		
		labelWidth : 75, // 默认标签宽度
		labelAlign: 'right' ,//标签对齐
		frame : true,//设置表单面板,false为无面板,圆角和浅蓝色背景
		title : '登入表框名称',
		bodyStyle : 'padding:10px 10px 0',//表单样式
		width : 350,//表单宽度
		height: 180,//表单高度
		monitorValid:true,//绑定验证
		defaults : {
			width : 230, //文本宽长度 简化items中相同的属性
			xtype:"textfield"
		},
		//defaultType : 'textfield',//默认字段类型
		submit: function(){
                   // this.getEl().dom.action = '/ExtJsDemo/index.jsp',
                   // this.getEl().dom.method='post',              
                   // this.getEl().dom.submit();
			       var type = Ext.getCmp('type').getValue() ;
			       var name=Ext.getCmp('name').getValue();
			       var password = Ext.getCmp('pws').getValue() ;
			       LoginService.isUsrExist(name,password,function(tmp){
			           if(tmp){
			           	  window.location.href = "/ExtJsDemo/index.jsp" ;
			           }else{
			           	  Ext.Msg.alert("信息提示","登入信息有误请重新输入!") ;
			           }
			       })
              },
		items : [{
			xtype:"combo",
            store: store,
            fieldLabel : '用户权限' ,
            id:'type',
            name:'type' ,
            displayField:'id',
            valueField : 'name' ,
            typeAhead: true,
            mode: 'local',
            triggerAction: 'all',
            emptyText:'请选择',
            anchor:"90%"
		},{
			fieldLabel : '帐  户',
			name : 'username',
			id:'name',
			anchor:"90%",//350px-labelWidth剩下的宽度的95%,留下5%作为后面提到的验证错误提示
			//width : 230,
			//xtype:"textfield",
			allowBlank : false,//false则不能为空,默认为true
			blankText : '帐户不能为空'
		}, {
			fieldLabel : '密  码',
			name : 'pws',
			id:'pws',
			inputType: 'password', 
			anchor:"90%",
			//width : 230,
			allowBlank : false,//禁止为空
			blankText : '密码不能为空'//可限制多种类型,具体参照api文档
		}],
		buttons : [{
			text : '登录',
			formBind : true,//.如果你想绑定验证,在form表单添加参数monitorValid:true,然后在按钮配置参数中添加formBind:true
			handler : function() {
				if(simple.form.isValid()){
					simple.form.submit(); 
				}
				
			}//提交表单与服务器交互的实例请参照实例分析部分《一个完整的登录实例》
		}, {
			text : '取消',
			handler : function() {
				simple.form.reset();
			}//重置表单
		}]
	});
	//simple.render('show');//填充到指定区域
});

var store = new Ext.data.SimpleStore({
        fields: ['id', 'name'],
        data : [['管理员', '1'],
        ['财务员', '0']
       ] // from states.js
    });

   LoginService.java

import javax.servlet.http.HttpSession;

/**
 *
 * @author yusam(yusam@163.com)
 * @version Revision: 1.00 Date: 2008-9-4
 */
public class LoginService {

	public boolean isUsrExist(String name,String pwd,HttpSession session){
        boolean flag = false ;
        if("yusam".equals(name) && "123".equals("123")){
        	flag = true ;
        	session.setAttribute("username", name) ;
        	session.setAttribute("pwd", pwd) ;
        }
		return flag;
	}
}
 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值