ALL Post 204

스프링 시큐리티 한글 설정(Java config)

스프링 시큐리티 한글 설정 게시판에 스프링 시큐리티를 접목하여 로그인한 사용자만 게시물을 등록할 수 있게 했다. 그런데 갑자기 한글 인코딩이 되지 않는 문제가 발생했다. https://stackoverflow.com/questions/20863489/characterencodingfilter-dont-work-together-with-spring-security-3-2-0 이 답변에 따르면, "We need to add CharacterEncodingFilter before filters who read request properties for the first time. There is securityFilterChain (stands second. after metrica filter) and we ..

ERROR!!!!!!! 2020.09.11

세션 로그인 예제

서블릿과 DB를 연동해서 ID 체크를 하고, 로그인 상태를 유지하는 예제다. 순서는 이렇다. login.html에서 아이디와 비밀번호를 입력한다. LoginServlet은 입력 받은 ID로 DB에 조회한다. 없는 아이디라면 login.html로 돌려보낸다. 있는 아이디라면 /show로 이동하여 회원 정보를 확인할 수 있다. VO public class MemberVO { private String id; private String pwd; private String name; private String email; private Date regdate; //Getter Setter 생략... ... ... } DAO public class MemberDAO { private Connection con; ..

Servlet-JSP 2020.09.10

encodeURL()

쿠키를 사용하지 않겠다고 설정한 브라우저에서는 쿠키는 물론 세션도 사용할 수 없다. 이런 경우, encodeURL()로 직접 서버에서 브라우저로 응답을 보낸 후, URL Rewriting을 이용해 JSESSIONID를 서버로 전송하여 세션 기능을 사용할 수 있다. package pro09.sec04; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; impor..

Servlet-JSP 2020.09.10

세션

Session ** 웹 페이지들 사이에서 공유하는 정보를 서버에 저장해두고, 웹 페이지들을 매개한다는 점에서 세션도 쿠키와 다르지 않다. 다른 점이라면 쿠키는 클라이언트 PC에 저장되고, **세션은 서버 메모리에 저장된다는 점이다. 쿠키에 비해 보안이 좋기 때문에 로그인처럼 보안을 요구하는 데이터를 다룰 때 세션을 이용한다. 세션은 브라우저 당 하나가 생성된다. 세션의 특징 데이터를 서버 메모리에 저장한다. 블아줘의 세션 연동은 쿠키를 이용한다. 쿠키보다 보안에 유리하다. 서버에 부하를 줄 수 있다. 브라우저 당 하나의 세션SessionID이 생성된다. 세션은 유효시간을 가진다.(기본 30분) 로그인 유지, 장바구니 등에 주로 사용한다. 세션 생성 과정 브라우저로 사이트에 접속한다. 서버는 접속한 브라우..

Servlet-JSP 2020.09.10

쿠키

세션 트래킹 HTTP프로토콜 방식으로 통신하는 웹 페이지는 서로 어떤 정보도 공유하지 않는다. 쿠팡 메인 페이지에서 로그인하고 주문 페이지에서 또 다시 로그인하지 않아도 되는 이유는 세션 트래킹Session Tracking이라는 웹 페이지 연결기능을 구현했기 때문이다. HTTP프로토콜은 서버-클라이언트 통신 시 스테이트리스stateless방식으로 통신한다. 브라우저에서 새 웹 페이지를 열면 이전 웹 페이지에 대한 어떤 정보도 새 웹페이지는 알 수 없다. stateless란, 각각 웹 페이지 정보, 상태를 다른 웹페이지와 공유하지 않는 방식을 말한다. 따라서 웹 페이지를 서로 연결하기 위해 세션 트래킹을 이용해야 한다. 웹 페이지를 연동하는 방법은 몇 가지가 있다. hidden 태그 URL Rewritin..

Servlet-JSP 2020.09.10

ServletContext & ServletConfig

이미지 출처 : https://www.oreilly.com/library/view/head-first-servlets/9780596516680/ch05s10.html ✔ javax.servlet.ServletContext 특징 서블릿 - 컨테이너 연동을 위해 사용한다. 컨텍스트(웹 애플리케이션)마다 하나의 ServletContext가 생성된다. 서블릿끼리 자원을 공유하는 데 사용한다. 컨테이너 실행 시 생성되고 종료 시 소멸한다. 제공하는 기능 서블릿에서 파일 접근 자원 바인딩 로그 파일 컨텍스트에서 제공하는 설정 정보 제공 ServletContext의 메서드 /*주어진 name을 이용해 바인딩된 value를 가져온다.*/ getAttribute(String name) /*바인딩된 속성들의 name을 반..

Servlet-JSP 2020.09.10

바인딩

바인딩 웹 프로그램 실행 시 자원(데이터)을 서블릿 관련 객체에 저장하는 방법 GET방식으로 많은 데이터를 전달하기에 한계가 있다. 많은 양의 데이터를 전달할 때 바인딩binding을 사용한다. 그냥 key-value다. /*데이터를 각 객체에 바인딩한다.*/ setAttribute(String name, Object obj) /*각 객체에 바인딩된 데이터를 name으로 가져온다.*/ getAttribute(String name) /*각 객체에 바인딩된 데이터를 name으로 제거한다.*/ removeAttribute(String name) 예제 보내는 쪽 @WebServlet("/bind") public class BindingTestServlet extends HttpServlet { public vo..

Servlet-JSP 2020.09.10

Connection Pool

커넥션 풀 웹 애플리케이션이 실행됨과 동시에 연동할 데이터베이스와 미리 연결 해둔다. 필요할 때마다 미리 연결해놓은 상태를 이용해 빠르게 데이터베이스 관련 작업을 할 수 있다. 요약하자면 미리 데이터베이스와 연결 시킨 상태를 유지하는 기술을 커넥션 풀이라 부른다. JDBC의 문제점은 오래 걸린다는 것이다. Connection Pool객체를 이용하면 미리 연결된 상태를 유지하므로 빠르게 작업할 수 있다. 커넥션 풀 동작과정 톰캣 컨테이너 실행 Connection pool 객체 생성 커넥션 객체 DBMS 연결 데이터베이스와 연동 작업 시, ConnectionPool이 제공하는 메서드를 호출 톰캣은 자체적으로 ConnectionPool을 제공한다. JNDI Java Naming and Directory Int..

Servlet-JSP 2020.09.10

포워드

Forward 하나의 서블릿에서 다른 서블릿 또는 JSP와 연동하는 방법을 포워드라고 한다. 요청에 대한 추가 작업을 다른 서블릿에서 수행하게 한다. 요청에 포함된 정보를 다른 서블릿, JSP와 공유할 수 있다. 요청에 정보를 포함시켜 다른 서블릿에 전달할 수 있다. Model2 개발 시 서블릿에서 JSP로 데이터를 전달하는 데 사용한다. 네 가지 포워드 1.redirect HttpServletResponse객체의 sendRedirect() 이용 웹 브라우저에 재요청하는 방식 예시 sendRedirect("/board/register"); 2. Refresh HttpServletResponse의 addHeader() 이용 웹브라우저에 재요청 예시 response.addHeader("Refresh",경과시..

Servlet-JSP 2020.09.10

JDBC

비즈니스 로직 클라이언트로부터 받은 요청을 처리하는 과정을 비즈니스 로직이라 한다. 이를테면 쇼핑몰에서 클라이언트가 1번 상품 정보를 요청한다. 그럼 서버는 데이터베이스에 1번 상품 정보를 조회한다. 조회 결과를 클라이언트에게 반환하기까지 수행하는 작업이 비즈니스 로직이다. 서블릿 - DB 연동 실습 MySQL -- table 생성 CREATE TABLE `servletex`.`t_member` ( `id` VARCHAR(30) NOT NULL, `pwd` VARCHAR(50) NOT NULL, `name` VARCHAR(50) NULL, `email` VARCHAR(50) NULL, `regdate` TIMESTAMP NOT NULL DEFAULT now(), PRIMARY KEY (`id`)); --..

Servlet-JSP 2020.09.10