前言

环境:window 10,JDK 1.7,Tomcat 7

测试代码

  1. package com.szxy.interceptor;
  2. import java.util.Map;
  3. import java.util.Map.Entry;
  4. import org.eclipse.jdt.internal.compiler.ast.SynchronizedStatement;
  5. import java.util.Set;
  6. import com.opensymphony.xwork2.Action;
  7. import com.opensymphony.xwork2.ActionContext;
  8. import com.opensymphony.xwork2.ActionInvocation;
  9. import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
  10. import com.szxy.pojo.User;
  11. /**
  12. * 自定义拦截器
  13. *
  14. * 继承 AbstractInterceptor 类
  15. * 重写 intercept 方法
  16. */
  17. public class LoginInterceptor extends AbstractInterceptor{
  18. @Override
  19. public String intercept(ActionInvocation invocate) throws Exception {
  20. System.out.println("使用登录拦截器...");
  21. //获取上下文对象
  22. ActionContext context = invocate.getInvocationContext();
  23. // 获取请求参数
  24. // 注意:获取的请求参数中的map的值是String[] 数组类型
  25. Map<String, Object> map = context.getParameters();
  26. /*for(Entry<String, Object> entry: map.entrySet()){
  27. System.out.println(entry.getKey()+"\t"+((String[])entry.getValue())[0]);
  28. }*/
  29. String uname = ((String[])(map.get("user.uname")))[0];
  30. String pwd = ((String[])(map.get("user.pwd")))[0];
  31. String addr = ((String[])(map.get("user.addr")))[0];
  32. /*System.out.println("uname:\t"+(uname!=""));*/
  33. //判断请求参数是否为空
  34. if(uname!=""&&pwd!=""&&addr!=""){
  35. return invocate.invoke();//放行
  36. }
  37. System.out.println("信息填写有问题");
  38. context.getSession().put("msgNull", "false");
  39. return Action.LOGIN;
  40. }
  41. }

structs.xml 配置

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE struts PUBLIC
  3. "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
  4. "http://struts.apache.org/dtds/struts-2.3.dtd">
  5. <!-- Struts2 配置文件的根元素 -->
  6. <struts>
  7. <package name="test" namespace="/" extends="struts-default">
  8. <!-- 拦截器 -->
  9. <interceptors>
  10. <!-- 自定义拦截器 -->
  11. <interceptor name="loginInterceptor" class="com.szxy.interceptor.LoginInterceptor"></interceptor>
  12. <interceptor-stack name="loginStack">
  13. <!--
  14. 一旦申请自定义拦截器,就不会自动使用默认拦截器。
  15. 若要使用,需要自己声明默认拦截器。
  16. -->
  17. <interceptor-ref name="defaultStack"></interceptor-ref>
  18. <interceptor-ref name="loginInterceptor"></interceptor-ref>
  19. </interceptor-stack>
  20. </interceptors>
  21. <action name="login" class="com.szxy.action.UserAction">
  22. <result name="success">/test.jsp</result>
  23. <result name="error" type="redirect">/login.jsp</result>
  24. <!-- 使用拦截器栏 -->
  25. <interceptor-ref name="loginStack"></interceptor-ref>
  26. <result name="login" type="redirect">/login.jsp</result>
  27. </action>
  28. </package>
  29. </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. 从后台servlet中,获取jsp页面输入的值,来删除用户一行信息

    后台servlet设置 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws S ...

  2. 《iOS 11 安全区域适配总结》

    本文来自于腾讯Bugly公众号(weixinBugly),作者:sonialiu,未经作者同意,请勿转载,原文地址:http://mp.weixin.qq.com/s/W1_0VrchCO50owhJ ...

  3. Java面试题:Java中怎么样实现多线程

    方法一:继承 Thread 类,覆盖方法 run(),我们在创建的 Thread 类的子类中重写 run() ,加入线程所要执行的代码即可. 下面是一个例子: public class MyThrea ...

  4. 模式识别笔记3-支持向量机SVM

    1. 线性SVM 对两类点的划分问题,这里对比下逻辑回归和SVM的区别: 逻辑回归的思想是,将所有点到决策平面的距离作为损失来进行训练,目标是到决策平面的距离和最小 SVM的思想是,只关注支持向量(图 ...

  5. Java相关面试题总结+答案(三)

    [多线程] 35. 并行和并发有什么区别? 并行:多个处理器或多核处理器同时处理多个任务.(是真正的物理上的同时发生) 并发:多个任务在同一个 CPU 核上,按细分的时间片轮流(交替)执行,从逻辑上来 ...

  6. Ubuntu16.04 部署安装Docker容器 & 注意事项

    一.部署安装Docker容器 1.1 Ubuntu下安装 crul sudo apt install curl curl是利用URL语法在命令行方式下工作的开源文件传输工具.它被广泛应用在Unix.多 ...

  7. 『集群』002 Slithice 集群配置工具 的使用

    Slithice 集群配置工具 的使用 Slithice集群配置工具 主界面 在测试 Slithice 的 Demo 中,我配置了 7个服务端: 一个 WCF 的 中央服务端: 两个 WCF 的 成员 ...

  8. Python编程从入门到实践笔记——变量和简单数据类型

    Python编程从入门到实践笔记——变量和简单数据类型 #coding=gbk #变量 message_1 = 'aAa fff' message_2 = 'hart' message_3 = &qu ...

  9. C#属性标记Order执行顺序备忘录

    部分Attribute有实现IOrderedFilter,其执行顺序机制例子: /// <summary> /// 密码修改 /// </summary> /// <pa ...

  10. js动态生成层方法 不懂得加QQ 2270312758

    我们在WEB开发时,很多时候往往需要我们 JavaScript 来动态建立 html 元素,动态的设置相关的属性.比方说我们想要建立一个 div 层,则可以使用以下代码实现.一.直接建立 functi ...