평론구 댓글 사이트 통일 인코딩 불법 문자열 차단 불법 문자열 필터
5206 단어 필기
게시판 게시판:
토마스 라이브 메시지 영역 WordsServlet(요청 및 응답): @WebServlet("/WordsServlet") public class WordsServlet extends HttpServlet {protected void doGet(HttpServlet Request request, HttpServlet Response response response response) throws Servlet Exception, IOException {this.doPost(request, response);protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException {//디코딩 request.setCharacter Encoding("utf-8");//인코딩 response.setContent Type("text/html;charset=utf-8");//1. 요청 매개 변수 수신 content String content = request.getParameter("content");//2. 페이지 response.getWriter().write(content)에 결과를 응답합니다.}}
웹 사이트 통합 코딩(웹.xml로 문자 집합 결합):
web.xml:
EncodeFilter
cast.EncodeFilter
encode
UTF-8
EncodeFilter
/*
public class Encode Filter implements Filter {//전역 변수 private String encode 정의, public void init(FilterConfig config) throws Servlet Exception {//획득한 문자 인코딩을 전역 변수 encode = config.get InitParameter("encode")에 지정),//config: 구성 파일의 정보 읽기
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws ServletException, IOException {
//
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
// post
if(request.getMethod().equalsIgnoreCase("post")){
//equalsIgnoreCase :
request.setCharacterEncoding(encode);
}
response.setContentType("text/html;charset="+encode);
chain.doFilter(servletRequest, servletResponse);
}
public void destroy() {
}
} 불법 문자열 차단://차단기 @WebFilter 만들기 ("/WordsServlet")/WordsServlet public class WordsFilter implements Filter 차단 {//이따가 Dofilter가 집합을 사용하기 때문에 전역 변수 private List wordslist; public void init (FilterConfig config) throws Servlet Exception{//1. 프로필 읽기 Resource Bundle word = Resource Bundle.get Bundle("word");//2. 읽은 정보를 얻기 위한 String keywords = word.getString("keywords");//3. split로 절단하여 절단된 정보 배열을 집합에 저장하는 Array.asList wordslist = Arrays.asList(keywords.split(",");;;;System.out.println("불법 로드+slistln):public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws ServletException,IOException {//HttpServletRequest request = (HttpServletRequest) servletRequest, HttpServletResponse response = (HttpServletResponse) servletResponse;/1. 사용자 입력 정보 가져오기 String content = request.getParameter("content");//사용자 입력 정보 가져오기 여부 보기, 백그라운드에서 인쇄//for for(String word: wordslist) {//사용자가 입력한 정보와 어구의 정보를 비교하고, 있으면 사용자가 입력한 정보를 차단하는 if(content.contains(word)) {//페이지에 응답하고, 우정 알림response.getWriter().write("입력한 문자가 민감하다...));//다음은 return을 실행하지 않습니다}//찬이를 놓아주다.doFilter(request, response); } public void destroy () {} 참고: Filter는 왜 아래로 전환합니까?ServletRequest request;이것은 부류 대상을 부류에 인용하는 것이다. 그가 실행할 때의 유형은 부류이고 컴파일할 때의 유형은 부류이다. 그러나 실행할 때 부류 유형의 대상이 호출하는 방법은 부류에 있으면 부류 안의 방법을 실행한다. 만약에 컴파일할 때의 유형이 부류가 호출하지 않은 방법이라면 오류를 보고한다.
잘못된 문자열 필터링: @WebFilter("/WordsServlet")public class WordsProFilter implements Filter
private List wordList;
public void init(FilterConfig config) throws ServletException {
//1.
ResourceBundle word = ResourceBundle.getBundle("word");
//2.
String keywords = word.getString("keywords");
//3. "," ,
wordList = Arrays.asList(keywords.split(","));
//
System.out.println(" :"+wordList);
}
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws ServletException, IOException {
//
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
// request ( )
MyRequest myRequest = new MyRequest(request,wordList);
//
chain.doFilter(myRequest, response);
}
public void destroy() {
}
} public class MyRequest extends HttpServletRequestWrapper {
private List wordList;
public MyRequest(HttpServletRequest request,List wordList) {
super(request);
this.wordList =wordList;
}
//
@Override public String getParameter(String content) {//사용자가 입력한 데이터를 얻습니다//부모 클래스는 Request String parameter = super.getParameter(content),//불법 데이터를 처리하는 for(String word: wordList) {if(parameter.contains) {//불법 문자를 얻은 수량 int length = word.length();//대체 String TH = "for"(int i = 0; i < length; i++) {//단어의 길이를 옮겨다니며 TH에 값을 부여하고 그 길이가 얼마든지 * TH+= "*";}//여기에서 교체를 진행합니다. 한 번 순환해서 하나를 교체합니다. 순환이 끝나면 완전parameter=parameter를 교체합니다.replaceAll(word, TH); } } return parameter; } }
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
static 간단한 설명static 방법은 일반적으로 정적 방법이라고 부른다. 정적 방법은 어떠한 대상에 의존하지 않고 접근할 수 있기 때문에 정적 방법에 있어this는 없다. 왜냐하면 그 어떠한 대상에도 의존하지 않기 때문이다. 대상이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.