교재 실습254 29. 서블릿 초기화 매개변수 (1) 서블릿 초기화 매개변수란 서블릿을 생성하고 초기화할 때, 즉 init()를 호출할 때 서블릿 컨테이너가 전달하는 데이터다. 보통 데이터베이스 연결 정보와 같은 정적인 데이터를 서블릿에 전달할 때 사용한다. 서블릿 초기화 매개변수는 DD파일(web.xml)의 서블릿 배치 정보에 설정할 수 있고, 어노테이션을 사용하여 서블릿 소스 코드에 설정할 수 있다. 가능한 소스 코드에서 분리해 외부 파일에 두는 것을 추천하는데 이는 외부 파일에 두면 변경하기 쉽기 때문이다. 실무에서도 데이터베이스 정보와 같은 시스템 환경과 관련된 정보는 외부 파일에 두어 관리한다. 회원 상세 정보를 조회하고 값을 변경하는 서블릿을 작성하고, 서블릿 초기화 매개변수를 이용하여 소스 코드에 있던 데이터베이스 연결 정보를 web.xml 파.. 2022. 1. 25. 28. 리다이렉트 회원정보를 등록 후 그 결과를 출력하지 않고 즉시 회원 목록 화면으로 이동하게 하는 방법을 리다이렉트(Redirect)라고 한다. 리다이렉트 정보는 응답 헤더에 설정한다. @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ... //SQL문 서버에 보냄 stmt.executeUpdate(); /* 리다이렉트는 HTML을 출력하지 않음. 즉, 웹 브라우저로 본문을 보내지 않음. response.setContentType("text/html; charset=UTF-8"); PrintWriter out = response.getWr.. 2022. 1. 24. 27. 리프래시 일정 시간이 지나고 나서 자동으로 서버에 요청을 보내는 '리프래시(Refresh)' 즉, 새로고침을 알아본다. MemberAddServlet 클래스에서 회원 등록 결과를 웹 브라우저로 보낼 때 리프래시 정보를 함께 보내는 원리이다. - 응답 헤더를 이용한 리프래시 응답 헤더를 이용하여 리프래시 정보를 보낸다. MemberAddServlet 클래스의 doPost()에서 응답 헤더에 리프래시 정보를 추가한다. @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ... response.setContentType("text/html; .. 2022. 1. 23. 26. 요청 매개변수의 한글 깨짐 처리 웹 브라우저에서 보낸 한글 데이터를 서블릿에서 꺼낼 때 한글이 깨지는 경우가 있다. 그 이유와 해결책을 알아본다. 회원등록 입력폼의 이름 입력단에 한글 이름을 입력 후 추가버튼을 클릭한다(그림 1). 회원 목록 조회 결과를 확인한다(그림 2). 한글로 '가각간'이라고 입력한 이름부분이 깨진 것을 확인할 수 있다. DB의 MEMBERS 테이블 조회문을 실행하니 한글이 깨져서 데이터가 저장된 것 또한 확인할 수 있다(그림 3). 한글이 깨진 이유를 살펴보기 위해 웹 브라우저의 기본 문자집합을 확인한다(그림 4). 현재 사용하는 크롬의 기본 문자집합이 유니코드(UTF-8)로 설정되어 있는 것을 확인할 수 있다. (크롬은 따로 기본 문자집합을 확인할 수 있는 방법이 없어서 Set Character Encodin.. 2022. 1. 22. 25. HttpServlet으로 POST 요청 다루기 HttpServlet 클래스의 doPost()를 이용하여 POST 요청을 다루는 방법과 JDBC를 이용하여 회원 정보를 DB에 저장하는 방법을 알아본다. MemberAddServlet 클래스에서 doPost()를 오버라이딩 한다. 이 메소드는 클라이언트에서 POST 요청을 보낼 때 호출된다. @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //JDBC 객체를 보관할 참조 변수 선언 Connection conn = null; PreparedStatement stmt = null; //PreparedStatement : 반복적인.. 2022. 1. 20. 24. HttpServlet으로 GET 요청 다루기 HttpServlet 클래스를 사용하여 서블릿을 만드는 방법을 알아본다. 지금까지 서블릿 클래스를 만들 때 service() 메소드를 정의하였지만 HttpServlet 클래스를 상속받으면 service() 대신 doGet()이나 doPost()를 정의한다. 먼저 doGet()의 사용법을 알아본다. 기존의 작업한 회원 목록 서블릿을 실행한 화면에 신규 회원 링크를 추가한다. ... //HTML 태그 출력 PrintWriter out = response.getWriter(); out.println(""); out.println("회원목록"); //신규 회원 링크 - a태그의 링크 URL은 add다. out.println("신규 회원"); //a태그의 href에서 URL이 '/'로 시작하면 절대 경로, '/'.. 2022. 1. 19. 23. 데이터베이스에서 데이터 가져오기 (2) 데이터베이스로부터 전체 회원 정보를 가져와서 출력하는 서블릿을 만들어본다. web04 프로젝트의 spms.servlets 패키지의 MemberListServlet 클래스를 생성한다. package spms.servlets; import java.io.IOException; import java.io.PrintWriter; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; import javax.servlet.GenericServlet; import javax.servlet.ServletException; import javax.servlet.Servlet.. 2022. 1. 18. 22. 데이터베이스에서 데이터 가져오기 (1) 교재에서 사용하는 DBMS : MySQL 서블릿이 하는 주된 일은 클라이언트가 요청한 데이터를 다루는 일이다. 데이터를 가져오거나 입력, 변경, 삭제 등을 처리하려면 데이터베이스의 도움을 받아야 한다. 데이터베이스는 개발자들이 쉽게 데이터를 저장하고 꺼낼 수 있도록 도와주는 프로그램이다. 데이터베이스를 사용하려면 2가지가 필요한데, 첫 번째는 데이터베이스에 요청을 전달하고 결과를 받을 때 사용할 도구이다. 자바에서는 데이터베이스와의 통신을 위해 JDBC 기술을 제공한다. 두 번째는 데이터베이스에 명령을 내릴 때 사용할 SQL(Structured Query Language)이라는 데이터를 정의하고 조작할 때 사용하는 데이터베이스를 위한 표준 명령어다. 개발자는 SQL로 데이터베이스가 할 일을 작성하고, J.. 2022. 1. 17. 21. JDBC와 데이터베이스 자바에서는 데이터베이스로부터 데이터를 가져오거나 입력, 수정, 삭제 등을 할 때 JDBC를 사용한다. 이런 JDBC가 없던 시절에 데이터를 어떻게 다루었는지, JDBC API와 JDBC 드라이버는 무엇인지, 또 이 둘의 차이점과 JDBC 드라이버의 4가지 종류는 무엇인지 알아본다. 1. 데이터베이스가 없던 시절(그림1) - 파일 입·출력 API를 사용하여 데이터 입·출력 프로그래밍 검색, 삭제, 변경을 고려한 데이터 구조를 세밀하게 정의하고, 그 구조에 따라 데이터를 읽고 써야하기 때문에 번거롭고 힘들다. - 애플리케이션의 데이터가 분리되어 통합 조회 어려움 데이터 파일이 애플리케이션 별로 분리되고 격리되어 있기 때문에 서로 관련된 데이터를 하나로 묶어서 처리하려면 매우 복잡해진다. - 데이터의 중복 발.. 2022. 1. 15. 이전 1 ··· 23 24 25 26 27 28 29 다음