前言

环境: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. SAP MM 标准采购组织的分配对于寄售采购订单收货的影响

    SAP MM 标准采购组织的分配对于寄售采购订单收货的影响 PO 4100004022 是一个寄售的采购订单, 采购组织是CSAS, 工厂代码SZSP.采购信息记录也是有的, MIGO试图对该采购订单 ...

  2. RationalRose 安装过程中无法加载镜像的问题

    前情提要:本文主要以提供关键问题的解决思路为目的,境况紧急的,在核对好所遇问题与博主是否一致后,可以直接跳到最后看解决办法即可. 另外,本文重要部分采用不同色文字,加以强调. 任务:安装Rationa ...

  3. Windows内置安全主体

    转自:https://blog.csdn.net/xcntime/article/details/51746148 导读:对于Windows内置安全主体特别需要注意的是:你无法创建.重命名和删除它们, ...

  4. 关于bootstrap报错

    在使用bootstrap报错.报错的位置如下 if("undefined"==typeof jQuery)throw new Error("Bootstrap's Jav ...

  5. 分布式之 BASE理论

    ------------------------------珍惜眼前的学习机会,当你现在有机会学习各种经验时,一定要倍加珍惜.靠混日子是混不了一辈子的,许多过程都是不能省略的,至少学会这些经验可以让你 ...

  6. js导出excel表格并生成多sheet

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. Scala设计模式

    尽管Scala还有一些基于语言特性的设计模式,单本文还是着重于介绍大家所周知的经典设计模式,因为这些设计模式被认为是开发者之间交流的工具. 创建型设计模式 1.工厂方法模式 2.延迟加载模式 3.单例 ...

  8. java EE中的hello1.java及Annotation(注解)

    一.Annotation(注解) 注解(Annotation)很重要,未来的开发模式都需要注解,注解是java.lang.annotation包,Annotation是从java5引入的,它提供一些不 ...

  9. Visual Studio高效实用的扩展工具、插件

    说明: 对一个有想法的程序员来说,善于使用一款高效的开发工具是很重要的,今天给大家介绍的是宇宙第一IDE vs用起来很不错的开发工具,假如大家觉得不错也可以尝试的用用,毕竟对于我们这些一天一大半的时间 ...

  10. 0. VIM 系列 - 源码升级最新版本vim

    卸载原来的vim: $ sudo apt-get remove --purge vim $ suso apt-get clean 下载最新版本源码: $ git clone https://githu ...