자바 디자인 모델 의 책임 체인 모델-학습 노트 1
다음은 WEB 가 요청 한 Request 를 보 내 는 것 을 직접 모 의 합 니 다.Request 는 두 개의 필터 체인 HTML Filter 필터 태그,SensitiveFilter 를 통 해 민감 한 어 휘 를 걸 러 내 고 필 터 를 거 친 후에 응답 대상 을 되 돌려 줍 니 다.
인 스 턴 스 코드:
public interface Filter {
	public void doFilter(Request req, Response rsp, FilterChain chain);
}
public class HTMLFilter implements Filter {
	@Override
	public void doFilter(Request req, Response rsp, FilterChain f) {
		req.request = req.request.replace("<html>", "[html]")
				+ "---HTMLFilter()";
		f.doFilter(req, rsp, f);
		rsp.response += "---HTMLFilter()";
	}
}
public class SensitiveFilter implements Filter {
	@Override
	public void doFilter(Request req, Response rsp, FilterChain f) {
		req.request = req.request.replace("     ", " xxx xxx")
				+ "---SensitiveFilter()";
		f.doFilter(req, rsp, f);
		rsp.response += "---SensitiveFilter()";
	}
}
public class FilterChain implements Filter {
	private List<Filter> list = new ArrayList<Filter>();
	private int index;
	@Override
	public void doFilter(Request req, Response rsp, FilterChain chain) {
		if (index == list.size()) {
			return;
		}
		Filter f = list.get(index);
		index++;
		f.doFilter(req, rsp, chain);
	}
	public FilterChain addFilter(Filter f) {
		list.add(f);
		return this;
	}
}
public class Request {
	String request = "";
	public String getRequest() {
		return request;
	}
	public void setRequest(String request) {
		this.request = request;
	}
}
public class Response {
	String response = "";
	public String getResponse() {
		return response;
	}
	public void setResponse(String response) {
		this.response = response;
	}
}
public class Main {
	public static void main(String[] args) {
		String msg = "<html>     ,    ";
		Request request = new Request();
		request.setRequest(msg);
		Response response = new Response();
		// FilterChain ch = new FilterChain();
		// ch.addFilter(new HTMLFilter()).addFilter(new SensitiveFilter());
		FilterChain ch = new FilterChain();
		ch.addFilter(new HTMLFilter());
		FilterChain ch2 = new FilterChain();
		ch2.addFilter(new SensitiveFilter());
		ch.addFilter(ch2);//         
		ch.doFilter(request, response, ch);
		System.out.println(request.getRequest());
		System.out.println(response.getResponse());
	}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.