导航:首页 > 净水问答 > 登录超时过滤器filter

登录超时过滤器filter

发布时间:2021-11-23 01:46:10

『壹』 filter过滤器配置如何不过滤一些页面

直接添加多个文件映射啊,为每个需要进行过滤的文件都写个映射标签

『贰』 jsp+servlet中session失效后跳转到登录页面 ,用过滤器filter来写,希望能有具体步骤和注释

public class SsFilter implements Filter {
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse resp = (HttpServletResponse) response;
HttpSession session = req.getSession();
if (session.getAttribute("user") == null) {
resp.sendRedirect("/index.jsp");
return;
}
chain.doFilter(request, response);
}
@Override
public void init(FilterConfig arg0) throws ServletException {
}
}

『叁』 判断用户登录是用springmvc 拦截器还是filter

在struts2中用过filter过滤器,在springmvc中还有拦截器,它们都能过滤请求,但是到底有什么区别呢?
一、定义

拦截器 :是在面向切面编程的就是在你的service或者一个方法,前调用一个方法,或者在方法后调用一个方法比如动态代理就是拦截器的简单实现,在你调用方法前打印出字符串(或者做其它业务逻辑的操作),也可以在你调用方法后打印出字符串,甚至在你抛出异常的时候做业务逻辑的操作。
过滤器:是在javaweb中,你传入的request、response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或者struts的action进行业务逻辑,比如过滤掉非法url(不是login.do的地址请求,如果用户没有登陆都过滤掉),或者在传入servlet或者 struts的action前统一设置字符集,或者去除掉一些非法字符.。
二、xml文件配置
1.filter
该过滤器的方法是创建一个类XXXFilter实现此接口,并在该类中的doFilter方法中声明过滤规则,然后在配置文件web.xml中声明他所过滤的路径

<filter>
<filter-name>XXXFilter</filter-name>
<filter-class>
com.web.util.XXXFilter
</filter-class>
</filter>

<filter-mapping>
<filter-name>XXXFilter</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
<filter>
<filter-name>XXXFilter</filter-name>
<filter-class>
com.web.util.XXXFilter
</filter-class>
</filter>

<filter-mapping>
<filter-name>XXXFilter</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
2.Interceptor

它也要实现HandlerInterceptor 接口,这里只介绍方法注解配置

<!-- 拦截器 -->
<mvc:interceptors>
<!-- 多个拦截器,顺序执行 -->
<mvc:interceptor>
<mvc:mapping path="/entryOrJsonController/*" /><!-- 如果不配置或/*,将拦截所有的Controller -->
<bean class="com.wy.interceptor.CommonInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>
<!-- 拦截器 -->
<mvc:interceptors>
<!-- 多个拦截器,顺序执行 -->
<mvc:interceptor>
<mvc:mapping path="/entryOrJsonController/*" /><!-- 如果不配置或/*,将拦截所有的Controller -->
<bean class="com.wy.interceptor.CommonInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>

三、具体区别

filter
Interceptor

多个的执行顺序
根据filter mapping配置的先后顺序
按照配置的顺序,但是可以通过order控制顺序

规范
在Servlet规范中定义的,是Servlet容器支持的
Spring容器内的,是Spring框架支持的。

使用范围
只能用于Web程序中
既可以用于Web程序,也可以用于Application、Swing程序中。

深度
Filter在只在Servlet前后起作用
拦截器能够深入到方法前后、异常抛出前后等

四、总结
两者的本质区别:拦截器是基于java的反射机制的,而过滤器是基于函数回调。从灵活性上说拦截器功能更强大些,Filter能做的事情,他都能做,而且可以在请求前,请求后执行,比较灵活。Filter主要是针对URL地址做一个编码的事情、过滤掉没用的参数、安全校验(比较泛的,比如登录不登录之类),太细的话,还是建议用interceptor。不过还是根据不同情况选择合适的。

『肆』 校验用户是否登录过滤器Filter

CheckLoginFilter net.cnki.tpi.cms.util.CheckLoginFilter redirectURL /login.jsp notCheckURLList /error.jsp;/login.jsp CheckLoginFilter /* 2、然后新创建一个CheckLoginFilter.java类,代码如下:
/** * 校验用户是否已登录过滤器 * @author lpz * */ public class CheckLoginFilter implements Filter { private FilterConfig filterConfig = null; private String redirectURL = null; private List notCheckURLList = new ArrayList(); public CheckLoginFilter() { } public void destroy() { notCheckURLList.clear(); } public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest)servletRequest; HttpServletResponse response = (HttpServletResponse)servletResponse; HttpSession session = request.getSession(); Object userInfo = session.getAttribute("userInfo"); if(!(request) && userInfo==null){ //重定向到指定页面 response.sendRedirect(request.getContextPath() + redirectURL); }else{ //继续响应请求 chain.doFilter(servletRequest, servletResponse); } } public void init(FilterConfig fConfig) throws ServletException { this.filterConfig = fConfig; redirectURL = filterConfig.getInitParameter("redirectURL"); String notCheckURLListStr = filterConfig.getInitParameter("notCheckURLList"); if(!MyStringUtil.isNullOrEmpty(notCheckURLListStr)){ //将字符串转化为list notCheckURLList = MyStringUtil.convStrToList(notCheckURLListStr,";"); } } /** * 校验当前请求是否在不过滤的列表中 * @param request * @return */ private boolean (HttpServletRequest request) { String uri = request.getServletPath() + (request.getPathInfo() == null ?

『伍』 java:怎么在jsp页面实现超时退出

在页头部分判断session是否已经为空或这session中包含的用户属性是否为空,如果为空则跳转至首页或登录页。


For example:

====================


<%
StringonlySession=(String)request.getParameter("user");
%>
<scripttype="text/javascript">
varonlySession="<%=user%>";

if(onlySession=="null"||onlySession==""){
alert("用户超时,请重新登录!");
}

varindexPath="<c:urlvalue='/index.jsp'/>";//indexpageURL
if(window.parent){
if(window.parent.parent){
if(window.parent.parent.parent){
window.parent.parent.parent.location=indexPath;
}else{
window.parent.parent.location=indexPath;
}
}else{
window.parent.location=indexPath;
}
}else{
window.location=indexPath;
}
</script>

如whatismvc 所述一般的项目会添加过滤器,判断是session是否为空。但如果只单纯测试JSP的写法,上面的即可。

『陆』 怎么用过滤器管理用户session

我们经常会碰到这样的情况,当我们有事情离开了一会,等再回来继续我们在网页中的操作时,会出现session超时的错误,然后跟上一堆的错误,让用户感觉很不爽,像这种情况如果能在一个错误页面给个Session超时的提示就会比较友好些,再一种情况,当一个系统中的用户角色有多个,有些页面对于一些级别低的用户来说是没有权限观看的,可能在页面上能根据不同的权限屏蔽了一些链接让低级别的用户无法进入,但是这只能让低级别的用户看不见高级操作的链接,假如用户知道链接的地址直接在地址栏中输入链接,岂不是也可以进入系统啊,要解决这两个问题就得在页面中做判断了。

If(session== null) {

//如果是超时则跳转到登陆页面重新登陆

}

If(checkAuthority() == false) {

//如果权限不足则跳转到错误页面给个提示

}

每个.jsp页面中加上以上的判断貌似能够解决问题,然而一个系统往往有成百上千的jsp页面,倘若每个页面都这样加岂不是很费事,而且如果将来的权限判断发生变化,将要维护所有的jsp这样的工作量是很大的,灵活性很差,要是在进入这些jsp之前必须统一经过一个地方,在这个地方来做判断貌似要好一下,我们使用了过滤器来解决了这个问题

新建一个过滤器命名为:FilterDemo,该类继承自:javax.servlet.Filter

{

publicvoiddestroy() {}

publicvoiddoFilter(ServletRequest sreq, ServletResponse response,

FilterChain filterChain)

throwsIOException, ServletException {

HttpServletRequest request=(HttpServletRequest)sreq;

HttpSessionsession= request.getSession(false);

if(session==null) {

//如果是session超时,在此处做处理

}

if(request.getRequestURI().endsWith("download.do")) {

//此处可以针对不同的请求根据用户是否具有权限来做处理

}

request.getRequestDispatcher("/Error.jsp").

forward(request,response);

}

publicvoidinit(FilterConfig filterConfig)

throwsServletException {}

}

然后将新建的Filter添加到web.xml中,部署Filter需要添加两部分:

1.filter元素

filter元素位于部署描述符文件(web.xml)的前部,所有filter-mapping、servlet或servlet-mapping元素之前。

<filter>

<filter-name>SessionFilter</filter-name>

<filter-class>myPackage.FilterDemo</filter-class>

</filter>

2.filter-mapping元素

filter-mapping元素位于web.xml文件中filter元素之后serlvet元素之前

<filter-mapping>

<filter-name>SessionFilter</filter-name>

<url-pattern>*.do</url-pattern>

</filter-mapping>

以上内容表示所以的请求中以.do结尾的都有首先通过我们这里指定的过滤器:

新建一个Servlet来测试:

{

=1L;

publicDownLoadDemo() {

super();

}

protectedvoiddoGet(HttpServletRequest request, HttpServletResponse response)throwsServletException, IOException {

this.doPost(request, response);

}

protectedvoiddoPost(HttpServletRequest request, HttpServletResponse response)throwsServletException, IOException {

request.getRequestDispatcher("/DownLoadExcel.jsp").

forward(request, response);

}

}

在web.xml中部署好该servlet

<servlet>

<servlet-name>DownLoadDemo</servlet-name>

<servlet-class>com.sinosoft.base.sessiondemo.DownLoadDemo</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>DownLoadDemo</servlet-name>

<url-pattern>/download</url-pattern>

</servlet-mapping>

新建jsp来测试

Index.jsp
<body>

<formaction="download.do">

<h1>This is a Demo Application</h1>

<ahref='DownLoadExcel.jsp'>导出Excel</a>

<inputtype='submit'>

</form>

</body>

为了便于对比我们使用了一个是超链接的形式,一个是通过servlet来跳转,当点击提交按钮时会被拦截,而直接点击超链接就不会被拦截,因为我们的Filter中配置的是拦截.do形式的,如果要拦截jsp也可以使用<url-pattern>DownLoadExcel.jsp </url-pattern>

再添加一个错误页面Error.jsp

<body>

<h1>对不起,你没有权限</h1>

</body>

『柒』 filter的使用 java 过滤器的几种使用方法

过滤器来

过滤器是处于客户端自与服务器资源文件之间的一道过滤网,在访问资源文件之前,通过一系列的过滤器对请求进行修改、判断等,把不符合规则的请求在中途拦截或修改。也可以对响应进行过滤,拦截或修改响应。

过滤器一般用于登录权限验证、资源访问权限控制、敏感词汇过滤、字符编码转换等等操作,便于代码重用,不必每个servlet中还要进行相应的操作。

『捌』 java filter 登录进入死循环

没有解释?什么意思?登录进入过滤器,过滤器检测到没有登录又返回登录界面?无法进入JDBCController类?在web.xml的配置里不让它过滤login.do就ok了。

『玖』 filter过滤器 和拦截器的区别

1、首先要明确什么是拦截器、什么是过滤器
1.1 什么是拦截器:
拦截器,在AOP(Aspect-Oriented Programming)中用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作。拦截是AOP的一种实现策略。
在Webwork的中文文档的解释为——拦截器是动态拦截Action调用的对象。它提供了一种机制可以使开发者可以定义在一个action执行的前后执行的代码,也可以在一个action执行前阻止其执行。同时也是提供了一种可以提取action中可重用的部分的方式。
谈到拦截器,还有一个词大家应该知道——拦截器链(Interceptor Chain,在Struts 2中称为拦截器栈 Interceptor Stack)。拦截器链就是将拦截器按一定的顺序联结成一条链。在访问被拦截的方法或字段时,拦截器链中的拦截器就会按其之前定义的顺序被调用。
1.2. 拦截器的实现原理:
大部分时候,拦截器方法都是通过代理的方式来调用的。Struts 2的拦截器实现相对简单。当请求到达Struts 2的ServletDispatcher时,Struts 2会查找配置文件,并根据其配置实例化相对的拦截器对象,然后串成一个列表(list),最后一个一个地调用列表中的拦截器。
1.3 什么是过滤器
过滤器是一个程序,它先于与之相关的servlet或JSP页面运行在服务器上。过滤器可附加到一个或多个servlet或JSP页面上,并且可以检查进入这些资源的请求信息。在这之后,过滤器可以作如下的选择:
①以常规的方式调用资源(即,调用servlet或JSP页面)。
②利用修改过的请求信息调用资源。
③调用资源,但在发送响应到客户机前对其进行修改。
④阻止该资源调用,代之以转到其他的资源,返回一个特定的状态代码或生成替换输出。

1.4 Servlet过滤器的基本原理
在Servlet作为过滤器使用时,它可以对客户的请求进行处理。处理完成后,它会交给下一个过滤器处理,这样,客户的请求在过滤链里逐个处理,直到请求发送到目标为止。例如,某网站里有提交“修改的注册信息”的网页,当用户填写完修改信息并提交后,服务器在进行处理时需要做两项工作:判断客户端的会话是否有效;对提交的数据进行统一编码。这两项工作可以在由两个过滤器组成的过滤链里进行处理。当过滤器处理成功后,把提交的数据发送到最终目标;如果过滤器处理不成功,将把视图派发到指定的错误页面。

2、拦截器与过滤器的区别 :
1. 拦截器是基于java的反射机制的,而过滤器是基于函数回调。
2. 拦截器不依赖与servlet容器,过滤器依赖与servlet容器。
3. 拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。
4. 拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问。
5. 在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次

拦截器的代码实现(以struts2为例):
1、在xml文件中如何定义拦截器
<interceptors>
<interceptor name="filterIPInterceptor"
class="com.xxxx.web.FilterIPActionInterceptor" />
<interceptor-stack name="filterIPStack">
<interceptor-ref name="defaultStack" />

<interceptor-ref name="filterIPInterceptor" />
</interceptor-stack>
</interceptors>

2、怎么遍别写自定义拦截器

public class FilterIPActionInterceptor extends AbstractInterceptor
{
/** 日志控制. */
private final Log log = LogFactory.getLog(getClass());

/**
* @see com.opensymphony.xwork2.interceptor.AbstractInterceptor#intercept(com.opensymphony.xwork2.ActionInvocation)
*/
@Override
@SuppressWarnings("unchecked")
public String intercept(ActionInvocation invocation) throws Exception
{
String result = null;
// 获得当前方法名.
String methodName = invocation.getInvocationContext().getName();
String currIp = null;
try
{
if (invocation.getAction() instanceof PortletAction)
{
PortletAction action = (PortletAction) invocation.getAction();
currIp = action.getRequest().getRemoteAddr();
}
String ip = ApplicationResource.getHotValue("ALLOW_CACHE_IP");

if (StringUtils.isBlank(ip) || StringUtils.isBlank(currIp))
{
log.error("允许刷新的IP不存在或当前请求的IP非法.");
throw new NoAllowIPException();
}
else
{
String[] ips = ip.split(",");
boolean errorIp = true;
for (String s : ips)
{
if (s.equals(currIp))
errorIp = false;
}
// 判断IP
if (errorIp)
throw new NoAllowIPException();
}
result = invocation.invoke();//调用被拦截的方法
}
catch (Exception e)
{
log.error("异常类名:" + invocation.getAction().getClass());
log.error("异常方法:" + methodName, e);
throw e;
}

return result;
}

}

3、怎么编写过滤器

1、在web.xml里面配置自定义的拦截器
<filter>
<filter-name>Redirect Filter</filter-name>
<filter-class>com.xx.filter.RedirectFilter</filter-class>
</filter>

<filter-mapping>
<filter-name>Redirect Filter</filter-name>
<url-pattern>/xx/xx/*</url-pattern>

</filter-mapping>

2、如何编写自定义的拦截器
public class RedirectFilter implements Filter {
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filterChain) throws IOException, ServletException {
// 获取URL
Long startTime = null;
if (log.isDebugEnabled())
{
startTime = System.currentTimeMillis();
}
HttpServletRequest httpRequest = (HttpServletRequest) request;
String url = httpRequest.getRequestURL().toString();
if (url == null || url.trim().length() == 0) {
return;
}
if (url.indexOf(luceneCreateMapping) != -1
|| url.indexOf(luceneSearchMapping) != -1) {
doFilterForxxx(request, response, url);
} else {
doxxxx(request, response, url);
}
if (log.isDebugEnabled())
{
long endTime = System.currentTimeMillis();
Thread currentThread = Thread.currentThread();
String threadName = currentThread.getName();
log.debug("[" + threadName + "]" + "< "
+ this.getClass().getName() + " " + url + " "
+ (endTime - startTime) + " ms");
}
// 激活下一个Filter
filterChain.doFilter(request, response);

}
}

阅读全文

与登录超时过滤器filter相关的资料

热点内容
志高净水器怎么进水 浏览:240
亚克力水槽的水垢清洗 浏览:733
如何去除瓶胆里的水垢 浏览:445
树脂美白牙说明书 浏览:139
美的净水器的过滤网怎么清洗 浏览:382
德隆咖啡机除垢键一直亮 浏览:654
超滤装置的使用 浏览:168
EDI膜有电阻是什么情况 浏览:607
净水机过滤精度什么符号 浏览:806
油烟机净化器怎么分左右 浏览:854
杀鸡厂污水处理 浏览:234
电镀铜废水处理价格多少 浏览:577
开水器除垢硅磷晶 浏览:388
不锈钢锅水垢清洁小妙招 浏览:639
烧烤架净化器怎么样安装 浏览:119
公司员工报销饮水机怎么入账 浏览:274
含油废水治理价格多少 浏览:999
用什么材料清洗管道水垢 浏览:946
阜阳废水 浏览:358
001x7有弱酸性阳离子交换树脂 浏览:62