톰캣(Tomcat) 재시작시 세션 유지/제거 설정하기세션은 브라우저 단위로 생성되는 클라이언트 상태 유지 객체입니다. 세션은 사용자의 브라우저가 종료되거나 HttpSession#invalidate()가 호출되었을 때 마지막으로 설정된 timeout에 의해 세션이 만료되었을 때 제거됩니다.그렇다면 톰캣 즉 서버가 종료된 경우에는 어떨까요? 톰캣의 경우 기본적으로 org.apache.catalina.session.StandardManager 라는 세션매니저를 통해서 세션이 관리됩니다. 그런데 이녀석은 톰캣이 종료될 때 살아있는 세션을 임시저장소(디스크)에 SESSIONS.ser 이라는 파일로 저장해두고 재시작될 때 이 파일을 읽어 세션을 다시 살려버립니다. 만약 톰캣이 종료될 때 가지고 있던 세션을 모두 제..
Servlet&Jsp
2019. 7. 31. 23:38
[서블릿/JSP] 톰캣(서블릿 컨테이너) 시작시 Servlet 초기화 되도록 설정하기
참고글[서블릿/JSP] 서블릿의 초기화 과정 및 초기화 방법[서블릿/JSP] init() 메서드를 통한 필터 초기화시에 FilterConfig를 통해 설정값 얻기톰캣(서블릿 컨테이너) 시작시 Servlet 초기화 되도록 설정하기우리가 작성해 놓은 Servlet이 객체화 되어 생성되는 시점은 사용자로부터 최초의 요청이 발생할 때 입니다. 서블릿은 생성과정에서 init() 메서드가 실행됩니다. 그런데 사용자의 요청 여부에 관계없이 서블릿 컨테이너(톰캣)가 시작됨과 동시에 서블릿의 생성과 초기화를 진행하고 싶을 수 있습니다.이경우 web.xml에 초기화를 원하는 서블릿에 대해서 태그를 설정해주거나 @WebServlet 어노테이션을 사용하는 경우 loadOnStartUp 속성값을 지정해주면 됩니다.다음은 we..
이클립스[Elipse]
2019. 7. 30. 11:30
[이클립스] Eclipse에서 Dynamic Web Project로 WAR 파일 생성하기
Eclipse에서 Dynamic Web Project로 WAR(WebApplication Archive) 파일 생성하기WAR는 .war라는 확장자를 가진 압축파일로 Java의 Servlet/JSP 환경의 웹 어플리케이션 서버(정확히는 서블릿 컨테이너라고 합니다)에 개발한 어플리케이션을 배포(설치)하는데 사용됩니다.WAR 파일은 특정한 구조를 가지고 있는데, 이 구조는 Tomcat과 같은 서블릿 컨테이너가 인식할 수 있는 구조입니다.→ [서블릿/JSP] 웹 어플리케이션 개념 및 웹 어플리케이션 경로 규칙이 구조는 Servlet 스펙에 명시되어 있는 구조이므로 구조를 맞추어 주지 않으면 WAR파일을 배포해도 Tomcat같은 서블릿 컨테이너가 인식하지 못하게 됩니다.이클립스로 WAR 생성하기이클립스는 기본적으..
Servlet&Jsp
2019. 7. 30. 03:30
[서블릿/JSP] Tomcat에 war 파일 배포하기
이전글[이클립스] Eclipse에서 Dynamic Web Project로 WAR 파일 생성하기Tomcat에 war파일 배포하기생성된 WAR 파일이 있다면 Tomcat에 웹 어플리케이션을 배포하는 일은 식은죽(?) 먹기입니다. 톰캣이 설치된 경로의 webapps 디렉터리 하위에 만들어진 .war 파일을 옮겨둡니다.톰캣 설치 디렉터리 > bin > startup을 실행하여 톰캣을 시작합니다.톰캣 정상적으로 시작됩니다.배포한 웹 어플리케이션에 접속해봅니다.톰캣의 webapps 경로로 이동해 보면 WAR 파일과 동일한 이름의 디렉터리가 생성된것을 볼 수 있습니다. 이는 톰캣이 자동으로 WAR파일을 인식하여 압축을 해제한 것입니다.WAR 파일 배포에 실패한 경우배포에 실패한 경우 몇가지 원인이 있을 수 있습니다...
Servlet&Jsp
2019. 7. 22. 09:48
[JSP/Servlet] JSP/Servlet 환경에서 파일 업로드 위한 Apache Commons FileUpload 라이브러리 설정 방법
연관글[서블릿/JSP] Apache Commons FileUpload를 이용한 파일업로드 구현하기파일 업로드시 라이브러리를 사용하는 이유JSP/Servlet 환경에서 파일을 업로드할때에는 오픈소스 라이브러리를 사용합니다. 왜냐하면 서버입장에서는 평소에 쿼리스트링을 통해 넘어오는 파라미터와는 다르게, 클라이언트가 HTTP 요청메시지의 몸체에 multipart 형태로 업로드한 파일의 바이너리 데이터를 입력 스트림을 통해 읽어들여 각각 잘라서 가공한 다음 사용해야 하는데, 매우 번거로운 일이기 때문입니다.물론 세밀한 조작이나 파일업로드 라이브러리를 직접 개발하기 위해서는 이러한 과정을 직접 개발해야 할 것입니다.그러나 시간이 없는 우리 일반 웹개발자들에겐 좋은 오픈소스 라이브러리들이 있습니다. 최근 버전의 S..
Servlet&Jsp
2019. 7. 10. 02:30
[서블릿/JSP] 톰캣 8.0 이하에서 HTTP Response 메시지에서 Server 값 바꾸기
톰캣 8.0 이하에서 HTTP Response 메시지에서 Server 값 바꾸기HTTP 응답메시지의 헤더중 Server라는 속성이 있고 이 값은 웹서버 제품의 이름을 알려줍니다. 톰캣은 기본적으로 Apache-Coyote라는 값을 응답하도록 되어있습니다.아래는 톰캣에게 요청을 보냈을때 응답 메시지를 캡쳐한것입니다.HTTP/1.1 200 OKServer: Apache-Coyote/1.1Set-Cookie: JSESSIONID=A07D4A517740C52E01F502DBF8DE5C0C; Path=/; HttpOnlyContent-Type: text/html;charset=UTF-8Content-Length: 142Date: Tue, 09 Jul 2019 05:01:43 GMT그러나 보안적인 측면에서 보았을때..
툴 [Tool]
2018. 11. 1. 03:30
[IntelliJ] 인텔리J 한글 인코딩(Encoding) 설정
IntelliJ 한글 인코딩(Encoding) 설정학생이나 초급 개발자일수록 가장 많이 헤매는(일명 삽질) 부분이 인코딩 설정이 아닌가 싶습니다. 특히 웹 어플리케이션을 개발하다 보면 한글이 깨졌을때 IDE(개발 툴) 설정 문제인지 서버(웹 또는 DB서버) 설정 문제인지 등 문제의 원인이 되는 변수들이 많기 때문에 더욱 헤매게 됩니다.그래도 가장 초기에 해야하고 중요하기도 한 개발툴. 그중에서도 IntelliJ의 한글 인코딩 설정을 하는 방법을 써보고자 합니다. IDE 세팅은 개발 장비를 바꾸거나 포맷했을 때 등 정말 가끔씩만 설정을 하기 때문에 기록해두는것이 좋을것 같습니다.1. IntelliJ VM 설정IntelliJ가 실행시 사용할 가상머신의 인코딩 설정을 지정해줍니다. 자신이 IntelliJ를 설..
툴 [Tool]
2018. 10. 31. 23:26
[IntelliJ] 인텔리J 톰캣 한글 깨질 때 한글 인코딩(Encoding) 설정.
IntelliJ에서 Tomcat Encoding 설정인텔리J에서 톰캣 서버의 catalina log에 출력되는 한글이 깨지는것을 발견했습니다.이럴때는 IntelliJ에 설정된 톰캣 서버의 인코딩 설정을 VM 파라미터를 통해 지정할 수 있습니다. 아참! 그 이전에 기본적인 IntelliJ 인코딩 설정들이 되어있는지 확인하시기 바랍니다.→ [IntelliJ] 인텔리J 한글 인코딩(Encoding) 설정방법은 두 가지인데, Run > Edit Configurations...를 통해 접근하거나.Application Servers 탭에서 설정해둔 톰캣서버를 마우스 우클릭하여 Edit Configuration을 선택할수도 있습니다.설정에 들어오면 톰캣을 선택하고 VM options에 -Dfile.encoding=U..
Servlet&Jsp
2018. 8. 1. 00:52
[서블릿/JSP] HTTP 응답 상태 코드별로 처리할 JSP 지정하기
HTTP 응답 상태 코드별로 처리할 JSP 지정하기HTTP 프로토콜은 클라이언트가 웹서버에게 요청할 때 보내는 Request 메시지와 웹서버가 결과를 처리하고 응답하는 Response 메시지가 쌍으로 동작합니다. 이때 HTTP 프로토콜에는 Response 메시지에 웹서버에 처리 결과에 따른 상태코드를 포함하도록 규정하고 있습니다.2xx 클라이언트의 요청을 정상 처리3xx 리다이렉트4xx 클라이언트측 요청 오류5xx 서버 내부 오류JSP/Servlet 컨테이너도 웹어플리케이션 서버이므로 HTTP 규약을 준수하기 때문에 동작에 따른 코드를 응답하도록 되어 있는데, 예를 들어 클라이언트가 서버에 존재하지 않는 자원의 경로를 요청한 경우 404 Not Found를 응답하도록 하고 있습니다. 다음은 톰캣을 기준으..
Servlet&Jsp
2018. 7. 30. 02:59
[서블릿/JSP] Internet Explorer에서 jsp 500 에러 출력시 "웹 사이트에서 페이지를 표시할 수 없습니다" 표시되는 문제
JSP 상태코드 500 출력시 출력내용이 아닌 Explorer 내용 보여지는 문제JSP/Servlet에서 예를 들어 Tomcat의 내부 오류(Internal Server Error) 처리시 출력한 내용이 아닌 Explorer 자체의 오류 내용이 출력됩니다.다음의 nullEx.jsp 페이지는 java.lang.NullPointerException이 발생하도록 작성되었고 예외가 발생했을 때 errorPage 옵션을 통해 exception.jsp 페이지 처리내용을 사용자에게 보여주도록 설정했습니다.nullEx.jsp exception.jsp서버에 문제가 발생하였습니다.문제가 계속 되면 고객센터에 문의해주시기 바랍니다.다음은 크롬에서 nullEx.jsp 페이지를 호출했을 때의 결과입니다. 예상대로라면 ..