博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jsf学习笔记-拦截器
阅读量:4587 次
发布时间:2019-06-09

本文共 1779 字,大约阅读时间需要 5 分钟。

package com.tocken.listener;

import java.util.Map;

import javax.faces.context.ExternalContext;

import javax.faces.context.FacesContext;
import javax.faces.event.PhaseEvent;
import javax.faces.event.PhaseId;
import javax.faces.event.PhaseListener;
import javax.servlet.http.HttpSession;

public class TockenPhaseListener implements PhaseListener {

/**

*
*/
private static final long serialVersionUID = 1L;

@Override

public void afterPhase(PhaseEvent pe) {
if(pe.getPhaseId()==PhaseId.INVOKE_APPLICATION ){
System.out.println("action逻辑处理之后要做的事");
FacesContext facesContext = pe.getFacesContext();
ExternalContext context =facesContext.getExternalContext();
HttpSession session = (HttpSession) context.getSession(true);
Map map = context.getRequestParameterMap();
String tockenName=map.get("tockenName").toString();
session.removeAttribute(tockenName);

}

}

@Override

public void beforePhase(PhaseEvent pe) {
if(pe.getPhaseId()==PhaseId.APPLY_REQUEST_VALUES ){
System.out.println("action逻辑处理之前要做的事");
//把session里的值取出来比较
FacesContext facesContext = pe.getFacesContext();
ExternalContext context =facesContext.getExternalContext();
HttpSession session = (HttpSession) context.getSession(true);
Map map = context.getRequestParameterMap();
String tockenName=map.get("tockenName").toString();
String tockenValue= map.get("tockenValue").toString();
if(session.getAttribute(tockenName)==null){
session.setAttribute(tockenName, tockenValue);
}
else{
String tockenVar = session.getAttribute(tockenName).toString();
if(tockenValue.equals(tockenVar)){
System.out.println("你被拦截了");
facesContext.renderResponse();
}
}
}
}

@Override

public PhaseId getPhaseId() {
return PhaseId.ANY_PHASE;
}

}

写的通过PhaseListener 的重复提交拦截器,可惜效果不好,当作纪念吧

转载于:https://www.cnblogs.com/cxyzl/archive/2012/08/06/2625532.html

你可能感兴趣的文章
HTTP头的Expires与Cache-control
查看>>
ASIHTTPRequest 详解 例子
查看>>
小L 的二叉树(洛谷 U4727)
查看>>
从Azure上构建Windows应用程序映像
查看>>
并发系统实践1
查看>>
【beta】Scrum站立会议第6次....11.8
查看>>
java XML解析-我们到底能走多远系列(12)
查看>>
多线程并发库
查看>>
Props 和 IActorRef 3
查看>>
转载 页面加载完后执行js代码
查看>>
远程SSH连接服务与基本排错
查看>>
浏览器渲染页面原理
查看>>
VC dumpbin dll 导出 lib
查看>>
【Lua】Lua的几点优化原则
查看>>
兼容IE8以下,获取className节点的元素(document.getElementsByClassName()兼容写法)。
查看>>
安装apache
查看>>
git链接远程库
查看>>
【C#利用后台动态加载数据】Winform“防界面卡死”
查看>>
python实现zabbix_sender的socket通信代码样例
查看>>
Oracle—RMAN备份(一)
查看>>