`

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

阅读更多

本文转载自: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文件上传,后台struts2

    在本文中,我们将深入探讨如何使用ExtJS 4与Struts2框架实现文件上传功能。ExtJS是一个强大的JavaScript库,提供了丰富的用户界面组件,而Struts2是Java Web开发中的一个MVC框架,用于处理后端业务逻辑。下面,我们...

    ExtJS与Struts2的整合工程实例

    ExtJS是一个JavaScript库,提供了丰富的用户界面组件和强大的数据处理能力,而Struts2则是一个基于MVC设计模式的Java Web框架,用于简化应用的开发流程。将这两者整合可以创建功能强大且用户体验优秀的Web应用程序。...

    struts2+extjs+json整合实例

    整合Struts2、ExtJS和JSON的步骤通常包括以下几个部分: 1. **设置Struts2的JSON插件**:在Struts2项目中,需要添加struts2-json-plugin库,然后在struts.xml配置文件中启用JSON结果类型。 2. **创建Action类**:...

    Struts2与extjs整合例子

    标题“Struts2与extjs整合例子”表明我们将探讨如何将这两个技术结合在一起,以实现后端与前端的高效协作。在实际项目中,这样的整合可以利用Struts2的强大处理能力和ExtJS的出色用户界面,创建出功能丰富且用户体验...

    Extjs整合struts2.doc

    在整合 Struts2 时,你需要确保添加了必要的依赖库,例如 `struts2-json-plugin-2.1.8.jar`,这个插件允许 Struts2 将结果直接转换为 JSON 格式,便于与 ExtJS 通信。 配置方面,你需在 `web.xml` 文件中设置 ...

    ssh整合实现登录的例子,包含源代码,用extjs做的登录界面

    SSH整合是指Spring、Struts和Hibernate这三大Java开源框架的集成应用。SSH是Java Web开发中的常见技术栈,用于构建高效、可维护的企业级应用程序。在这个例子中,我们将深入探讨如何利用SSH整合来实现一个登录功能,...

    Hibernate+Spring+Struts2+ExtJS整合开发实例

    "Hibernate+Spring+Struts2+ExtJS整合开发实例"就是一个典型的Java Web应用程序开发案例,它将四个关键组件结合在一起,以实现高效、模块化的后端和前端功能。 **Hibernate** 是一个流行的Java对象关系映射(ORM)...

    spring3+ibaits3+struts2.18+Extjs3整合增删查改

    Struts2是一个基于MVC(模型-视图-控制器)设计模式的Web应用框架,用于构建动态、交互式的Web应用。Struts2.18是该框架的一个稳定版本,提供了一系列增强的特性,如拦截器、插件体系、强大的结果类型和模板引擎。在...

    struts2和ExtJs整合实例

    整合Struts2和ExtJS的主要目的是利用Struts2的强大后端处理能力,结合ExtJS的前端交互性和用户体验,打造高性能、易维护的Web应用。下面将详细介绍整合过程中的一些关键知识点: 1. **Struts2与ExtJS的通信方式**:...

    ext整合struts2

    **EXTJS整合Struts2的步骤:** 1. **引入依赖**:在项目中引入EXTJS的JavaScript库,以及Struts2的Struts2-EXTJS插件。 2. **配置Struts2**:在struts.xml中配置EXTJS相关的Action,指定返回JSON格式的结果,以便...

    漂亮的Extjs+struts2实现联动下拉

    在本项目中,"漂亮的Extjs+struts2实现联动下拉"是一个集成这两个技术的实例,实现了在Web应用中动态更新下拉框选项的功能。 联动下拉框是一种常见的交互设计,常见于需要根据前一个选择项动态加载后一个选择项的...

    extjs与struts的整合代码

    4. **Struts2结果类型配置:** 配置Struts2的结果类型,例如`json`,使得Action可以直接返回JSON数据,方便ExtJS解析。 5. **Ajax通信:** ExtJS的Ajax请求通常是异步的,通过`Ext.Ajax.request`方法发起,参数包括...

    Extjs4.0+struts2简单MVC 实例demo

    标题 "Extjs4.0+struts2简单MVC 实例demo" 提供了一个关于使用ExtJS 4.0框架与Struts2 MVC框架结合开发应用程序的实际示例。这是一个常见的前端与后端集成方案,旨在展示如何在Java Web项目中有效地处理用户界面和...

    struts2+extjs整合包

    在整合Struts2和ExtJS时,通常会通过Ajax通信来实现实时的用户交互。Struts2的JSON插件可以方便地将Action的结果转换为JSON格式,供ExtJS的组件消费。同时,ExtJS可以通过Store和Proxy组件来管理和加载由Struts2返回...

    extjs4springstruts2ibatis

    ExtJS4、Spring、Struts2和iBatis是Java Web开发中常用的技术栈,它们在构建企业级应用中发挥着各自的关键作用。下面将详细解释这些技术以及它们如何协同工作。 1. ExtJS4:这是一款强大的JavaScript库,用于构建富...

    整合--Struts2为extjs提供server数据

    总的来说,整合Struts2与Extjs是一种有效的实现前后端数据交换的方法,能够提高开发效率,优化代码结构,同时也保持了应用的可扩展性和灵活性。在实际项目中,根据具体需求选择合适的技术栈进行整合是至关重要的。

    extjs 跟 struts+json

    文章可能通过一个实际项目或示例,详细解释了如何将ExtJS的Grid Panel与Struts 2通过JSON进行数据交互,帮助读者理解这两种技术的整合过程。学习这些内容有助于提升Web应用的用户体验,实现数据的实时更新和交互。

    ExtJS4+strtus2文件上传实例源码

    通过研究这些源文件,你可以详细了解如何整合ExtJS4和Struts2以实现文件上传功能。 总之,结合ExtJS4的前端交互能力和Struts2的后端处理能力,你可以构建出一个高效且用户体验良好的文件上传系统。通过理解这两个...

    ssh+extjs4整合开发

    总结来说,"ssh+extjs4整合开发"涉及到的技术栈是Java后端开发的强大组合,结合了Spring的灵活性、Struts2的MVC架构以及Hibernate的对象关系映射,再加上EXTJS4的富客户端能力。这种整合使得开发者能够构建出高效、...

Global site tag (gtag.js) - Google Analytics