servlet(9)
-
[필독][기초] / 서블릿 / servlet [part 9]
쿠키 HTTP 프로토콜은 상태를 유지할 수 없는 프로토콜이다. 쿠키는 HTTP 프로토콜의 특징상 각각의 웹 브라우저가 서버와의 통신에서 세션을 유지하지 못하는 것을 보완하기 위한 기술이다. 서버가 쿠키를 전송하면 웹 브라우저는 그 다음 요청마다 쿠키 값을 서버로 전달하여 사용자 정보를 유지할 수 있게 한다. 서버 -> 웹 브라우저 쿠키가 작동하려면 서버에서 쿠키값을 클라이언트로 전송해야 한다. 이것을 쿠키를 굽는다고 표현하는데 아래와 같은 정보가 서버로부터 웹 브라우저에 전달되고 웹 브라우저가 관리하는 폴더에 파일로 저장된다. Set-Cookie : name = value ; expires = date ; path = path ; domain = domain ; secure 웹 브라우저 -> 서버 쿠키가..
2016.01.05 -
[필독][기초] / 서블릿 / servlet [part 8]
파일 업로드 MultipartRequest MultipartRequest 팩키지는 파일 업로드에 널리 이용되고 있는 팩키지이다. http://www.servlets.com/cos/index.html 에서 가장 최신 버전인 cos-26Dec2008.zip 를 다운로드 하여 압축을 푼 후 서브 디렉토리 lib 에 있는 cos.jar 파일을 /WEB-INF/lib 디렉토리에 복사한다. MultipartRequest 클래스의 생성자는 아래 링크에서 확인할 수 있듯이 8개가 있다. http://www.servlets.com/cos/javadoc/com/oreilly/servlet/MultipartRequest.html 그 중 아래의 생성자는 한글 인코딩 문제를 해결할 수 있고 업로드하는 파일이 중복될 때 파일명을..
2016.01.05 -
[필독][기초] / 서블릿 / servlet [part 7]
Filter 필터란 사용자의 요청이 서버 자원에 전달되기 전에 언제나 수행되어야 하는 코드 조각이 있을 때 사용한다. 필터는 web.xml 에서 선언과 매핑을 해야 한다. web.xml 에 필터1 다음에 필터2 가 순서대로 선언되고 매핑되었다면 필터1-필터2-서버 자원 순으로 실행될 것이다. 필터는 응답이 사용자의 웹브라우저에 도달되기 전에도 필터링 할 수 있다. 필터2-필터1-웹브라우저 순서로 응답이 도달된다. 여기서 서버 자원은 서블릿,JSP는 물론이고 HTML페이지와 이미지와 같은 정적인 자원를 포함하며, web.xml 에서 필터 관련 매핑 설정에서 URL 패턴에 부합하는 자원을 말한다. 필터 클래스를 작성하기 위해서는 javax.servlet.Filter 인터페이스를 구현해야 한다. Filter ..
2016.01.05 -
[필독][기초] / 서블릿 / servlet [part 6]
리슨너 리슨너는 웹 애플리케이션의 이벤트에 실행된다. 웹 애플리케이션 이벤트는 서블릿 스펙 2.3 이후 등장했다. 웹 애플리케이션 이벤트는 다음과 같이 나뉜다. •애플리케이션 스타트업과 셧다운 •세션 생성 및 세션 무효 애플리케이션 스타트업 이벤트는 톰캣과 같은 서블릿 컨테이너에 의해 웹 애플리케이션이 처음 로드되어 스타트될 때 발생한다. 애플리케이션 셧다운 이벤트는 웹 애플리케이션이 셧다운될 때 발생한다. 세션 생성 이벤트는 새로운 세션이 생성될 때 발생한다. 세션 무효 이벤트는 세션이 무효화 될때 매번 발생한다. 이벤트를 이용하기 위해서는 리슨너라는 클래스를 작성해야 한다. 리슨너 클래스는 순수 자바 클래스로 다음의 인터페이스를 구현한다. •javax.servlet.ServletContextListe..
2016.01.05 -
[필독][기초] / 서블릿 / servlet [part 5]
ServletConfig 초기화 파라미터를 이용하는 예제 위 예제에서 서블릿의 메소드 구현부에서 JDBC 코드가 있었다. 이번 예제는 JDBC 설정을 ServletConfig 초기화 파라미터를 이용하도록 만든다. 아래 서블릿을 /WEB-INF/src/example 폴더에 만든다. InitParamServlet 서블릿 package example; import java.io.IOException; import java.io.PrintWriter; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLExcepti..
2016.01.05 -
[필독][기초] / 서블릿 / servlet [part 4]
RequestDispatcher 인터페이스 RequestDispathcer는 include()와 forward() 2개의 메소드가 있다. include()메소드는 요청을 다른 자원으로 보냈다가 다른 자원에서 실행이 끝나면 다시 요청을 가져오는 메소드로 요청을 전달한 자원의 결과를 포함해서 클라이언트에게 보내게 된다. forward()메소드는 이름 그대로 클라이언트의 요청을 서버상의 다른 자원에게 넘기는 메소드이다. 다음은 RequestDispatcher 의 forward() 메소드의 예로 모델 2 컨트롤러에 대한 이해에 도움이 될 것이다. ControllerServlet.java package example; import java.io.IOException; import javax.servlet.Requ..
2016.01.05 -
[필독][기초] / 서블릿 / servlet [part 3]
파라미터 전송 방법과 전송된 파라미터의 값 얻기 아래 표에서 폼 작성은 사용자로부터 값을 받기 위한 form 양식을 출력하기 위한 HTML 태그를 보여주고 있다. 표에서 서블릿은 form 양식에서 입력받은 파라미터 값을 서블릿에서 가져오기 위한 코드 조각이다. 폼 작성 서블릿 req.getParameter("addr"); req.getParameter("os"); req.getParameter("curPage"); req.getParamter("passwd"); req.getParamter("content"); A B C D F req.getParameter("grade"); req.getParameterValues("hw"); 축구 농구 야구 req.getParameterValues("sports");..
2016.01.05 -
[필독][기초] / 서블릿 / servlet [part 2]
서블릿 예제 아래 나오는 모든 예제는 ROOT 애플리케이션에 작성한다. 웹 애플리케이션 작성 실습에서 도큐먼트베이스가 C:/www/myapp 인 애플리케이션을 ROOT 애플리케이션으로 변경했었다. JSP는 C:/www/myapp 아래에, 자바는 C:/www/myapp/WEB-INF/src 아래 자바 팩키지 이름의 서브디렉토리에 생성한다. 이클립스를 사용하지 않고 에디트플러스와 같은 일반 에디터를 사용한다. SimpleServlet.java package example; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet;..
2016.01.05 -
[필독][기초] / 서블릿 / servlet [part 1]
서블릿 서블릿이란? 게시판과 같은 프로그램을 만들기 위한 자바측 기술 중 하나이다. java.sql 팩키지를 JDBC 라고 부르는 것처럼, javax.servlet 과 javax.servlet.http 팩키지를 서블릿이라 부른다. 서블릿은 네트워크 프로토콜과 무관하게 설계되었지만, 대부분 HTTP 프로토콜을 사용하는, 웹환경에서 동적인 컨텐츠를 만들 때에 사용된다. 참고로, JSP는 서블릿 이후에, 서블릿 기술을 기반으로 탄생했는데, 서블릿보다 동적인 웹 페이지 화면을 쉽게 만들 수 있다. 서블릿을 학습할 때는 javax.servlet, javax.servlet.http 팩키지에서 서블릿의 기본골격을 먼저 공략하는 것이 현명한 학습방법이다. 서블릿의 기본 골격 서블릿 기본골격은, 모든 서블릿이 구현해야 ..
2016.01.05