상세 컨텐츠

본문 제목

jsp 페이지에서 자바함수 사용하기

JSP·자바·코틀린

by 김일국 2010. 11. 3. 12:56

본문

<%! 표시가 핵심 (태그제거하기 함수를 예로 들었습니다.)

 

<%!
/**
 * @(#)RemoveTagTest.java    2003/05/19
 *
 *   To remove tags.
 *   태그 제거하기
 *
 * @resource  http://www.javaclue.org/pub/java/htmltool/removetag/
 * @date      2003/05/19
 * @author    Pilho Kim  (phkim AT cluecom DOT co DOT kr)
 */
    public static String removeTag(String s) {
        final int NORMAL_STATE = 0;
        final int TAG_STATE = 1;
        final int START_TAG_STATE = 2;
        final int END_TAG_STATE = 3;
        final int SINGLE_QUOT_STATE = 4;
        final int DOUBLE_QUOT_STATE = 5;
        int state = NORMAL_STATE;
        int oldState = NORMAL_STATE;
        char[] chars = s.toCharArray();
        StringBuffer sb = new StringBuffer();
        char a;
        for (int i = 0; i < chars.length; i++) {
            a = chars[i];
            switch (state) {
                case NORMAL_STATE:
                    if (a == '<')
                        state = TAG_STATE;
                    else
                        sb.append(a);
                    break;
                case TAG_STATE:
                    if (a == '>')
                        state = NORMAL_STATE;
                    else if (a == '\"') {
                        oldState = state;
                        state = DOUBLE_QUOT_STATE;
                    }
                    else if (a == '\'') {
                        oldState = state;
                        state = SINGLE_QUOT_STATE;
                    }
                    else if (a == '/')
                        state = END_TAG_STATE;
                    else if (a != ' ' && a != '\t' && a != '\n' && a != '\r' && a != '\f')
                        state = START_TAG_STATE;
                    break;
                case START_TAG_STATE:
                case END_TAG_STATE:
                    if (a == '>')
                        state = NORMAL_STATE;
                    else if (a == '\"') {
                        oldState = state;
                        state = DOUBLE_QUOT_STATE;
                    }
                    else if (a == '\'') {
                        oldState = state;
                        state = SINGLE_QUOT_STATE;
                    }
                    else if (a == '\"')
                        state = DOUBLE_QUOT_STATE;
                    else if (a == '\'')
                        state = SINGLE_QUOT_STATE;
                    break;
                case DOUBLE_QUOT_STATE:
                    if (a == '\"')
                        state = oldState;
                    break;
                case SINGLE_QUOT_STATE:
                    if (a == '\'')
                        state = oldState;
                    break;
            }
        }
        return sb.toString();
    }

        //System.out.println(removeTag(str));
%>

관련글 더보기

댓글 영역