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

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

 

首先打开我们的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类了


人员登入5---实现登入_第1张图片

 

具体代码:

 

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---实现登入_第2张图片
 


人员登入5---实现登入_第3张图片
 

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

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

 


人员登入5---实现登入_第4张图片
 


 

你可能感兴趣的:(STRUCTS2,structs.xml,ejb调用,extjs表单提交)