前言

环境:window 10,JDK 1.7,Tomcat 7

测试代码

package com.szxy.interceptor;

import java.util.Map;
import java.util.Map.Entry; import org.eclipse.jdt.internal.compiler.ast.SynchronizedStatement; import java.util.Set; import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
import com.szxy.pojo.User; /**
* 自定义拦截器
*
* 继承 AbstractInterceptor 类
* 重写 intercept 方法
*/
public class LoginInterceptor extends AbstractInterceptor{ @Override
public String intercept(ActionInvocation invocate) throws Exception {
System.out.println("使用登录拦截器...");
//获取上下文对象
ActionContext context = invocate.getInvocationContext();
// 获取请求参数
// 注意:获取的请求参数中的map的值是String[] 数组类型
Map<String, Object> map = context.getParameters(); /*for(Entry<String, Object> entry: map.entrySet()){
System.out.println(entry.getKey()+"\t"+((String[])entry.getValue())[0]);
}*/ String uname = ((String[])(map.get("user.uname")))[0];
String pwd = ((String[])(map.get("user.pwd")))[0];
String addr = ((String[])(map.get("user.addr")))[0];
/*System.out.println("uname:\t"+(uname!=""));*/
//判断请求参数是否为空
if(uname!=""&&pwd!=""&&addr!=""){
return invocate.invoke();//放行
}
System.out.println("信息填写有问题");
context.getSession().put("msgNull", "false");
return Action.LOGIN;
}
}

structs.xml 配置

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<!-- Struts2 配置文件的根元素 -->
<struts>
<package name="test" namespace="/" extends="struts-default">
<!-- 拦截器 -->
<interceptors>
<!-- 自定义拦截器 -->
<interceptor name="loginInterceptor" class="com.szxy.interceptor.LoginInterceptor"></interceptor>
<interceptor-stack name="loginStack">
<!--
一旦申请自定义拦截器,就不会自动使用默认拦截器。
若要使用,需要自己声明默认拦截器。
-->
<interceptor-ref name="defaultStack"></interceptor-ref>
<interceptor-ref name="loginInterceptor"></interceptor-ref>
</interceptor-stack>
</interceptors> <action name="login" class="com.szxy.action.UserAction">
<result name="success">/test.jsp</result>
<result name="error" type="redirect">/login.jsp</result>
<!-- 使用拦截器栏 -->
<interceptor-ref name="loginStack"></interceptor-ref>
<result name="login" type="redirect">/login.jsp</result>
</action>
</package>
</struts>

总结

ActionContextgetParameter 方法的返回类型是 Map<String,Object>,并且对应键的值的类型 是String[] 类型。

Structs2 中拦截器获取请求参数的更多相关文章

  1. 说说struts2中拦截器的请求流程一(模拟大致流程)

    本文可作为北京尚学堂struts2课程的学习笔记. 首先 什么是拦截器?拦截器能干什么? 拦截器,顾名思义就是拦截对象然后做操作的东西,至于是拦截谁?那自然是拦截action了.能做什么操作呢?你想让 ...

  2. java拦截器获取请求完整参数

    public class OptLogAspect implements HandlerInterceptor { @Override public boolean preHandle(HttpSer ...

  3. 关于struts2拦截器获取页面参数

    package InterCeptor; import java.util.Iterator;import java.util.Map;import java.util.Map.Entry;impor ...

  4. SpringBoot 拦截器获取http请求参数

    SpringBoot 拦截器获取http请求参数-- 所有骚操作基础 目录 SpringBoot 拦截器获取http请求参数-- 所有骚操作基础 获取http请求参数是一种刚需 定义拦截器获取请求 为 ...

  5. 简单理解Struts2中拦截器与过滤器的区别及执行顺序

    简单理解Struts2中拦截器与过滤器的区别及执行顺序 当接收到一个httprequest , a) 当外部的httpservletrequest到来时 b) 初始到了servlet容器 传递给一个标 ...

  6. springMVC(spring)+WebSocket案例(获取请求参数)

    开发环境(最低版本):spring 4.0+java7+tomcat7.0.47+sockjs 前端页面要引入: <script src="http://cdn.jsdelivr.ne ...

  7. spring(spring mvc)整合WebSocket案例(获取请求参数)

    开发环境(最低版本):spring 4.0+java7+tomcat7.0.47+sockjs 前端页面要引入: <script src="http://cdn.jsdelivr.ne ...

  8. shiro中拦截器机制

    8.1 拦截器介绍 Shiro使用了与Servlet一样的Filter接口进行扩展:所以如果对Filter不熟悉可以参考<Servlet3.1规范>http://www.iteye.com ...

  9. ServletRequest HttpServletRequest 请求方法 获取请求参数 请求转发 请求包含 请求转发与重定向区别 获取请求头字段

      ServletRequest 基本概念 JavaWeb中的 "Request"对象  实际为   HttpServletRequest  或者  ServletRequest, ...

随机推荐

  1. C# 打印PDF文档的10种方法

    操作PDF文档时,打印是常见的需求之一.针对不同的打印需求,可分多种情况来进行,如设置静默打印.指定打印页码范围和打印纸张大小.双面打印.黑白打印等等.经过测试,下面将对常见的几种PDF打印需求做一些 ...

  2. java接口与抽象类

    本片随笔讲讲java中接口与抽象类. 一,接口 1.什么是接口? 那在日常生活中接口是什么呢?就是两个对象之间进行连接的部分就是接口,就比如热水器与水管的接口一样,他可以确保不同的东西之间的顺利连接, ...

  3. springmvc重定向

    String success="07大吉大利25"; @RequestMapping("str") public String test1(){ return ...

  4. mysql7笔记----遍历节点所有子节点

    mysql遍历节点的所有子节点 DELIMITER // CREATE FUNCTION `getChildrenList`(rootId INT) ) BEGIN ); ); SET sTemp = ...

  5. 使用async await 封装 axios

    异步变同步: 厉害-- https://www.jianshu.com/p/4168efdc172b

  6. mysql中截取指定字符前后的字符串

    使用SUBSTRING_INDEX()函数substring_index(str,delim,count) str:要处理的字符串 delim:分隔符 count:分隔符计数 例子取出上述表中数组的第 ...

  7. .NET Core微服务之基于MassTransit实现数据最终一致性(Part 1)

    Tip: 此篇已加入.NET Core微服务基础系列文章索引 一.预备知识:数据一致性 关于数据一致性的文章,园子里已经有很多了,如果你还不了解,那么可以通过以下的几篇文章去快速地了解了解,有个感性认 ...

  8. ViewPagerWithRecyclerDemo【RecyclerView+ViewPager实现类似TabLayout+ViewPager效果】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 使用RecyclerView+ViewPager实现类似TabLayout+ViewPager效果. 效果图 使用步骤 一.项目组织 ...

  9. 学习笔记01(mybatis逆向工程)

    今天来看看一个常用的小功能,就是mybatis的逆向工程.(数据库是mysql) 什么是逆向工程呢?看名字就知道反方向的一个什么工程! 其实啊,如果是平常我们自己学习实践一些小项目的时候,应该是先瞎写 ...

  10. GetTypes Unable to load one or more of the requested types

    重新生成项目,更新反射类的dll文件