본문 바로가기

Servlet, JSP

(12)
서블릿 필터 (Servlet Filter) 적용하기 이전 프로젝트를 참고해주세요. 서블릿 필터 (Servlet Filter) 적용하기 서블릿마다 공통되는 설정을(인코딩, 서블릿 접근 권한 체크) 서블릿마다 하는 것을 불편합니다. 모든 서블릿에서 많이 실행되는 설정들을 서블릿 이전에 필터에서 검사할 수 있습니다. 요청 순서는 다음과 같습니다. 클라이언트 → WAS → Filter → Servlet 응답 순서도 반대로 다음과 같습니다. Servlet → Filter → WAS → 클라이언트 필터를 적용하는 데 2가지 방법이 있습니다. 방법 1 @WebFilter("") 어노테이션 사용 @WebFilter("/*")를 통해 모든 요청에 대해 해당 필터를 통과하도록 설정합니다. chain.doFilter(request, response); 를 통해서 서블릿을 실..
Parameter, Form Data에 담은 한글이 깨지는 문제 해결 사용자가 한글을 서버로 보냈을 때 한글이 깨지는 문제가 발생합니다. 이유는 브라우저가 UTF-8로 인코딩해서 데이터를 서버로 보냈을 경우 톰캣은 기본적으로 ISO-8859-1 방식(한 글자 1바이트)으로 읽기 때문입니다. 깨진 문자를 다시 출력해서 브라우저에서 깨진 한글이 보이는 것입니다. 해결책 : 파라미터를 가져오기 전에 인코딩을 UTF-8로 설정하면 됩니다. request.setCharacterEncoding("UTF-8"); 다른 해결책은 톰캣의 server.xml에서 인코딩을 UTF-8로 설정하면 됩니다. 전체 소스 코드 Reg.java @WebServlet("/reg") public class Reg extends HttpServlet { @Override public void service ..
Get 요청과 쿼리 스트링 이번에 만들 것은 서버로 값을 보낸 이후에 보낸 숫자만큼 Hello Servlet을 브라우저에 출력해볼 것입니다. 이번 예제를 통해서는 파라미터를 서버로 전달하고, 서버에서는 받는 방법을 익힐 수 있습니다. 서버로 데이터를 보낼 HTML 문서 서버로 보낼 값 태그의 action에 매핑된 서블릿을 실행합니다. 에서 속성이 "text"인 태그의 name 값을 기준으로 서버에서 쿼리 스트링을 식별합니다. 받은 파라미터의 수 만큼 문자열을 출력하는 서블릿 @WebServlet("/hello") public class HelloServlet extends HttpServlet { @Override public void service (HttpServletRequest request , HttpServletResp..
Servlet에서 인코딩 방식과 컨텐츠 타입을 지정해야 하는 이유 Servlet에서 인코딩 방식과 출력 형식을 지정 안 하는 경우 다음과 같은 현상이 발생합니다. 인코딩 방식을 지정 안 하는 경우 : 한글이 깨짐 콘텐츠 타입을 지정 안 하는 경우 : 브라우저가 문서의 형식을 자의적으로 해석하기 때문 이 문제는 다음 서블릿 실행을 통해서 발생했습니다. 해결책과 이유를 알아보도록 하겠습니다. @WebServlet("/hello") public class HelloServlet extends HttpServlet { @Override public void service (HttpServletRequest request , HttpServletResponse response) throws IOException, ServletException{ PrintWriter out = ..
Annotation(어노테이션)을 사용한 URL 매핑 이전에 URL을 서블릿에 매핑하기 위해서는 다음과 같이 web.xml에 매핑 정보를 입력했습니다. ** 이클립스를 사용해 Hello Servlet 출력하기 ** web.xml 경로는 {프로젝트 경로}\WebContent\WEB-INF\web.xml 입니다. hello com.seung.HelloServlet hello /hello 서블릿 2.* 에서는 web.xml 파일에서만 url 매핑이 가능했지만, 3.0이상에서는 어노테이션으로 매핑하는 것도 가능해졌습니다. 현재 저희는 4.0 버전을 사용하고 있습니다. 이번에는 매핑 정보를 servlet 클래스에서 할 수 있는 방법을 소개하겠습니다. 1. web.xml 파일에 metadata-complete 값을 false로 변경 현재 url 매핑 정보가 담긴 we..
Eclipse를 사용해 "Hello Servlet" 출력하기 이전에 IDE 사용 없이 "Hello Servlet"를 출력하는 것을 해봤는데요.. 매우 불편했을 겁니다. 코드 수정한 이후의 과정 => 컴파일(클래스 패스 지정) => 배포 (톰캣의 특정 경로로 class 파일 이동) => 톰캣 재시작 => 브라우저로 요청해 "Hello Servelt" 확인 Eclipse를 사용해 컴파일부터 4가지 과정을 Ctrl + F11 한 번으로 끝나는 것을 소개하겠습니다. 1. Eclipse를 설치합니다. https://www.eclipse.org/downloads/ Download x86_64를 클릭하는 게 아니라 Downloaded Packages를 클릭해야 합니다. 웹 개발할 수 있는 Eclipse IDE for Enterprise Java Developers를 다운로드하..
Hello Servlet! 만들어보기 (IDE 없이) 서블릿 만드는 것의 의미 서버 애플리케이션을 만드는 것입니다. 서블릿의 특이사항은 사용자 요청에 따라 특정 서블릿만 실행됩니다. 예시) 리스트 요청 → 리스트 요청 서블릿만 실행 회원가입 요청 → 회원가입 요청 서블릿만 실행 Hello Servlet! 만드는 과정 자바 소스코드 작성 + 컴파일 + 배포(톰캣 폴더로 이동) + 브라우저로 서블릿 실행 자바 소스코드 작성 다음과 같이 hello Servlet 코드를 작성합니다. 작성은 메모장으로 하시면 됩니다. WAS, 톰캣은 HttpServlet라는 추상 클래스를 상속받고, service() 함수를 구현하는 java 파일을 서블릿이라고 인지합니다. 다음과 같은 예시는 "HelloServlet" Servlet이라고 부를 수 있습니다. import java.i..
Apache Tomcat 설치하기 - Windows 10 개발용으로 Apache Tomcat을 Windows 10 64 bit 운영체제에 설치하는 방법을 알아보겠습니다. 톰캣은 자바 실행환경이 필요하므로 JRE가 사전에 설치되어 있어야 합니다. 1. JDK를 설치합니다. 설치는 다음 글을 참고해주세요. "윈도에 JDK 8 설치하기" JDK를 설치하면 JRE도 같이 설치됩니다. 2. Tomcat을 다운로드합니다. Tomcat의 현재 최신 버전은 10이지만 아직 베타 버전이므로 9를 설치해보겠습니다. Tomcat의 공식 사이트는 **http://tomcat.apache.org**입니다. 왼쪽 Download 메뉴에서 Tomcat 9를 클릭합니다. 톰캣 9에서 가장 최신 버전은 9.0.41인 것을 확인할 수 있습니다. 만약 자동 설치를 하시고 싶으신 분들은 32-b..