很常见的一个应用就是访问某个页面,因为权限不够,进入登陆页面。人性化的设计是能够在登陆之后,系统跳转到用户原本需要访问的页面。这可以借助拦截器来实现。
//在我们验证用户登陆的拦截器里面获取请求地址,并存入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
分享到:
相关推荐
在配置文件中,我们声明了一个名为"login"的Action,映射到`LoginAction`类,并设置了两种结果:"success"对应成功登录后的`success.jsp`页面,"error"对应登录失败后的`error.jsp`页面。 然后,创建HTML表单页面`...
10. **登录后的跳转**:根据Struts2配置,当Action的execute()方法返回成功结果时,用户会被重定向到相应的欢迎页面或者主界面。 通过上述知识点的整合,我们可以构建一个功能完善的登录系统,它既利用了Struts2的...
在这个例子中,我们将深入探讨如何在MyEclipse环境下使用Struts2框架与CAS服务器配合,实现单点登录功能。 首先,让我们理解一下CAS(Central Authentication Service)的核心概念。CAS是一个开放源码的SSO解决方案...
在这个"struts2实现登陆实例"中,我们将深入探讨如何利用Struts2框架和JSP页面来创建一个基本的用户登录系统,并实现用户输入的验证。 首先,我们需要理解Struts2的核心概念。Struts2框架通过Action类处理HTTP请求...
下面我们将详细探讨Struts2实现登陆验证的关键知识点: 1. **MVC设计模式**:Struts2基于Model-View-Controller(MVC)设计模式,将业务逻辑、数据和用户界面分离,提高代码的可维护性和可重用性。 2. **Action类*...
在登录系统中,我们需要配置Action的映射路径,以及登录成功和失败后的跳转结果。 3. **JSP视图**:登录界面通常由JSP页面实现,其中可能包含了表单元素,如用户名和密码输入框,以及提交按钮。Struts2标签库可以...
1. **Action类**:在Struts2中,业务逻辑通常封装在Action类中。一个Action类对应一个特定的用户操作,例如登录。这个例子中,可能有一个名为`LoginAction`的类,包含处理用户登录请求的方法。 2. **配置文件**:...
在登录场景中,登录成功可能显示欢迎页面,而登录失败则显示错误信息。 通过学习这个简单的登录示例,开发者可以逐步掌握Struts2框架的基本概念和用法,为进一步的Java Web开发打下坚实的基础。同时,此示例也鼓励...
本示例“struts2实现的简单登陆验证模块”旨在展示如何利用Struts2框架进行用户登录验证。在深入讲解之前,先了解一下Struts2的核心概念和组件。 Struts2框架主要由以下组件构成: 1. **Action类**:这是业务逻辑的...
在Struts2中实现登录验证,我们需要以下几个关键组件和步骤: 1. **Action类**:这是处理用户请求的核心,通常包含一个表示登录行为的方法,如`login()`。在这个方法中,我们需要获取并验证用户的用户名和密码。 2...
在登录案例中,Struts2会自动将表单数据绑定到Action类的属性上,无需手动获取请求参数。 总结一下,Struts2登录案例涉及以下关键点: 1. 创建Action类并实现业务逻辑。 2. 配置Struts2的Action与URL映射,定义结果...
- 验证成功后,Struts2会返回一个结果,这可以通过结果类型(例如:success、error)来决定跳转到哪个页面。EXTJS端可以根据不同的结果类型更新页面状态,如显示登录成功提示或者错误信息。 6. **EXTJS响应处理**...
4. **结果类型(Result)**:根据Action执行的结果,Struts2会决定跳转到哪个视图。成功登录后,可能会重定向到主页;注册成功则显示注册成功页面,注册失败则返回注册页并显示错误信息。 5. **配置文件**:`struts...
根据登录结果,Struts2框架会跳转到成功或错误页面。 7. **安全考虑**:为了提高安全性,密码通常需要进行加密存储和比较,可以使用Hibernate的事件监听器或者自定义拦截器来实现。 8. **增删改功能**:在其他模块...
Struts2的配置文件(如struts.xml)中会定义这个Action,指定其接收的请求URL、对应的Action类以及成功或失败后的跳转页面。 接着,我们讨论如何实现登录功能。在LoginAction中,我们需要一个方法(如execute())来...
在Struts2中,登录功能通常涉及以下步骤: 1. 创建一个Action类,该类代表一个业务逻辑单元,比如LoginAction。 2. 定义Action类中的方法,如execute(),处理用户的登录请求。 3. 创建对应的JSP页面,用户在其中输入...
这个"Struts2登陆小案例"可能是为了演示如何在实际项目中实现用户登录功能。Struts2通过提供MVC(Model-View-Controller)架构模式,帮助开发者更有效地组织代码并简化Web应用开发。 首先,让我们深入理解Struts2...
9. **国际化与本地化**:在登录界面中,你可能还会接触到国际化的概念,比如使用资源文件来定义不同语言环境下的错误消息,Struts2提供了很好的支持。 10. **异常处理**:对于可能出现的异常情况,Struts2允许你...
3. **Action与Result**:在Struts2中,Action类是处理业务逻辑的核心,每个Action对应一个用户操作。执行完Action后,会跳转到一个对应的Result,Result可以是静态页面、JSP或Freemarker模板等。 4. **Interceptor...