`
tom_seed
  • 浏览: 322142 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Struts自定义简单拦截器

阅读更多

自定义简单拦截器拦截用户非正常路径访问登录后的内容:

整个实例的过程: 登录页面(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自定义拦截器的配置是Struts2框架中一个非常重要的功能,它允许开发者在Action执行前后插入自定义的逻辑,以实现如权限验证、日志记录、性能监控等多种需求。以下是对标题和描述中涉及的知识点的详细说明: ...

    struts2 自定义拦截器.rar

    自定义拦截器是Struts2框架中一个非常重要的特性,允许开发者扩展和定制框架的行为,以满足特定的业务需求。这篇博客文章可能是关于如何在Struts2中创建和使用自定义拦截器的教程。 在Struts2中,拦截器是基于责任...

    struts2自定义拦截器

    简单的struts2自定义拦截器 很适合web初学者

    JSP 开发之Struts2内建自定义拦截器.docx

    本文将深入探讨Struts2的内建自定义拦截器及其配置。 首先,让我们理解什么是拦截器。拦截器是基于AOP(面向切面编程)思想的,它们在Action调用前后执行,形成一个拦截器链。每个拦截器都可以执行特定的任务,并且...

    Struts2自定义拦截器

    在深入探讨自定义拦截器之前,我们先理解一下Struts2拦截器的基本概念。 拦截器(Interceptor)是基于Java的动态代理机制实现的,它可以拦截用户的请求,对请求进行预处理,并且在Action执行后进行后处理。通过在...

    struts2的一个自定义拦截器小例子

    本示例将聚焦于如何在Struts2中实现一个自定义拦截器。 首先,我们需要了解拦截器在Struts2中的作用。拦截器是AOP(面向切面编程)的一个核心概念,它允许开发者在动作执行前后插入额外的逻辑,如日志记录、权限...

    使用struts2拦截器对登陆权限验证

    在Struts2中,拦截器(Interceptor)扮演着至关重要的角色,它允许开发者在动作执行前后插入自定义逻辑,如日志记录、权限验证等。在本案例中,我们将深入探讨如何使用Struts2拦截器实现登录权限验证,同时结合...

    struts2自定义拦截器.pdf

    自定义拦截器是Struts2框架中扩展功能的重要手段,让我们深入探讨如何在Struts2中实现自定义拦截器。 首先,创建一个Web项目是基础步骤,这可以通过IDE如Eclipse或IntelliJ IDEA来完成。确保你的项目包含了Struts2...

    Struts2自定义拦截器实现防止重复提交

    Struts2默认提供了一些拦截器来帮助处理这个问题,但如题目所述,由于性能考虑,项目组决定不使用Struts2的标签,因此需要自定义拦截器来实现防止重复提交的功能。 自定义拦截器的实现主要分为以下几个步骤: 1. *...

    自定义struts(实现拦截器)

    自定义拦截器需要实现`com.opensymphony.xwork2.interceptor.Interceptor`接口,然后在配置文件中声明并配置拦截器。例如,你可能想要创建一个日志拦截器,记录每个Action执行前后的信息。 6. **拦截器栈**: - ...

    struts2的自定义拦截器例子

    通过这个简单的自定义拦截器例子,我们可以看到Struts2拦截器的灵活性和实用性。它们使得业务逻辑和框架的控制层分离,降低了代码的耦合度,提高了代码的可复用性和可维护性。理解并熟练运用拦截器,对于提升Struts2...

    struts2 用拦截器 实现用户权限登录

    在添加自定义拦截器时,可以将其插入到默认拦截器栈中,也可以创建自定义的拦截器栈。 ### 五、测试与优化 完成上述步骤后,你可以通过访问受保护的URL来测试拦截器的效果。如果用户未登录,系统应重定向到登录页面...

    自定义拦截器struts2源代码

    本篇将深入讲解如何在Struts2中自定义拦截器,并通过提供的源代码进行分析。 拦截器是Struts2框架的核心组件之一,它允许我们在请求到达Action之前或离开Action之后执行一些额外的操作,如日志记录、权限验证、性能...

    Struts2拦截器及其用法详细说明

    Struts2是一个强大的Java web开发框架,它提供了一种组织和控制MVC(模型-视图-控制器)架构的方式...通过自定义拦截器和合理配置,我们可以实现诸如日志记录、事务管理、权限验证等多种业务需求,大大提升了开发效率。

    struts2实现拦截器、

    在Struts2中,拦截器(Interceptor)是一个至关重要的概念,它允许开发者在动作执行前后插入自定义逻辑,比如权限检查、日志记录、性能监控等。本文将深入探讨如何使用Struts2实现拦截器,以及如何配置拦截器来实现...

    Struts2自定义拦截器实现防止重复提交.pdf

    Struts2自定义拦截器实现防止重复提交

    自定义拦截器的实现以及拦截器的详细配置

    本篇文章将深入探讨如何实现自定义拦截器及其在Struts2中的详细配置。 首先,我们来了解自定义拦截器的基本步骤: 1. **创建拦截器类**:自定义拦截器需要继承Struts2提供的`Interceptor`接口或实现`intercept()`...

    Struts2拦截器源码

    在实际开发中,我们可以通过扩展Struts2的拦截器实现自定义功能。例如,你可以创建一个新的拦截器来实现登录检查、权限控制或性能监控,然后将其添加到拦截器栈中。通过理解和研究Struts2的拦截器源码,我们可以更好...

Global site tag (gtag.js) - Google Analytics