JSP -4

김정현·2024년 6월 12일
0

JSP

목록 보기
5/13
post-custom-banner

서블릿

getRequestURI -> 확인용 (변화가 없을거 같을때)(쿼리스트링은 출력x)
getRequestURL -> 버퍼 (변화가 있을거 같을때)

에노테이션 활용

//xml

<servlet>
    <servlet-name>member-servlet</servlet-name>
    <servlet-class>controllers.MemberController</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>member-servlet</servlet-name>
    <url-pattern>/member/*</url-pattern>
</servlet-mapping>

xml에서 위와 같이 사용하던 것을
클래스에서 에노테이션을 사용하여 간단하게 표현가능하다.

@WebServlet("/member/*")
public class MemberController extends HttpServlet {
    @Override
    public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

필터

: 요청과 응답사이에서 걸러줌

Filter 인터페이스를 구현 -> 필터 클래스

필터 클래스의 작성, 설치, 등록

	web.xml 
		<filter>
			<filter-name>..</filter-name>
			<filter-class>...</filter-class>
            <init-param>
            	<param-name>이름</param-name>
                <param-value></param-value>
            </init-param>    
		</filter>
		<filter-mapping>
			<filter-name>...</filter-name>
			<url-pattern>...</url-pattern>
		</filter-mapping>

필터 내부 추상 메서드

@Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {

        System.out.println("요청 전 필터");

        chain.doFilter(request, response); //다음 필터 또는 서블릿의 처리 메서드 실행

        System.out.println("응답 후 필터");
    }

래퍼 클래스 적용

필터 클래스 FilterChain::doFilter() 메서드 전 후, 공통 필터 부분 -> 여기에 코드 작성은 지양

ServletRequest 인터페이스 -> ServletRequestWrapper
ServletResponse 인터페이스 -> ServletResponseWrapper

HttpServletRequest 인터페이스 -> HttpServletRequestWrapper
HttpServletResponse 인터페이스 -> HttpServletResponseWrapper

참고) 클래스명에 Wrapper 있다고 감싸는 구조 X
//권장되지 않는 예시

    System.out.println("요청 전 필터");

        chain.doFilter(request, response); //다음 필터 또는 서블릿의 처리 메서드 실행

        System.out.println("응답 후 필터");
    }

//권장되는 예시
//래퍼 클래스 정의

public class CommonRequestWrapper extends HttpServletRequestWrapper {
    public CommonRequestWrapper(ServletRequest request) {
        super((HttpServletRequest) request);

        // 요청 전 고통 처리 부분
        System.out.println("요청 전 공통 처리 코드..");
    }
}

//구현부에서

 chain.doFilter(new CommonRequestWrapper(request), response);

//Filter에서 값을 커스텀도 가능함

@Override
    public String getParameter(String name) {
        String value = super.getParameter(name);
        value = value == null ? value : "★" + value + "♥";
        
        return value;
    }
post-custom-banner

0개의 댓글