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, ...
随机推荐
- 从后台servlet中,获取jsp页面输入的值,来删除用户一行信息
后台servlet设置 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws S ...
- 《iOS 11 安全区域适配总结》
本文来自于腾讯Bugly公众号(weixinBugly),作者:sonialiu,未经作者同意,请勿转载,原文地址:http://mp.weixin.qq.com/s/W1_0VrchCO50owhJ ...
- Java面试题:Java中怎么样实现多线程
方法一:继承 Thread 类,覆盖方法 run(),我们在创建的 Thread 类的子类中重写 run() ,加入线程所要执行的代码即可. 下面是一个例子: public class MyThrea ...
- 模式识别笔记3-支持向量机SVM
1. 线性SVM 对两类点的划分问题,这里对比下逻辑回归和SVM的区别: 逻辑回归的思想是,将所有点到决策平面的距离作为损失来进行训练,目标是到决策平面的距离和最小 SVM的思想是,只关注支持向量(图 ...
- Java相关面试题总结+答案(三)
[多线程] 35. 并行和并发有什么区别? 并行:多个处理器或多核处理器同时处理多个任务.(是真正的物理上的同时发生) 并发:多个任务在同一个 CPU 核上,按细分的时间片轮流(交替)执行,从逻辑上来 ...
- Ubuntu16.04 部署安装Docker容器 & 注意事项
一.部署安装Docker容器 1.1 Ubuntu下安装 crul sudo apt install curl curl是利用URL语法在命令行方式下工作的开源文件传输工具.它被广泛应用在Unix.多 ...
- 『集群』002 Slithice 集群配置工具 的使用
Slithice 集群配置工具 的使用 Slithice集群配置工具 主界面 在测试 Slithice 的 Demo 中,我配置了 7个服务端: 一个 WCF 的 中央服务端: 两个 WCF 的 成员 ...
- Python编程从入门到实践笔记——变量和简单数据类型
Python编程从入门到实践笔记——变量和简单数据类型 #coding=gbk #变量 message_1 = 'aAa fff' message_2 = 'hart' message_3 = &qu ...
- C#属性标记Order执行顺序备忘录
部分Attribute有实现IOrderedFilter,其执行顺序机制例子: /// <summary> /// 密码修改 /// </summary> /// <pa ...
- js动态生成层方法 不懂得加QQ 2270312758
我们在WEB开发时,很多时候往往需要我们 JavaScript 来动态建立 html 元素,动态的设置相关的属性.比方说我们想要建立一个 div 层,则可以使用以下代码实现.一.直接建立 functi ...