对每个请求应用过滤器 [英] Apply filter to every request

查看:97
本文介绍了对每个请求应用过滤器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

嘿伙计们,



我正在做一个java网络项目。在我的项目中访问所有用户必须登录到他的系统。一旦用户登录,他就可以转到其他页面。所以我想在java中使用'filter'检查每个请求(对每个请求应用过滤器)。任何人都可以给我这样做的步骤吗?

这里是我的Filter.java文件代码。我还没有完成它。需要步骤继续。如果有任何错误请告诉我。我很欣赏他们。



  package  com.mobitel.bankdemo.web; 

import java.io.IOException;
import java.util.logging.Filter;
import java.util.logging.LogRecord;

import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@ WebServlet / FilterRequest
public class FilterRequest extends HttpServlet implements 过滤器{
private static final long serialVersionUID = 1L;
FilterConfig filterConfig = null;

public FilterRequest(){
super ();
// TODO自动生成的构造函数存根
}
< span class =code-keyword> protected void doGet(HttpServletRequest请求,HttpServletResponse响应) throws ServletException,IOException {
// TODO自动生成的方法存根
}
protected void doPost(HttpServletRequest请求,HttpServletResponse响应) throws ServletException,IOException {
// TODO自动生成的方法存根
}
public void init(FilterConfig filterConfig) throws ServletException {
this .filterConfig = filterConfig;
}
public void doFilter(ServletRequest req,ServletResponse resp,FilterChain chain) throws ServletException,IOException {
HttpServletRequest httpReq =(HttpServletRequest)req;
String user = httpReq.getRemoteUser();
if (user!= null){
httpReq.getRequestURI();
filterConfig.getServletContext()。log(user);
}
其他 {
字符串 message = 请登录!;
req.setAttribute( loginMsg,message);
RequestDispatcher rd = getServletContext()。getRequestDispatcher( / login2.jsp);
rd.forward(req,resp);
}
chain.doFilter(req,resp); // 请求传递
}
@覆盖
public boolean isLoggable(LogRecord arg0){
// TODO自动生成方法存根
返回 false;
}
public void destroy(){
// 做清理工作
// filterConfig = null;
}
}





先谢谢你!

解决方案

创建过滤器

  public  < span class =code-keyword> class  LogFilter  implements 过滤器{...} 



只实现Filter,不需要扩展Servlet



一旦你创建了一个过滤器映射web中的过滤器定义。 xml文件。



了解更多

http://viralpatel.net/blogs/tutorial-java-servlet-filter-example-using-eclipse-apache-tomcat/ [<一个href =http://viralpatel.net/blogs/tutorial-java-servlet-filter-example-using-eclipse-apache-tomcat/target =_ blanktitle =New Window> ^ ]


Hey guys,

I'm doing a java web project. In my project to access all users must login to he system. once user logged he can go to other pages. so i want to check every request using 'filter' in java(apply filter to every request). can anyone give me steps to do that?
Here my Filter.java file code.I did not complete it yet. need steps to continue. if there are any mistakes please tell me. I'm appreciating them.

package com.mobitel.bankdemo.web;

import java.io.IOException;
import java.util.logging.Filter;
import java.util.logging.LogRecord;

import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/FilterRequest")
public class FilterRequest extends HttpServlet implements Filter{
	private static final long serialVersionUID = 1L;
	FilterConfig filterConfig = null;
	
    public FilterRequest() {
        super();
        // TODO Auto-generated constructor stub
    }
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	}
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	}
	public void init(FilterConfig filterConfig) throws ServletException {
		this.filterConfig = filterConfig;
	}
	public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
		HttpServletRequest httpReq = (HttpServletRequest) req;
		String user = httpReq.getRemoteUser();
		if (user!= null) {
			httpReq.getRequestURI();
			filterConfig.getServletContext().log(user);
		}
		else{
			String message = "Please Login!";				
			req.setAttribute("loginMsg", message);
			RequestDispatcher rd = getServletContext().getRequestDispatcher("/login2.jsp");
			rd.forward(req, resp); 
		}
		chain.doFilter(req, resp);//request pass
	}
	@Override
	public boolean isLoggable(LogRecord arg0) {
		// TODO Auto-generated method stub
		return false;
	}
	public void destroy() {
		// do cleanup stuff
		//filterConfig = null;
		}
}



thank you in Advance!

解决方案

To create filter

public class LogFilter implements Filter {...}


Only implements the Filter , no need to extends the Servlet

Once you create a filter map the filter defination in web. xml file .

To learn more
http://viralpatel.net/blogs/tutorial-java-servlet-filter-example-using-eclipse-apache-tomcat/[^]


这篇关于对每个请求应用过滤器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆