Post

WEB서버와 WAS 서버의 차이점.

web 서버와 WAS 서버의 차이점.

웹 서버

HTTP 요청을 받아들이고, HTML문서와 같은 자료 콘텐츠에 따라 HTTP에 반응하는 컴퓨터 프로그램.

WAS 서버

웹 서버 + 웹 컨테이너

웹 컨테이너

JSP와 Servlet을 실행시킬 수 있는 SW를 웹 컨테이너

그니까 JSP와 서블릿을 웹 서버에서 요청하면 톰캣에서는 JSP파일을 서블릿으로 변환하여 컴파일을 수행하고, 서블릿 수행결과를 웹서버에게 전달하게 됨.

웹 서버는 HTML같은 정적 컨텐츠를 주로 처리. WAS서버는 asp, php, jsp 등 개발 언어를 읽고 처리하여 동적 컨텐츠, 웹 응용 프로그램 서비스를 처리.

Serlvet의 기초 동작방식

서블릿은 web.xml의 설정과 동작함.

servlet클래스를 만들고, web.xml에서 servlet mapping을 작성해준다.

1
2
3
4
<servlet-mapping>
        <servlet-name>test</servlet-name>   -> 가상의 이름
        <url-pattern>/hello</url-pattern>   -> 접근 url
</servlet-mapping>

작성해준 뒤 위에 servlet 태그를 작성해준다.

1
2
3
4
<servlet>
    <servlet-name>test</servlet-name>    -> 아까 만든 가상의 이름
    <servlet-class>example.HelloWorld</servlet-class> -> 접근 클래스명.(root에서 경로까지)
</servlet>

외에도 여러 태그가 존재하지만 ..

위의 방식은 servlet 2.X 버전. servlet 3.0 버전으로 넘어오면서 어노테이션을 활룡한 매핑이 가능해졌다.

Serlvet의 출력 방식

브라우저마다 서블릿에 작성된 코드를 자의적으로 해석함. 엣지에서는 자동 줄바꿈이 없지만 크롬이나 사파리는

1
<br>

태그가 없어도 줄바꿈을 해준다는 말이다.

html로 해석하거나 text로 해석한다는 차이점이 있다.

서블릿 코드에 다음과 같이 추가해주면 된다.

1
2
3
4
5
//res 는 HttpServletResponse 객체
//UTF-8로 보내라
res.setCharacterEncoding("UTF-8");
//브라우저한테 해석방법을 알려줌.
res.setContentType("text/html; charset=UTF-8");

Filter

수동

web.xml에서 태그를 달아준다.

1
2
3
4
5
6
7
8
9
10
11
<filter-mapping>
    <filter-name>characterEncodingfilter</filter-name>  -> 가상 이름
    <url-pattern>/*</url-pattern> -> 적용할 url
</filter-mapping>

...

<filter>
    <filter-name>characterEncodingfilter</filter-name>   -> 위에서 작성한 가상 이름
    <filter-class>example.filter.CharacterEncodingFilter</filter-class> -> 작성한 필터클래스 경로
</filter>

자동(어노테이션)

1
@WebFilter("url")
This post is licensed under CC BY 4.0 by the author.