자바 디자인 모델 의 책임 체인 모델-학습 노트 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에 따라 라이센스가 부여됩니다.