栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Struts2实现对action请求对象的拦截操作方法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Struts2实现对action请求对象的拦截操作方法

Struts2的核心功能是action,对于开发人员来说,使用Struts2主要就是编写action,action类通常都要实现com.opensymphony.xwork2.Action接口,并实现该接口中的execute()方法。

该方法如下:

   public String execute() throws Exception

   Struts2并不是要求所有编写的action类都要实现Action接口,也可以直接编写一个普通的Java类作为action,只要实现一个返回类型为String的无参的public方法即可:

    public String  xxx()

步入正文:

建立一个拦截器对象,当有客户端的请求要访问action对象的时候将会触发当前的拦截器对象,来对当前的请求数据进行过滤操作。

建立一个登录界面用于进行用户名和密码的输入操作,当登录界面当中的表单对象当中的数据提交到action类对象之前,会被拦截器对象进行拦截操作,拦截器对象会从session对象当中进行注册信息的获取操作,通过注册信息registerMessage是否为空来判断当前用户是否有权限对action类对象进行访问操作,如果registerMessage为null,则当前用户必须要先进行用户信息的注册操作,在注册页面当中将registerMessage属性变量添加到session对象当中去然后才能够去进行登录操作,访问action对象。
建立一个拦截器对象用于实现对所有访问action对象的请求数据进行拦截操作。

1:建立一个拦截器对象MyInterceptor该对象继承了抽象拦截器对象类。

2:在建立了拦截器对象之后要想进行使用首先要对该拦截器对象进行注册操作,具体的方式

是在struts.xml当中使用interceptors标签来实现拦截器的注册操作



3:要将当前所注册的拦截器对象与指定的action类进行绑定操作,所以用interceptor

标签对象来将其所在的action类与指定的拦截器对象进行绑定操作.

4:注意如果只绑定指定的拦截器对象就会对struts-default.xml对象当中所默认的拦截

器对象进行覆盖操作,在默认的对象当中所绑定的是一个拦截器栈,该栈当中有二十多个拦截器对

象,所以必须要对原来struts-default.xml文件当中的拦截器进行重新绑定操作.

在自定义的拦截器对象当中实现对action对象进行权限拦截操作:

用户要想实现登录来访问action对象,必须要先注册一个registerMessage信息到session对象当中才行,否则在请求访问

action对象的时候,将会被拦截器对象进行拦截操作,发现当前的session会话当中所获取到的注册信息为空时,将会返回到注册失

败的页面当中去.

登录界面:

<%@ page language="java" contentType="text/html; charset=UTF-8" 
 pageEncoding="UTF-8"%> 
<%@ taglib uri="/struts-tags" prefix="s"%> 
 
 
 
 
Insert title here 
 
 
  
 
 

注册界面:

<%@ page language="java" contentType="text/html; charset=UTF-8" 
 pageEncoding="UTF-8"%> 
 
 
 
 
注册页面 
 
 
 <% 
  session.setAttribute("registerMessage","qingzhiyu"); 
  if(session.getAttribute("registerMessage")!=null) 
  { 
   %> 
    注册成功 
   <% 
  } 
 %> 
  
 进行登录 
 ${sessionScope.registerMessage } 
 
 

action类实例对象:

package com.action; 
 
public class SystemAction { 
 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; 
 } 
 
 public String execute() 
 { 
  System.out.println("已经进入到了系统action类当中"); 
  return "success"; 
 } 
} 

拦截器对象:

package com.interceptots; 
import java.util.Map; 
import com.opensymphony.xwork2.ActionContext; 
import com.opensymphony.xwork2.ActionInvocation; 
import com.opensymphony.xwork2.interceptor.AbstractInterceptor; 
 
public class MyInterceptor extends AbstractInterceptor{ 
 
  
 @Override 
 public String intercept(ActionInvocation invocation) throws Exception { 
  System.out.println("执行拦截方法"); 
 //从session会话对象当中进行注册信息的获取操作 
  String registerMessage=(String) ActionContext.getContext().getSession().get("registerMessage"); 
   
  System.out.println("registerMessage="+registerMessage); 
  if(registerMessage!=null) 
  { 
   //表明本次会话当中用户已经进行了信息的注册,所以拥有访问action类对象的权限,所以使用调度对象来调用action 
//对象当中所指定的方法来实现业务的控制操作   
      
   String result=invocation.invoke(); 
   System.out.println("invocation当中的返回值为:"+result); 
   return result; 
  } 
  else 
  {//表明当前请求访问action对象的用户并没有进行信息的注册所以不具有访问action对象的权限,所以返回失败页面 
   return "fail"; 
  } 
 }  
} 

拦截器对象要想使用,必须要在配置文件当中进行配置操作之后才会起作用

struts.xml配置文件

 
 
 
  
  
   
    
   
   
   /success.jsp 
   /login.jsp 
   /fail.jsp 
    
   
    
   
  
 

登录成功界面:

<%@ page language="java" contentType="text/html; charset=UTF-8" 
 pageEncoding="UTF-8"%> 
<%@ taglib uri="/struts-tags" prefix="s" %> 
 
 
 
 
Insert title here 
 
 
 登录成功 
 用户名:${username } 
 
密码: ${password }
返回登录首页 注销登录

登录失败界面:

<%@ page language="java" contentType="text/html; charset=UTF-8" 
 pageEncoding="UTF-8"%> 
 
 
 
 
权限登录失败界面 
 
 
 您没有进行信息的注册,所以无权进行action对象的访问操作 
 进行用户注册 
 返回登录界面 
 
 

进行当前用户信息的注销界面:

<%@ page language="java" contentType="text/html; charset=UTF-8" 
 pageEncoding="UTF-8"%> 
 
 
 
 
进行用户信息的注销操作 
 
 
 <% 
  session.removeAttribute("registerMessage"); 
  String registerMessage=(String)session.getAttribute("registerMessage"); 
  if(registerMessage==null) 
  { 
   %> 
    用户信息注销成功 
   <% 
  } 
 %> 
 login 
 
 

程序的运行结果:

登录界面

注册界面

登录成功界面:

如果没有进行用户注册直接进行登录操作

总结

以上所述是小编给大家介绍的Struts2实现对action请求对象的拦截操作方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对考高分网网站的支持!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/143351.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号