`

在Struts2中实现登陆后跳转到登录前页面【转】

阅读更多
很常见的一个应用就是访问某个页面,因为权限不够,进入登陆页面。人性化的设计是能够在登陆之后,系统跳转到用户原本需要访问的页面。这可以借助拦截器来实现。

//在我们验证用户登陆的拦截器里面获取请求地址,并存入session。[/color]
package com.tuanplus.interceptor;
 
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor;
 
/**
 * 验证用户登陆
 * 
 * @author MZULE
 * 
 */
public class UserLoginInterceptor implements Interceptor {
 
    private static final long serialVersionUID = 1593745236481514166L;
 
    public void destroy() {
    }
 
    public void init() {
    }
 
    public String intercept(ActionInvocation invocation) throws Exception {
        ActionContext context = invocation.getInvocationContext();
        // 获取session
        Map<String, Object> session = context.getSession();
        Object user = session.get("user");
        // 用户还未登陆
        if (user == null) {
            // 获取HttpServletRequest对象
            HttpServletRequest req = ServletActionContext.getRequest();
            // 获取此请求的地址,请求地址包含application name,进行subString操作,去除application name
            String path = req.getRequestURI().substring(10);
            // 获得请求中的参数
            String queryString = req.getQueryString();
            // 预防空指针
            if (queryString == null) {
                queryString = "";
            }
            // 拼凑得到登陆之前的地址
            String realPath = path + "?" + queryString;
            // 存入session,方便调用
            session.put("prePage", realPath);
            return "login";
        }
        // 用户已经登陆,放行
        return invocation.invoke();
    }
 
}
//在用户登陆的action中加入字符串类型的prePage属性,用来存储拦截器放入session////的//prePage值(即登陆前的请求地址)。
?
package com.tuanplus.action;
 
import com.tuanplus.po.User;
import com.tuanplus.service.IUserService;
import com.tuanplus.util.AuthCodeUtil;
 
/**
 * 登陆Action
 * 
 * @author MZULE
 * 
 */
public class LoginAction extends BaseAction {
 
    private static final long serialVersionUID = -6179170126070438432L;
    private IUserService userService;
    private User user;
    //验证码
    private String auth;
    //登录前页面
    private String prePage;
 
    public String execute() {
        // 获取登陆的User对象
        User seuser = userService.get(user.getEmail());
        // 加入session
        session.put("user", seuser);
        //获取跳转到登陆界面之前的页面地址,由拦截器提供
        prePage = (String) session.get("prePage");
        //清除session中的数据
        session.remove("prePage");
        if (prePage == null) {
            //不是拦截器跳转到登陆页面的,直接访问的登陆页面
            return "myorder";
        } else {
            return SUCCESS;
        }
    }
  //  ...
}
//在struts.xml中配置使用action的属性prePage决定物理视图资源。
//?
<!-- 登陆 -->
<action name="login" class="loginAction">
    <result type="redirectAction">${prePage}</result>
    <result name="myorder" type="redirectAction">myOrder</result>
    <result name="input">/login.jsp</result>
</action>



原文出处:http://www.cnblogs.com/codeplus/archive/2011/08/09/2132248.html
分享到:
评论

相关推荐

    struts2实现登陆

    在配置文件中,我们声明了一个名为"login"的Action,映射到`LoginAction`类,并设置了两种结果:"success"对应成功登录后的`success.jsp`页面,"error"对应登录失败后的`error.jsp`页面。 然后,创建HTML表单页面`...

    struts+oracle实现页面登陆

    10. **登录后的跳转**:根据Struts2配置,当Action的execute()方法返回成功结果时,用户会被重定向到相应的欢迎页面或者主界面。 通过上述知识点的整合,我们可以构建一个功能完善的登录系统,它既利用了Struts2的...

    struts2+cas单点登陆例子

    在这个例子中,我们将深入探讨如何在MyEclipse环境下使用Struts2框架与CAS服务器配合,实现单点登录功能。 首先,让我们理解一下CAS(Central Authentication Service)的核心概念。CAS是一个开放源码的SSO解决方案...

    struts2实现登陆实例

    在这个"struts2实现登陆实例"中,我们将深入探讨如何利用Struts2框架和JSP页面来创建一个基本的用户登录系统,并实现用户输入的验证。 首先,我们需要理解Struts2的核心概念。Struts2框架通过Action类处理HTTP请求...

    struts2简单的登陆验证

    下面我们将详细探讨Struts2实现登陆验证的关键知识点: 1. **MVC设计模式**:Struts2基于Model-View-Controller(MVC)设计模式,将业务逻辑、数据和用户界面分离,提高代码的可维护性和可重用性。 2. **Action类*...

    struts2+mysql实现登陆源码

    在登录系统中,我们需要配置Action的映射路径,以及登录成功和失败后的跳转结果。 3. **JSP视图**:登录界面通常由JSP页面实现,其中可能包含了表单元素,如用户名和密码输入框,以及提交按钮。Struts2标签库可以...

    struts2登陆例子

    1. **Action类**:在Struts2中,业务逻辑通常封装在Action类中。一个Action类对应一个特定的用户操作,例如登录。这个例子中,可能有一个名为`LoginAction`的类,包含处理用户登录请求的方法。 2. **配置文件**:...

    独立Struts2最简单登陆代码

    在登录场景中,登录成功可能显示欢迎页面,而登录失败则显示错误信息。 通过学习这个简单的登录示例,开发者可以逐步掌握Struts2框架的基本概念和用法,为进一步的Java Web开发打下坚实的基础。同时,此示例也鼓励...

    struts2实现的简单登陆验证模块

    本示例“struts2实现的简单登陆验证模块”旨在展示如何利用Struts2框架进行用户登录验证。在深入讲解之前,先了解一下Struts2的核心概念和组件。 Struts2框架主要由以下组件构成: 1. **Action类**:这是业务逻辑的...

    struts2登陆验证

    在Struts2中实现登录验证,我们需要以下几个关键组件和步骤: 1. **Action类**:这是处理用户请求的核心,通常包含一个表示登录行为的方法,如`login()`。在这个方法中,我们需要获取并验证用户的用户名和密码。 2...

    struts2登陆案例

    在登录案例中,Struts2会自动将表单数据绑定到Action类的属性上,无需手动获取请求参数。 总结一下,Struts2登录案例涉及以下关键点: 1. 创建Action类并实现业务逻辑。 2. 配置Struts2的Action与URL映射,定义结果...

    ext+struts2整合实现登陆

    - 验证成功后,Struts2会返回一个结果,这可以通过结果类型(例如:success、error)来决定跳转到哪个页面。EXTJS端可以根据不同的结果类型更新页面状态,如显示登录成功提示或者错误信息。 6. **EXTJS响应处理**...

    struts2 登陆注册

    4. **结果类型(Result)**:根据Action执行的结果,Struts2会决定跳转到哪个视图。成功登录后,可能会重定向到主页;注册成功则显示注册成功页面,注册失败则返回注册页并显示错误信息。 5. **配置文件**:`struts...

    Struts2+hibernate实现登陆和增删改

    根据登录结果,Struts2框架会跳转到成功或错误页面。 7. **安全考虑**:为了提高安全性,密码通常需要进行加密存储和比较,可以使用Hibernate的事件监听器或者自定义拦截器来实现。 8. **增删改功能**:在其他模块...

    struts2实现的简单登陆 附加拦截器防止重复提交

    Struts2的配置文件(如struts.xml)中会定义这个Action,指定其接收的请求URL、对应的Action类以及成功或失败后的跳转页面。 接着,我们讨论如何实现登录功能。在LoginAction中,我们需要一个方法(如execute())来...

    Struts2登陆+输入验证+动态调用实例

    在Struts2中,登录功能通常涉及以下步骤: 1. 创建一个Action类,该类代表一个业务逻辑单元,比如LoginAction。 2. 定义Action类中的方法,如execute(),处理用户的登录请求。 3. 创建对应的JSP页面,用户在其中输入...

    Struts2 登陆小案例

    这个"Struts2登陆小案例"可能是为了演示如何在实际项目中实现用户登录功能。Struts2通过提供MVC(Model-View-Controller)架构模式,帮助开发者更有效地组织代码并简化Web应用开发。 首先,让我们深入理解Struts2...

    一个简单的struts2的入门程序用来实现登陆界面

    9. **国际化与本地化**:在登录界面中,你可能还会接触到国际化的概念,比如使用资源文件来定义不同语言环境下的错误消息,Struts2提供了很好的支持。 10. **异常处理**:对于可能出现的异常情况,Struts2允许你...

    Struts2做的登陆注册及用户信息管理系统

    3. **Action与Result**:在Struts2中,Action类是处理业务逻辑的核心,每个Action对应一个用户操作。执行完Action后,会跳转到一个对应的Result,Result可以是静态页面、JSP或Freemarker模板等。 4. **Interceptor...

Global site tag (gtag.js) - Google Analytics