自定义简单拦截器拦截用户非正常路径访问登录后的内容:
整个实例的过程: 登录页面(login.jsp)-->登录Action(LoginAction.java)-->成功登录后转到另外一个Action(HelloAction.java)在这个Action的跳转配置文件(struts.xml)中加入拦截器-->成功跳转到Hello.jsp
添加的拦截器类命名为LoginInterceptor(LoginInterceptor.java)
在这其中使用一个中间辅助类(User.java)将信息包装在辅助类中。
在HelloAction配置文件中添加登录拦截的作用是使用户不能直接通过访问hello.do进行访问Hello.jsp,而必须通过登录(login.jsp)页面中填写正确的信息成功登录后到达hello.jsp页面。
在这过程中的所有失败操作都将跳转到login.jsp页面
1.登录页面(login.jsp)
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>登录页面</title>
</head>
<body>
<s:form action="login.do">
<s:textfield name="user.username" label="用户名"></s:textfield>
<s:password name="user.password" label="密码"></s:password>
<s:submit value="登陆"></s:submit>
</s:form>
</body>
</html>
2.中间辅助类User.java
package Struts.domain;
public class User{
private String username;
private String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
3.登录Action(LoginAction.java)
package Struts.action;
import Struts.domain.User;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
@SuppressWarnings("serial")
public class LoginAction extends ActionSupport {
private User user;
public String execute() throws Exception {
if ("tom_seed".equalsIgnoreCase(userbean.getName())
&& "tom_seed".equalsIgnoreCase(userbean.getPassword())) {
ActionContext.getContext().getSession().put("user", user);
return SUCCESS;
} else {
return INPUT;
}
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
4.成功登录后转到另外一个Action(HelloAction.java)
package Struts.action;
import com.opensymphony.xwork2.ActionSupport;
@SuppressWarnings("serial")
public class HelloAction extends ActionSupport {
public String execute()throws Exception{
return SUCCESS;
}
}
5.成功跳转到Hello.jsp
<%@ page language="java" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>HelloWorld</title>
</head>
<body>
<center><h3>HelloWorld</h3></center>
</body>
</html>
6.拦截器(LoginInterceptor.java)
package Struts.interceptor;
import java.util.Map;
import Struts.domain.User;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
@SuppressWarnings("serial")
public class LoginInterceptor extends AbstractInterceptor {
@Override
public String intercept(ActionInvocation arg0) throws Exception {
// TODO Auto-generated method stub
Map<String, Object> session = arg0.getInvocationContext().getSession();
User user = (User) session.get("user");
if (user == null) {
return Action.LOGIN;
}
return arg0.invoke();
}
}
7.在struts.xml文件中进行配置
<interceptors><!-- 该配置在package中 -->
<interceptor name="loginInterceptor"
class="Struts.interceptor.LoginInterceptor">
</interceptor>
</interceptors>
<action name="login" class="Struts.action.LoginInterceptor">
<result name="success" type="redirect">hello.do</result>
<result name="input">/login.jsp</result>
</action>
<action name="hello" class="Struts.action.HelloAction ">
<interceptor-ref name="loginInterceptor"></interceptor-ref>
<result name="success">/Hello.jsp</result>
<result name="login">/login.jsp</result>
</action>
在浏览器中输入hello.do后便不能进入Hello.jsp,直接跳到了登录页面,拦截成功
分享到:
相关推荐
Struts2自定义拦截器的配置是Struts2框架中一个非常重要的功能,它允许开发者在Action执行前后插入自定义的逻辑,以实现如权限验证、日志记录、性能监控等多种需求。以下是对标题和描述中涉及的知识点的详细说明: ...
自定义拦截器是Struts2框架中一个非常重要的特性,允许开发者扩展和定制框架的行为,以满足特定的业务需求。这篇博客文章可能是关于如何在Struts2中创建和使用自定义拦截器的教程。 在Struts2中,拦截器是基于责任...
简单的struts2自定义拦截器 很适合web初学者
本文将深入探讨Struts2的内建自定义拦截器及其配置。 首先,让我们理解什么是拦截器。拦截器是基于AOP(面向切面编程)思想的,它们在Action调用前后执行,形成一个拦截器链。每个拦截器都可以执行特定的任务,并且...
在深入探讨自定义拦截器之前,我们先理解一下Struts2拦截器的基本概念。 拦截器(Interceptor)是基于Java的动态代理机制实现的,它可以拦截用户的请求,对请求进行预处理,并且在Action执行后进行后处理。通过在...
本示例将聚焦于如何在Struts2中实现一个自定义拦截器。 首先,我们需要了解拦截器在Struts2中的作用。拦截器是AOP(面向切面编程)的一个核心概念,它允许开发者在动作执行前后插入额外的逻辑,如日志记录、权限...
在Struts2中,拦截器(Interceptor)扮演着至关重要的角色,它允许开发者在动作执行前后插入自定义逻辑,如日志记录、权限验证等。在本案例中,我们将深入探讨如何使用Struts2拦截器实现登录权限验证,同时结合...
自定义拦截器是Struts2框架中扩展功能的重要手段,让我们深入探讨如何在Struts2中实现自定义拦截器。 首先,创建一个Web项目是基础步骤,这可以通过IDE如Eclipse或IntelliJ IDEA来完成。确保你的项目包含了Struts2...
Struts2默认提供了一些拦截器来帮助处理这个问题,但如题目所述,由于性能考虑,项目组决定不使用Struts2的标签,因此需要自定义拦截器来实现防止重复提交的功能。 自定义拦截器的实现主要分为以下几个步骤: 1. *...
自定义拦截器需要实现`com.opensymphony.xwork2.interceptor.Interceptor`接口,然后在配置文件中声明并配置拦截器。例如,你可能想要创建一个日志拦截器,记录每个Action执行前后的信息。 6. **拦截器栈**: - ...
通过这个简单的自定义拦截器例子,我们可以看到Struts2拦截器的灵活性和实用性。它们使得业务逻辑和框架的控制层分离,降低了代码的耦合度,提高了代码的可复用性和可维护性。理解并熟练运用拦截器,对于提升Struts2...
在添加自定义拦截器时,可以将其插入到默认拦截器栈中,也可以创建自定义的拦截器栈。 ### 五、测试与优化 完成上述步骤后,你可以通过访问受保护的URL来测试拦截器的效果。如果用户未登录,系统应重定向到登录页面...
本篇将深入讲解如何在Struts2中自定义拦截器,并通过提供的源代码进行分析。 拦截器是Struts2框架的核心组件之一,它允许我们在请求到达Action之前或离开Action之后执行一些额外的操作,如日志记录、权限验证、性能...
Struts2是一个强大的Java web开发框架,它提供了一种组织和控制MVC(模型-视图-控制器)架构的方式...通过自定义拦截器和合理配置,我们可以实现诸如日志记录、事务管理、权限验证等多种业务需求,大大提升了开发效率。
在Struts2中,拦截器(Interceptor)是一个至关重要的概念,它允许开发者在动作执行前后插入自定义逻辑,比如权限检查、日志记录、性能监控等。本文将深入探讨如何使用Struts2实现拦截器,以及如何配置拦截器来实现...
Struts2自定义拦截器实现防止重复提交
本篇文章将深入探讨如何实现自定义拦截器及其在Struts2中的详细配置。 首先,我们来了解自定义拦截器的基本步骤: 1. **创建拦截器类**:自定义拦截器需要继承Struts2提供的`Interceptor`接口或实现`intercept()`...
在实际开发中,我们可以通过扩展Struts2的拦截器实现自定义功能。例如,你可以创建一个新的拦截器来实现登录检查、权限控制或性能监控,然后将其添加到拦截器栈中。通过理解和研究Struts2的拦截器源码,我们可以更好...