- 浏览: 70031 次
- 性别:
- 来自: 临沂
文章分类
最新评论
-
yuanke:
呵呵,早就解决了!
JDIC做了一个IE浏览器 -
lzj0470:
兄弟,解决了吗?我这几天,也是遇到这样的问题。指定JRE,不能 ...
JDIC做了一个IE浏览器 -
yefansiping:
这个问题在3.0里面解决了,可是我的这块还是出现这样的问题了, ...
from提交的数据到后台是乱码 -
treblesoftware:
STRUTS2还是很好用,很简单的,把它有些鸡胁功能去掉之后, ...
学struts2有感 -
ranLoD:
恰巧我最痛恨的就是struts自带标签怎么办了,<s:f ...
学struts2有感
在jsp开发中,我们经常使用过滤器(filter)来过滤权限,我做了一个简单的过滤器,代码如下:
(1)web.xml中加入:
<filter>
<filter-name>adminfilter</filter-name>
<filter-class>org.frank.filter.AdminFilter</filter-class>
<init-param>
<param-name>jspDirectAccess</param-name>
<param-value>login,/img/</param-value>
</init-param>
<init-param>
<param-name>forwardPage</param-name>
<param-value>/login.do</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>adminfilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
注意:jspDirectAccess,是定义不登录的时候允许访问的地址,比如登录页面、登录页面用到的图片等等,多个地址使用逗号分开。
forwardPage是定义跳转的页面。
<filter-mapping> 一般是声明在其他过滤器的前面,避免引起过滤器失效等其他异常。
(2)定义过滤器AdminFilter类:
package org.frank.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.seasar.struts.util.RequestUtil;
public class AdminFilter implements Filter {
private String access = "login";
private String forward = "/login";
private static final String[] SESSIONS = {"userInfoSessionDto"};
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest)arg0;
HttpServletResponse res = (HttpServletResponse) arg1;
HttpSession session = req.getSession(true);
String path = RequestUtil.getPath(req);
if(processDirectAccess(path)){
arg2.doFilter(arg0, arg1);
}else{
if(session==null || session.getAttribute(SESSIONS[0])==null || "".equals(session.getAttribute(SESSIONS[0]))){
req.getRequestDispatcher(forward).forward(arg0, arg1);
res.setHeader("Cache-Control","no-store");
res.setDateHeader("Expires",1000);
res.setHeader("Pragma","no-cache");
return;
}else{
arg2.doFilter(arg0, arg1);
}
}
}
public boolean processDirectAccess(String path){
if(path==null && "".equals(path)){
return false;
}
if(access!=null){
String[] accs = access.split(",");
for(String acc:accs){
if(path.lastIndexOf(acc + ".do") >=0 || path.lastIndexOf(acc) >=0){
return true;
}
}
}
return false;
}
@Override
public void init(FilterConfig arg0) throws ServletException {
this.access = arg0.getInitParameter("jspDirectAccess");
this.forward = arg0.getInitParameter("forwardPage");
}
}
(3)登录成功保存session
session.setAttribute("userInfoSessionDto", userInfoSessionDto);
注意:
session中存入的userInfoSessionDto要和AdminFilter类中的SESSIONS[0]的值对应。
(1)web.xml中加入:
<filter>
<filter-name>adminfilter</filter-name>
<filter-class>org.frank.filter.AdminFilter</filter-class>
<init-param>
<param-name>jspDirectAccess</param-name>
<param-value>login,/img/</param-value>
</init-param>
<init-param>
<param-name>forwardPage</param-name>
<param-value>/login.do</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>adminfilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
注意:jspDirectAccess,是定义不登录的时候允许访问的地址,比如登录页面、登录页面用到的图片等等,多个地址使用逗号分开。
forwardPage是定义跳转的页面。
<filter-mapping> 一般是声明在其他过滤器的前面,避免引起过滤器失效等其他异常。
(2)定义过滤器AdminFilter类:
package org.frank.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.seasar.struts.util.RequestUtil;
public class AdminFilter implements Filter {
private String access = "login";
private String forward = "/login";
private static final String[] SESSIONS = {"userInfoSessionDto"};
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest)arg0;
HttpServletResponse res = (HttpServletResponse) arg1;
HttpSession session = req.getSession(true);
String path = RequestUtil.getPath(req);
if(processDirectAccess(path)){
arg2.doFilter(arg0, arg1);
}else{
if(session==null || session.getAttribute(SESSIONS[0])==null || "".equals(session.getAttribute(SESSIONS[0]))){
req.getRequestDispatcher(forward).forward(arg0, arg1);
res.setHeader("Cache-Control","no-store");
res.setDateHeader("Expires",1000);
res.setHeader("Pragma","no-cache");
return;
}else{
arg2.doFilter(arg0, arg1);
}
}
}
public boolean processDirectAccess(String path){
if(path==null && "".equals(path)){
return false;
}
if(access!=null){
String[] accs = access.split(",");
for(String acc:accs){
if(path.lastIndexOf(acc + ".do") >=0 || path.lastIndexOf(acc) >=0){
return true;
}
}
}
return false;
}
@Override
public void init(FilterConfig arg0) throws ServletException {
this.access = arg0.getInitParameter("jspDirectAccess");
this.forward = arg0.getInitParameter("forwardPage");
}
}
(3)登录成功保存session
session.setAttribute("userInfoSessionDto", userInfoSessionDto);
注意:
session中存入的userInfoSessionDto要和AdminFilter类中的SESSIONS[0]的值对应。
发表评论
-
30分钟学会如何使用Shiro
2017-07-21 17:37 419本篇内容大多总结自张开涛的《跟我学Shiro》原文地址:ht ... -
Spring+Quartz实现定时从FTP服务器读取文件并存入Oracel数据库
2017-07-17 17:32 579... -
java收集邮箱
2013-10-24 12:51 622java收集群邮箱,首先登陆自己的QQ 然后直接访问:8403 ... -
谁能帮我看一下仿这个网站多少钱
2013-10-23 12:14 522最近挺无聊的,想弄个网站,谁能帮我看一下仿这个网站多少钱? w ... -
MyEclipse9.0正式版的破解和激活方法(注册机)
2013-06-13 12:46 10MyEclipse 9.0的到期了很头 ... -
网址导航代码
2013-02-24 21:04 845本代码是本人精心为网友准备的,热门网址导航站网罗精彩实用网址, ... -
html删除a标签并且替换网址
2013-01-09 17:06 1081做网站开发的时候,复制样式会产生网址,加入说我们想批量替换,下 ... -
sa_framework,s2-tiger,s2-extension2.4 日文的api
2011-12-09 10:40 1032Seasar框架中常用的sa_framework,s2-t ... -
学struts2有感
2009-07-26 19:25 4182看到struts2.x,原以为是struts ... -
ejb中spring代理struts,action请求找不到,can not instance for path
2009-07-13 11:45 1497我在tomcat上struts集成spring没有问题, 但在 ... -
延迟加载 出问题了,有那位见过这个异常?
2009-04-08 17:18 2212我把 lazy 设 为 false 不行, 在web.x ... -
XLoadTree 基于AJAX + XML动态加载的JS树组件的文档
2009-04-08 10:39 2140最近 刚开始 树节点的加载,看了 一篇 文章不错,转转过来共享 ... -
strut2配置spring 用c3p0.ComboPooledDataSource 出现连接错误
2009-04-06 09:09 2007昨天 还可以了,今天 就不能连接了,报一下异常: HTTP S ... -
基于javaWEB学生管理系统需求分析
2009-03-11 19:53 1295这是我 做毕业设计的文档,包含 需求分析,结构设计,模块设计, ... -
JDIC做了一个IE浏览器
2008-09-19 17:04 3330有谁用过JDIC的,我们现在用JDIC做了一个IE浏览器,在E ... -
getHibernateTemplate.get()返回null
2008-08-25 14:15 3927[color=blue]Exception: HTTP St ... -
struts2 配置 exception求救
2008-08-16 10:38 2710我按要求配置,出现exception,没有找出来是什么原因,有 ... -
from提交的数据到后台是乱码
2008-08-13 16:55 3088请高手帮忙,在火狐浏览器插入中文没有问题,在遨游或IE就出现乱 ... -
ext 树状结构组成json格式
2008-08-05 09:41 3320public JSONArray loadOasys() { ... -
Ask help for lombox coonect to oracle10i
2008-04-27 07:23 1350当我配置好了后,还是报以下exception java.sq ...
相关推荐
* $filter 过滤器,是angularJs中用来处理数据以更好的方式展示给我用户。比如格式化日期,转换大小写等等。 * 过滤器即有内置过滤器也支持自定义过滤器。内置过滤器很多,可以百度。关键是如何使用: * 1.在HTML中...
filter过滤器在java的用法,配置文件怎样写,一看就明白
SpringBoot的filter过滤器 一、过滤器的作用和概述 1.1 简述 1.2 使用场景 二、自定义过滤的两种方式 2.1 第一种方式 2.1.1 启动类增加注解@ServletComponentScan 2.1.2 定义一个filter类 2.1.3. 测试 2.2 第二种...
简单过滤器防止恶意攻击 java中的用法
Filter(过滤器)简介和工作原理
配置Filter过滤器处理JSP中文乱码 参考Tomcat服务器目录webapps的examples示例 简单配置步骤: 1.在项目web.xml文件添加过滤器标记<filter>和<filter-mapping>; 2.实现过滤器代码; 3.对Tomcat服务器conf目录里的...
过滤器 是一段录制的录像 过滤器过滤器过滤器过滤器过滤器过滤器过滤器
Filter过滤器(分类讨论,分类讲解) 详情请咨询,我遇上对的人
Filter过滤器的概念和使用
主要介绍了zf框架的Filter过滤器使用示例,代码中有注释,需要的朋友可以参考下
这是写的filter过滤器的使用,在maven项目和在springboot项目里面都能使用,并且有使用方法。
filter 过滤器 解释 MultipartHttpServletRequest表单
非常实用的过滤器,自己在网上找了很多资料,总结了一套切实可用的filter文档,希望能帮助你,完成你的工作
Filter过滤器与Interceptor拦截器有很多相似
jsp filter 过滤器判断用户是否登录的一个demo,可按照里面说明来完成
servlet,filter,过滤器技术servlet,filter,过滤器技术
ffmpeg filter过滤器基础实例以及全面解析,pdf版,内容丰富,便于理解
自制布隆过滤器,采用八种不同哈希函数来获取随机数,错误率低
Filter 的基本功能是对 Servlet 容器调用 Servlet 的过程进行拦截,从而在 Servlet 进行响应处理的前后实现一些特殊的功能。 在 Servlet API 中定义了三个接口类来开供开发人员编写 Filter 程序:Filter, ...