java请求action_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会话当中所获取到的注册信息为空时,将会返回到注册失

败的页面当中去.

登录界面:

pageEncoding="UTF-8"%>

Insert title here

进行用户的注册

进行用户的注销

当前用户名:${sessionScope.registerMessage }

注册界面:

pageEncoding="UTF-8"%>

注册页面

session.setAttribute("registerMessage","qingzhiyu");

if(session.getAttribute("registerMessage")!=null)

{

%>

注册成功

}

%>

进行登录

${sessionScope.registerMessage }

action类实例对象:

package com.action;

/**

*

* @author Administrator

*

*/

public class SystemAction {

private String username;

private String password;

/**

* @return the username

*/

public String getUsername() {

return username;

}

/**

* @param username the username to set

*/

public void setUsername(String username) {

this.username = username;

}

/**

* @return the password

*/

public String getPassword() {

return password;

}

/**

* @param password the password to set

*/

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;

/**

*

* @author Administrator

*自定义一个拦截器对象,该拦截器对象实现抽象类AbstractInterceptor拦截器对象

*/

public class MyInterceptor extends AbstractInterceptor{

/* (non-Javadoc)

* @see com.opensymphony.xwork2.interceptor.AbstractInterceptor#intercept(com.opensymphony.xwork2.ActionInvocation)

*对抽象类当中的方法进行重写操作。invocation(请求,调用)

*/

@Override

public String intercept(ActionInvocation invocation) throws Exception {

System.out.println("执行拦截方法");

//从session会话对象当中进行注册信息的获取操作

String registerMessage=(String) ActionContext.getContext().getSession().get("registerMessage");

/*Map session=(Map)invocation.getInvocationContext().getSession();

String registerMessage=(String) session.get("registerMessage");*/

System.out.println("registerMessage="+registerMessage);

if(registerMessage!=null)

{

//表明本次会话当中用户已经进行了信息的注册,所以拥有访问action类对象的权限,所以使用调度对象来调用action

//对象当中所指定的方法来实现业务的控制操作

/*类似于过滤器链对象当中的chain方法实现过滤权限的转交操作*/

String result=invocation.invoke();

System.out.println("invocation当中的返回值为:"+result);

return result;

}

else

{//表明当前请求访问action对象的用户并没有进行信息的注册所以不具有访问action对象的权限,所以返回失败页面

return "fail";

}

}

}

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

struts.xml配置文件

/p>

"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"

"http://struts.apache.org/dtds/struts-2.3.dtd">

/success.jsp

/login.jsp

/fail.jsp

登录成功界面:

pageEncoding="UTF-8"%>

Insert title here

登录成功

用户名:${username }

密码: ${password }

返回登录首页

注销登录

登录失败界面:

pageEncoding="UTF-8"%>

权限登录失败界面

您没有进行信息的注册,所以无权进行action对象的访问操作

进行用户注册

返回登录界面

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

pageEncoding="UTF-8"%>

进行用户信息的注销操作

session.removeAttribute("registerMessage");

String registerMessage=(String)session.getAttribute("registerMessage");

if(registerMessage==null)

{

%>

用户信息注销成功

}

%>

login

程序的运行结果:

登录界面

a7e47dbbccf62048c325402532858baa.png

注册界面

8c21ddb1feb6421120963fa5da759e52.png

登录成功界面:

00236de46370daed2fafdefefc9d86ec.png

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

8e708b4149bb271e61a0ac79e9d90b02.png

总结

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值