码迷,mamicode.com
首页 > 其他好文 > 详细

人员登入5---实现登入

时间:2015-05-26 19:08:29      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:function   title   false   用户   

有了前面做够的准备,我们现在可以来做登入了。


首先打开我们的login.js,在登入按钮事件那里写上

function login()
    {
        //用户登入方法---表单提交
        if(formPanel.form.isValid()){
                    Ext.MessageBox.show({
                        title:"请等待",
                        msg:"正在加载",
                        progressText:"",
                        width:300,
                        progress:true,
                        closable:false,
                        animEl:‘loding‘
                    });
                    
                    var f = function(v){
                        return function(){
                            var i = v/11;
                            Ext.MessageBox.updateProgress(i,‘‘);
                        }
                    }
                    
                    for(var i = 1; i < 13; i++){
                        setTimeout(f(i),i *150);
                    }
                    
                    //提交到服务器操作
                    formPanel.form.doAction("submit",{
                        url:"Login.action",
                        method:"post",
                        success:function(form,action){
                            //登入成功
                             Ext.Msg.alert(‘登入成功‘,action.result.message);
                        },
                        failure:function(form, action){
                            Ext.Msg.alert(‘登录失败‘,action.result.message);
                        }
                        
                    });
                }
    }


此时前台表单已经提交了,提交的地址是Login.action,我们这是配置structs.xml文件


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd"> 
<struts>
    
    <package name="extjs4" extends="json-default" namespace="/">        
        
        <!-- 编写Action -->
        <action name="Login" class="login.Action" method="validate_login">
            <result type="json"></result>
        </action>
            
    </package>
</struts>


说明:

action name="Login":和表单提交的url一样

class="login.Action":处理表单的类

method="validate_login":类里面具体处理表单的方法

<result type="json">:返回json类型给前台


看到这里,现在我们自然要去编写login.Action类了


技术分享


具体代码:


package login;
import java.util.ArrayList;
import java.util.Hashtable;
import java.util.List;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import com.opensymphony.xwork2.ActionSupport;

public class Action extends ActionSupport {
    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    
    final String pjName = moduleName();//获取ejb调用名
     
    public String username;//与表单的 账号同名,通过get方法获取
    
    public String password;//与表单的 密码同名,通过get方法获取
    
    public String message;//返回给前台的信息
    
    public boolean success;//登入结果,true为登入成功
    
    public String moduleName(){
        //ejb:/projectName
        return "ejb:/"+"Person"+"/";
    }
    
    public InitialContext getContext() throws NamingException{
        
        Hashtable<String, String> p = new Hashtable<String, String>();
        p.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");
        InitialContext ctx;
        ctx = new InitialContext(p);
        return ctx;
        
    }

    /**
     * ejb接口获取
     * @return
     */
    public ManageBeanRemote remote(){
        ManageBeanRemote remote = null;
        try {
            remote = (ManageBeanRemote) getContext().lookup(pjName+"ManageBean!login.ManageBeanRemote");
        } catch (NamingException e) {
            e.printStackTrace();
        }
        return remote;
    }
    
    
    /**
     * 
     * 登入验证。。。structs用get和set方法获取账号密码
     * @return
     */
    
    public String validate_login()
    {
        System.out.println("username: "+username+"  Password:"+password);
        
        List<Manage>ok=new ArrayList<Manage>();
        
        ok=remote().getqualificationParts(username,password);//调用ejb方法
        
    
        if(ok.size()>0)
        {
            message="登入成功";
            success=true;
        }
        else
        {
            message="账号或密码错误";
            success=false;
        }
        return SUCCESS;
    }
    
  /*省略username,password,success,message的get和set方法,记得一定要写啊,不然不能获取前台数据和数据返回。我们只需要调用get和set就行了。具体的获取和返回structs2帮我我封装好了*/
    
}


说明:

return SUCCESS:

public static final java.lang.String SUCCESS = "success";

public static final java.lang.String NONE = "none";

public static final java.lang.String ERROR = "error";
  
public static final java.lang.String INPUT = "input";
  
public static final java.lang.String LOGIN = "login";


可以再structs.xml进行相应响应

如:


  <package name="com.jvortex.j2eeblog.struts" namespace="/" extends="struts-default">  
        <action name="checkLogin" class="managerAction" method="checkLogin">  
            <result name="success">/success.jsp</result>  
            <result name="input">/index.jsp</result>  
        </action>  
    </package> 

就可以根据返回的类型跳转不一样的页面


上面的ejb调用没做详细介绍了,详情请参考

http://hm4123660.iteye.com/admin/blogs/2038789


这里的return当为上面的值时,会返回所以定义的参数。

如果我们返回List<Manager>lists时,就return "lists";


完成上面这些,我们的登入也就完成了,试试结果:

我们的账号密码是admin,admin


技术分享


技术分享

好的我们的登入基本完成了。

我们可以查看火狐,看看前后台的数据是怎样的



技术分享


人员登入5---实现登入

标签:function   title   false   用户   

原文地址:http://wufanxin.blog.51cto.com/7318130/1655332

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!