前言

环境: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. Oracle 分页查询与数据去重

    1.rownum字段 Oracle下select语句每个结果集中都有一个伪字段(伪列)rownum存在.rownum用来标识每条记录的行号,行号从1开始,每次递增1.rownum是虚拟的顺序值,前提是 ...

  2. Java开发笔记(八十九)缓存字节I/O流

    文件输出流FileOutputStream跟FileWriter同样有个毛病,每次调用write方法都会直接写到磁盘,使得频繁的写操作性能极其低下.正如FileWriter搭上了缓存兄弟Buffere ...

  3. TCP的三次握手与四次挥手

    TCP的三次握手与四次挥手 一.TCP(Transmission Control Protocol 传输控制协议) TCP是面向对连接,可靠的进程到进程通信的协议 TCP是提供全双工服务,即数据可在同 ...

  4. 将展示内容(div、iframe)放在Expand控件中

    Expand是ArcGIS JavaScript API 4.3推出的一个widget(控件),用于承载一个HTML DOM元素,可以把一个自己编写的div或者是一个其他的Esri widget控件放 ...

  5. Redis- 简单操作命令

    1.进入. 退出 redis-cli exit 2.五种类型: 字符串: 字符串基本操作: 设置: SET key value 获取: GET key 多重赋值: MSET k1 v1 k2 v2 . ...

  6. 为什么在STM32F429工程配置中需要预先定义USE_STDPERIPH_DRIVER和STM32F429_439xx?

    如图: 1.查找USE_STDPERIPH_DRIVER,发现这个宏出现在stm32f4xx.h头文件中,并且有如下代码: 也就是说,通过已经定义了USE_STDPERIPH_DRIVER宏加载stm ...

  7. 【转载】Win7利用任务计划程序实现定时关机

    在Win7.Win8或者Win10系统中,如果要实现电脑的自动定时关机,不需要借用任何的外部程序,直接系统自带的任务计划程序即可实现电脑的定时自动关机,支持设定电脑关机时间以及执行频率次数,如固定每天 ...

  8. 转://IO的基础概念

    磁盘IO.网络IO 对磁盘的每个IO就是在磁盘与一些RAM单元之间相互传送一些相邻的扇区的内容.   磁盘IO延时(IO Latency):         也称为IO响应时间,是指内核对磁盘发出一个 ...

  9. ==运算符和equals()方法的区别

    Java语言程序中判断两个变量是否相等有两种方式:一是运用==运算符,二是运用equals方法. 1. ==运算符 对于==运算符来说,如果两个变量是基本类型的,并且是数值类型,则只要它们的值相等,就 ...

  10. 自学python的日记分享

    2019.4.22登记 课堂笔记 2019.4.8 在windows环境下,用python写出第一个程序“hello world” print("Hello World!!!") ...