Structs2 中拦截器获取请求参数
前言
环境: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>
总结
ActionContext
的 getParameter
方法的返回类型是 Map<String,Object>
,并且对应键的值的类型 是String[]
类型。
Structs2 中拦截器获取请求参数的更多相关文章
- 说说struts2中拦截器的请求流程一(模拟大致流程)
本文可作为北京尚学堂struts2课程的学习笔记. 首先 什么是拦截器?拦截器能干什么? 拦截器,顾名思义就是拦截对象然后做操作的东西,至于是拦截谁?那自然是拦截action了.能做什么操作呢?你想让 ...
- java拦截器获取请求完整参数
public class OptLogAspect implements HandlerInterceptor { @Override public boolean preHandle(HttpSer ...
- 关于struts2拦截器获取页面参数
package InterCeptor; import java.util.Iterator;import java.util.Map;import java.util.Map.Entry;impor ...
- SpringBoot 拦截器获取http请求参数
SpringBoot 拦截器获取http请求参数-- 所有骚操作基础 目录 SpringBoot 拦截器获取http请求参数-- 所有骚操作基础 获取http请求参数是一种刚需 定义拦截器获取请求 为 ...
- 简单理解Struts2中拦截器与过滤器的区别及执行顺序
简单理解Struts2中拦截器与过滤器的区别及执行顺序 当接收到一个httprequest , a) 当外部的httpservletrequest到来时 b) 初始到了servlet容器 传递给一个标 ...
- springMVC(spring)+WebSocket案例(获取请求参数)
开发环境(最低版本):spring 4.0+java7+tomcat7.0.47+sockjs 前端页面要引入: <script src="http://cdn.jsdelivr.ne ...
- spring(spring mvc)整合WebSocket案例(获取请求参数)
开发环境(最低版本):spring 4.0+java7+tomcat7.0.47+sockjs 前端页面要引入: <script src="http://cdn.jsdelivr.ne ...
- shiro中拦截器机制
8.1 拦截器介绍 Shiro使用了与Servlet一样的Filter接口进行扩展:所以如果对Filter不熟悉可以参考<Servlet3.1规范>http://www.iteye.com ...
- ServletRequest HttpServletRequest 请求方法 获取请求参数 请求转发 请求包含 请求转发与重定向区别 获取请求头字段
ServletRequest 基本概念 JavaWeb中的 "Request"对象 实际为 HttpServletRequest 或者 ServletRequest, ...
随机推荐
- SAP MM 标准采购组织的分配对于寄售采购订单收货的影响
SAP MM 标准采购组织的分配对于寄售采购订单收货的影响 PO 4100004022 是一个寄售的采购订单, 采购组织是CSAS, 工厂代码SZSP.采购信息记录也是有的, MIGO试图对该采购订单 ...
- RationalRose 安装过程中无法加载镜像的问题
前情提要:本文主要以提供关键问题的解决思路为目的,境况紧急的,在核对好所遇问题与博主是否一致后,可以直接跳到最后看解决办法即可. 另外,本文重要部分采用不同色文字,加以强调. 任务:安装Rationa ...
- Windows内置安全主体
转自:https://blog.csdn.net/xcntime/article/details/51746148 导读:对于Windows内置安全主体特别需要注意的是:你无法创建.重命名和删除它们, ...
- 关于bootstrap报错
在使用bootstrap报错.报错的位置如下 if("undefined"==typeof jQuery)throw new Error("Bootstrap's Jav ...
- 分布式之 BASE理论
------------------------------珍惜眼前的学习机会,当你现在有机会学习各种经验时,一定要倍加珍惜.靠混日子是混不了一辈子的,许多过程都是不能省略的,至少学会这些经验可以让你 ...
- js导出excel表格并生成多sheet
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Scala设计模式
尽管Scala还有一些基于语言特性的设计模式,单本文还是着重于介绍大家所周知的经典设计模式,因为这些设计模式被认为是开发者之间交流的工具. 创建型设计模式 1.工厂方法模式 2.延迟加载模式 3.单例 ...
- java EE中的hello1.java及Annotation(注解)
一.Annotation(注解) 注解(Annotation)很重要,未来的开发模式都需要注解,注解是java.lang.annotation包,Annotation是从java5引入的,它提供一些不 ...
- Visual Studio高效实用的扩展工具、插件
说明: 对一个有想法的程序员来说,善于使用一款高效的开发工具是很重要的,今天给大家介绍的是宇宙第一IDE vs用起来很不错的开发工具,假如大家觉得不错也可以尝试的用用,毕竟对于我们这些一天一大半的时间 ...
- 0. VIM 系列 - 源码升级最新版本vim
卸载原来的vim: $ sudo apt-get remove --purge vim $ suso apt-get clean 下载最新版本源码: $ git clone https://githu ...