当前位置:首页 > 开发 > 行业应用 > 正文

struts2第三回:自定以拦截器

发表于: 2011-10-13   作者:bingyingao   来源:转载   浏览次数:
摘要: 实现一个拦截器并调用。 ============下面是LoginIntercepter.java代码=============== package com; import java.util.Map; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.Actio
实现一个拦截器并调用。
============下面是LoginIntercepter.java代码===============
package com;

import java.util.Map;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;

public class LoginIntercepter extends AbstractInterceptor {

	/**
	 * 常见问题:进过拦截器后,action里面取不到表单的值了。
	 * 是因为xml中没有引入默认的defaultStack
	 * 
	 */
	public String intercept(ActionInvocation arg0) throws Exception {
		System.out.println("进入拦截器:LoginIntercepter");
		String requestUrl=ServletActionContext.getRequest().getRequestURI();
        System.out.println("url:"+requestUrl);
		Map session = arg0.getInvocationContext().getSession();
	     String loginId = (String) session.get("loginId");	     
	     if (!(requestUrl.contains("!doLogin")||loginId!=null)) {
	    //未登录,返回重新登录	
	    	return "login";
			
		}
		return arg0.invoke();
	}

}



============下面是LoginIntercepter.java代码===============
	<package name="abc" extends="struts-default">
		<!--自己写一个拦截器demo -->
		<interceptors>
			<interceptor name="loginCheck" class="com.LoginIntercepter"></interceptor>
		</interceptors>
		<global-results>
			<result name="success">/success.jsp</result>
		</global-results>

		<!-- 标签测试类 -->
		<action name="tagTest" class="com.StrutsTagTestAction">
		
			<result name="login">/login.jsp</result>
			<interceptor-ref name="loginCheck" /><!--配置登录验证拦截器-->
			<interceptor-ref name="defaultStack" /><!--如果自己加入了其他拦截器,则必须手动添加此拦截器,否则在action中会取不到表单的值-->
		</action>
</package>
</struts>


============login.jsp中代码=================
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
    
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body >
<form action="tagTest!doLogin.action" method="post">
<!-- 文本框,密码框的使用 -->
userName:<input type="text" name="userName"><br/>
passWord:<input type="password" name="passWord" /><br/>

<input type="submit"e value="login">
<form>
</body>
</html>


==================action中得代码=======================
	public String doLogin() {
        HttpServletRequest requst=ServletActionContext.getRequest();
        requst.getSession().setAttribute("loginId","abing");
        String content=requst.getParameter("content");
		System.out.println("userName:" + userName + "\tpassWord:" + passWord);
			
		return SUCCESS;
	}

这样便实现了一个简单的登录验证拦截器

struts2第三回:自定以拦截器

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
1.struts2 已有拦截器的使用 官方文档解释:拦截器是动态拦截Action调用的对象,拦截器提供一种机制
【Struts2】☆★之Struts2自定义拦截器验证登录 在实际项目中我们的方法都是需要验证登录状态的,所
本文来自:曹胜欢博客专栏。转载请注明出处:http://blog.csdn.net/csh624366188 在上一篇博客中,
本文来自:曹胜欢博客专栏。转载请注明出处:http://blog.csdn.net/csh624366188 在上一篇博客中,
本文来自:曹胜欢博客专栏。转载请注明出处:http://blog.csdn.net/csh624366188 在上一篇博客中,
1. 自定义拦截器 首先要实现一个接口:com.opensymphony.xwork2.interceptor.Interceptor接口 重写
downpour 写道 拦截器是AOP中的概念,它本身是一段代码,可以通过定义“织入点”,来指定拦截器的代
看到网上很多介绍关于拦截器的文章,感觉都不错,但是都没有很详细全面的介绍,所以我就博众家之长
1、Struts2实现原理: 当请求到达Struts 2的ServletDispatcher时,Struts 2会查找配置文件,并根据
如何使用struts2拦截器,或者自定义拦截器。特别注意,在使用拦截器的时候,在Action里面必须最后一
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号