欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Extjs4的MVC登录实现(整合struts2)(三)

程序员文章站 2022-07-04 21:34:08
...

本文转载自:http://www.javake.com.cn/frontend/js/20130922/6785.html作者:eric

貌似有点小bug,有时登录成功后不能自动跳转到首页,需要刷新一下,把struts.xml配置中配置为<result type="redirect">就没问题了,希望有高手能告诉哪写的不对,暂时只能用这种方式解决了

完整代码参考:http://www.luchg.com/resource/showResource_5.html

如果发现代码有什么问题欢迎提出

这次主要是实现了登录功能以及登录验证,到此后台管理系统的框架已经搭建差不多了,剩下的工作就是对数据的操作了

有不清楚的可以结合前几篇文章,这篇是对前面几个功能的整合:

登录功能:http://blog.csdn.net/lc448986375/article/details/8025305

自定义拦截器进行登录验证:http://blog.csdn.net/lc448986375/article/details/8027432

后台管理系统之二:http://blog.csdn.net/lc448986375/article/details/8019731

首先,在后台管理系统之二的版本上加了登录功能,可以参考考http://blog.csdn.net/lc448986375/article/details/8025305,需要修改的是登录成功后页面的跳转:

buttons:[{    
              text:'登录',    
              width:80,    
              height:30,    
              handler:function(){    
                  //获取当前的表单form    
                  var form = this.up('form').getForm();    
                  //判断否通过了表单验证,如果不能空的为空则不能提交    
                  if(form.isValid()){    
                  //alert("可以提交");    
                  form.submit({    
                            clientValidation:true,    
                            waitMsg:'请稍候',    
                            waitTitle:'正在验证登录',    
                            url:'user_login',    
                            success:function(form1,action){    
                               //登录成功后的操作,跳转到toIndex.action    
                               window.location.href = 'toIndex'     
                            },    
                            failure:function(form,action){    
                                Ext.MessageBox.show({    
                                width:150,    
                                title:"登录失败",    
                                buttons: Ext.MessageBox.OK,    
                                msg:action.result.msg    
                              })    
                            }    
                                                                
                   })    
                 }    
               }    
             },{    
                  text:'取消',    
                  width:80,    
                  height:30,    
                  handler:function(){    
                           //点击取消,关闭登录窗口    
                           var form = this.up('form');    
                           form.close();    
                         }    
                      }]

 其他的并没有改变,登录成功后跳转到LoginAction.java的toIndex.action:

package action;    
    
import java.io.ByteArrayInputStream;    
import java.util.Map;    
import model.Admin;    

import org.apache.struts2.interceptor.SessionAware;    
    
import com.opensymphony.xwork2.ActionSupport;    
        
public class LoginAction extends ActionSupport implements SessionAware {    
    //接收name,必须与js中的textfield的name相同,否则取不到值    
    private String name;    
    private String password;    
    //得到页面传来的验证码    
    private String CheckCode;    
    private Map session;    
        
    //用于告诉前台时候登录成功    
    private boolean success;    
        
    public String login(){    
        //得到生成的验证码    
        String strCode = (String) session.get("randomCode");    
System.out.println("UserAction>randomCode:"+strCode);    
        if("admin".equals(name) && "admin".equals(password) && CheckCode.toLowerCase().equals(strCode.toLowerCase())){    
            //做个小例子,没有连接数据库    
            session.put("nowUser", new Admin(1,"admin","admin",1));    
            success = true;    
        }else{    
            success = false;    
        }    
        return SUCCESS;    
    }    
        
    public String toIndex() {    
        return SUCCESS;    
    }    

 配置文件struts.xml:

<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"    
"http://struts.apache.org/dtds/struts-2.0.dtd">    
<struts>    
    
    <package name="admin" namespace="/" extends="json-default">    
        
        <interceptors>    
            <interceptor name="loginInterceptor" class="interceptor.LoginInterceptor"></interceptor>    
        </interceptors>    
            
        <global-results>    
            <result name="toLogin">/login.html</result>    
        </global-results>    
            
        <action name="user_login" class="action.LoginAction" method="login">    
            <result type="json" />    
        </action>    
        <action name="toIndex" class="action.LoginAction" method="toIndex">    
            <interceptor-ref name="loginInterceptor"></interceptor-ref>    
            <result>/index.html</result>    
        </action>    
                
        <action name="getCode" class="action.YanZhengMaAction" method="getCode">    
            <result type="stream">    
                <param name="contentType">image/jpeg</param>    
                <param name="inputName">bais</param>    
                <param name="bufferSize">2048</param>    
            </result>    
        </action>    
    </package>    
    
    <package name="json" extends="json-default">    
        <interceptors>    
            <interceptor name="loginInterceptor" class="interceptor.LoginInterceptor"></interceptor>    
        </interceptors>    
        <global-results>    
            <result name="toLogin">/login.html</result>    
        </global-results>    
            
        <action name="users" class="action.UserAction" method="users">    
            <interceptor-ref name="loginInterceptor"></interceptor-ref>    
            <result type="json" />    
        </action>    
    </package>    
</struts>   

跳转到:index.html中,然后就是后台管理之二:http://blog.csdn.net/lc448986375/article/details/8019731的内容了

接下来需要对用户登录进行验证,虽然后台管理只有一个页面,但是可以在地址栏中直接输入请求进行操作,所以我们需要对每个用户的请求进行验证,所以在每个action中都要配置自定义的拦截器,我不知道有没有更好的方式,如果有知道的希望能交流一下。

 

为了防止用户直接进入index.html页面,我把这个页面放入了WEB-INF下面,如果有更好的方法也希望能提出建议,学习一下

 

下面是登录页面效果图:

Extjs4的MVC登录实现(整合struts2)(三)
            
    
    博客分类: Extjs ExtjsStrutsMVC 

相关标签: Extjs Struts MVC