웹개발/JSP

    [JSP] MVC Model, Front-Controller 패턴, Model2의 페이지 이동 방식

    1. MVC JSP 방식- 처리도 jsp에서 하는 방식(jsp에서 DB 연결해서 사용) - 각 페이지마다 필요시 자바 코드가 작성되며, DB와 연결하는 코드도 JSP 파일 안에서 모두 작성 - 분리되어 있지 않기 때문에 소규모 프로젝트에는 어울리는 방식이지만 가독성이 떨어지고 분업과 유지보수가 좋지 않으므로 규모가 커지면 불편해짐 Model1 방식- b.jsp에서 DAO()의 메소드를 호출함으로써 자바 코드가 섞이게 됨 - 하지만 선언은 분리되어 JAVA 파일에 구현되어 있으므로 JSP 내의 JAVA 코드의 양이 굉장히 줄어들게 됨 - 페이지가 확장될수록 유지보수가 상대적으로 좋지 않음 Model2 방식- a.jsp에서 다음 페이지로 이동하기 전에 필요한 비즈니스 로직(처리를 담당하는 곳)을 b.java..

    [JSP] EL문과 JSTL문

    - 라이브러리로 자바 구문을 만들어 놓고 필요할 때마다 꺼내 쓰면 되기 때문에 유지보수에 편하다. - JSP 페이지 내에서 자바 코드와 HTML 코드(태그 형태)가 섞여 있으면 가독성이 떨어진다. - EL문과 JSTL문을 사용하면 HTML과 태그 형태로만 구성된 일관된 소스코드를 볼 수 있다. 1. EL문 - Expression Language - 값을 간결하고 간편하게 출력(표현)할 수 있도록 해주는 언어 - EL 문은 ${} 안에 있는 변수는 필드를 찾아오는 게 아니라 getter를 찾아가는 것이다. - 그래서 우리가 만드는 객체를 사용하고 싶으면 setter, getter로 해야 한다. JSP(자바) EL ${name} * setAttribute를 할 수 있는 4가지 ① pageContext : 현..

    [JSP] MyBatis

    1. MyBatis - 모델(객체)과 DB(테이블)의 매개체 역할의 프레임워크 - ORM(Object Relational Mapping) - Java 소스코드 안에 SQL문을 작성하면 코드가 길어지고 섞여 있어서 유지보수 및 분업이 어려움 - MyBatis는 기존 JDBC 방식과는 달리 SQL문을 XML 파일에 작성함으로써 코드가 줄어지고 SQL문 수정이 편함 - 또한 DBCP를 사용하여 커넥션을 여러개 생성하기 때문에 JDBC만 사용하는 것보다 작업 효율과 가독성이 좋아짐 iBatis(jdk 1.4이상부터 지원) -> MyBatis(jdk 1.5이상부터 지원) - iBatis와 MyBatis의 차이점은 몇 개의 문법 및 사용용어(명칭, 단어) 변경 등이 있음 MyBatis 설치 https://blog...

    [JSP] 회원가입 유효성 검사, 비밀번호(정규식) 검사

    1. 회원가입 유효성 검사 - 회원가입을 위해 다양한 유효성 검사가 존재하며, 유효성 검사는 JavaScript로 하기 때문에 양이 많아지면 태그가 너무 길어지게 된다. - 그래서 외부 js 파일을 만들어 사용하는 것이 좋다. - 여기서 다룰 것은 유효성 검사에 관한 함수만 다룰 것이다. - 중복 검사는 Ajax를 이용해서 하였고 우편번호 찾기는 API를 이용함 - onsubmit 제출을 할 때마다 유효성 검사를 하기 위해 사용 2. 아이디 유효성 검사 - 아이디 유효성 검사로는 아예 작성을 안 했을 때, 글자 수, 중복 검사를 안 했을 때, 중복되었는데도 가입하려 했을 때이다. 3. 비밀번호 유효성 검사 - 비밀번호 유효성 검사로는 아예 작성을 안 했을 때, 글자 수, 정규식을 이용한 포함되어 있는 문..

    [JSP] 다양한 세션 이용

    - 회원가입, 로그인 등등 자신의 상태 정보를 저장하거나 정보를 전달해야 하는 경우가 있다. - 이럴 때 세션이나 쿠키를 사용하면 되는데, 세션을 사용할 때 단순히 정보를 전달할 때 사용하는 경우라면 세션 삭제를 꼭 해주어야 한다. * 세션 복습 // 세션 생성, 값은 문자열, 객체 뭐가 되도 무관 session.setAttribute("키","값"); // 세션 키에 맞는 값 반환 session.getAttibute("키"); // 키에 맞는 세션 삭제 session.removeAttribute("키"); // 모든 세션 삭제 session.invalidate(); 1. 회원가입 후 세션 이용 - 회원가입을 성공을 하고 로그인 페이지에 갔을 때 방금 회원가입 한 아이디를 아이디 창에 채워 넣는다. 2...

    [JSP] DBCP(Database Connection Pool)

    1. DBCP(Database Connection Pool) - 원칙은 항상 데이터베이스를 열어주면(Connection) 무조건 닫아줘야 한다.(conn.close()) - 사용자가 한명이 아니라 여러명이기 때문에 연결이 엄청 많아지기 때문에 부하가 걸리게 된다. - 이렇게 되면 계속 Connection을 열고 닫고를 반복해줘야 하기 때문에 컴퓨터에서 자원이 낭비된다. - 이것을 해결해주는 것이 DBCP이다. - 사용자의 요청이 있을 때마다 DB 연결을 한다면 코드가 복잡해지며 많은 요청이 있을 때 연결속도가 저하될 수 있다. - 따라서 이미 Connection을 만들어 두고 필요시 저장된 공간(Connection Pool)에서 가져다 쓰고 다시 반납하는 기법이다. * JNDI(Java Naming an..

    [JSP] Ajax(Asynchronous Javascript and XML), GET/POST 방식

    * GET 방식과 POST 방식 - GET이 기본이고 필요할 때 POST 사용 - 전송할 데이터 양이 적고 노출되어도 무방하다면 GET 방식을 기본으로 사용하고, 전송할 데이터의 양이 크거나 노출이 되면 안 될 데이터라면 POST 방식을 사용 GET 방식 - 주소에 데이터를 추가해서 전달하는 방식, 쿼리스트링에 포함되어 전송되므로 길이의 제한이 있으며 주소에 데이터가 보이므로 보안상 취약점이 존재 query string : url 뒤에 ? 이후의 문자열 "키1=값1&키2=값2&..." POST 방식 - 데이터를 별도로 요청 body에 첨부하여 전달하는 방식 - 브라우저의 히스토리에도 남지 않고 데이터는 쿼리 문자열과는 별도로 전송 - 따라서 데이터의 길이에 대한 제한도 없고 GET 방식보다 보안성이 좋음..

    [JSP] 세션(Session)

    1. 세션(Session) - 내장 객체로서 브라우저마다 한개씩 존재하고, 고유한 SessionID 생성 후 정보를 추출 - 쿠키는 사용자 컴퓨터에 저장하는 것이고 세션은 서버에 공간을 할당해주고 사용자 컴에는 서버 공간에 접근할 수 있는 정보(SessionID)를 헤더에 있는 쿠키 정보에 저장해 놓는다. - 사용자가 요청을 보낼 때 헤더에 있는 쿠키 정보를 같이 보내면서 서버가 그 SessionID를 보고 서버에 할당된 공간을 이용 - 그래서 쿠키를 아예 삭제하거나 허용을 하지 않는다면 이 세션도 사용을 못한다. - 쿠키는 서버가 직접 저장을 해줘야 되지만 SessionID는 자동적으로 헤더 쿠키에 저장된다. - 쿠키보다는 세션을 쓰는 것이 더 안정적이다. - 계속 쓰는 것보다 필요한 정보를 저장하는 ..

    [JSP] 쿠키(Cookie)

    1. 쿠키(Cookie) - 클라이언트 컴퓨터에 정보를 저장 - 웹 브라우저가 보관하고 있는 데이터로, 웹 서버에 요청을 보낼 때 쿠키들을 헤더에 담아서 전송 - 온 쿠키들을 보고 서버에서 서버 자신이 저장한 게 있는지 확인 - 서버는 쿠키를 무조건 저장할 수 있긴 하지만 클라이언트에게 쿠키 허용을 물어봐야 하며 결국 쿠키를 저장할지 안할지는 사용자에게 달려있음 * 전송은 헤더와 바디가 있는데, 헤더에는 관련된 정보들이 담겨 있고 바디에는 실제 데이터가 포함되어 있다. 2. 장단점 - 클라이언트의 일정 폴더에 정보를 저장하기 때문에 서버의 부하를 줄일 수 있음 - 데이터가 사용자 컴퓨터에 저장되기 때문에 보안의 위협을 받을 수 있음 - 데이터 저장 용량에 한계가 있음(소용량의 문자열 데이터) - 일반 사..

    [JSP] 내장 객체, Form 유효성 검사 및 예제

    1. 내장 객체 - 안에서만 사용 가능 - 객체화 없이 사용할 수 있는 객체이며, JSP 파일이 서블릿으로 변환될 때 웹 컨테이너가 자동으로 메모리에 할당해서 제공 request 웹 브라우저의 요청에 대한 정보를 저장 response 웹 브라우저의 요청에 대한 응답 정보를 저장 out JSP 페이지 body에 출력할 내용 정보를 저장 session 하나의 웹 브라우저의 정보를 유지하기 위한 세션 정보를 저장 pageContext JSP 페이지에 대한 정보를 저장 config JSP 페이지에 대한 설정 정보를 저장 exception JSP 페이지에서 예외가 발생한 경우 사용되는 객체 2. 폼 유효성 검사 - 개발자가 원하는 데이터를 사용자가 정확하게 입력했는지 검사하는 것 - DB 처리 이전에 해야 하기 ..