목록WEB (14)
Hayden's Archive
* Summary SqlSession * query statement * INSERT INTO ------------- insert() * DELETE FROM ------------- delete() * UPDATE table ------------ update() * SELECT all -------------- List selectList() * SELECT one -------------- Object selectOne() DB 테이블 - mysawon VO - MySawon.java package com.encore.mybatis.vo; /* * Framework에서는 반드시 기본 생성자를 넣어야 한다.(생성자 아무것도 안 넣었을 경우에는 알아서 만들어짐) * MyBatis에서는 값의 주입을 S..
Persistence Layer DAO는 반드시 Component 기반으로 만들어져야 한다. DAO가 있는 레이어를 Data Access Layer 또는 Persistence Layer라고 함. 여기에서 Raw한 데이터를 가져옴. 퍼시스턴스 계층(Persistence Layer) 참고 : https://blog.naver.com/nine01223/220373593398 Service Layer - 데이터를 가공. 이렇게 한 것을 최종적으로 Controller에게 넘겨줌. MyBatis - MyBatis 는 개발자가 지정한 SQL, 저장프로시저 그리고 몇가지 고급 매핑을 지원하는 퍼시스턴스 프레임워크이다. - MyBatis 는 JDBC 코드와 수동으로 셋팅하는 파라미터와 결과 매핑을 제거한다. - MyBa..
* Summary 하나의 bean은 하나의 객체와 같음. bean 태그에는 필수속성 2개가 있음. id와 class class에 FQCN을 쓰고, id에는 인스턴스명을 씀. 주문서를 보고, 주문서대로 객체를 만들고 객체를 보관하고 있는 클래스가 DI Container인 것. * 폴더 구조 Dice.java (인터페이스) package spring.service.dice; public interface Dice { void selectedNumber(); int getValue(); } DiceAImpl.java (DiceBImpl.java, DiceCImpl.java도 거의 동일) package spring.service.dice.impl; import java.util.Random; import spr..
(이클립스를 가동해서 Spring을 하려면 STS(Spring Tool Suite)를 연결해야 함. 그런데 지금 쓰는 이클립스 버전이 높고 호환이 잘 안 돼서 STS를 가지고 있는 이클립스를 설치하였음.) 폴더 구조 이클립스에서 Dynamic Web Project를 만들 건데, 기본적으로 있는 src 폴더를 Remove 하고 아래와 같은 큰 줄기 3개를 만들겠음. (모든 폴더는 이 세 가지 폴더 안에 들어가게 됨.) java 폴더 외에 resources 폴더에는 Meta Data(특정한 정보를 상수값으로 가지고 있는 파일)를 넣겠음. Test 클래스는 따로 구분.(~Test, ~AppTest로 끝나는 클래스) src 폴더를 다각화 시킬 것. src 폴더 안에는 클래스만 넣는다. test는 그저 실행 파일..
Spring Framework에는 Spring MVC Fattern, Spring DI, Spring JDBC, Spring AOP, Spring Security 등 여러가지가 포함되어 있음. 이렇게 여러개의 모듈들이 합쳐진 것이 통틀어서 Spring Framework임. 하나하나가 완벽한 Component이므로 꼭 Spring에서 제공하는 거 다 안 써도 됨. 다른 거 끼워서 쓰면 됨. Spring JDBC 현업에서 거의 안 씀. 대신 JPA, MyBatis(MyBatis의 이전 버전은 IBatis)를 씀. 일본에서는 Spring JDBC를 많이 씀. Spring Framework에만 집중하지 말고 Framework란 무엇인가....? -> 회사에서 어떤 Framework를 쓰든 적응할 수 있어야 함...
3.1은 web.xml을 선택적으로 만들 수 있다.(Generate web.xml deployment desciptor을 선택적으로 체크) web.xml이 없으면 자바 코드에다가 하는데 Annotation으로 한다. 개발자 입장에서는 Annotation 구조로 하는 게 편하다.(주로 SI 업체) 대기업의 관리자, 유지, 보수하는 입장에서는 web.xml로 만들어주는 게 좋다.(주로 SM 업체) 서블릿 annotation에서 load-on-startup 처리 참고 https://dololak.tistory.com/737 [서블릿/JSP] 톰캣(서블릿 컨테이너) 시작시 Servlet 초기화 되도록 설정하기 참고글 [서블릿/JSP] 서블릿의 초기화 과정 및 초기화 방법 [서블릿/JSP] init() 메서드를 ..
MVC(Model-View-Controller) 패턴 : Model(DAO와 VO) & View(JSP) & Controller(Servlet) 서블릿은 앞에서는 화면과 손 잡고, 뒤에서는 DAO와 손 잡는다. 1. 서블릿이 제일 먼저 클라이언트로부터 폼값을 받는다. 2. 폼값을 바탕으로 VO 객체를 생성한다. - 폼값 3개면 VO의 필드 3개, DB 테이블 컬럼 3개. - id로 회원 검색하는 경우 id 하나 밖에 없으니까 이 과정 패스. 경우에 따라 다름. 3. DAO(이 때 DAO는 싱글톤) 리턴 받고 Business Logic을 호출 → DAO가 DB의 데이터를 조작하거나 DB로부터 데이터를 받아온다. - 예: registerMember(vo), getMember(id) - 이에 따라 DAO가 D..
페이지 이동을 네비게이션이라고 함. Web 페이지 이동 1. Forwarding(포워딩. 앞으로 간다. 제일 많이 씀. 거의 90%) 2. Redirect Forwarding 방식 - 요청하고 응답하고, 요청하고 응답하면 첫번째 요청이랑 두번째 요청이 전혀 관련 없는 남남. 이걸 Stateless한 protocol라고 함. - 원래는 요청 2번, 응답 2번 해야 하는 것을 요청 1번, 응답 1번으로 줄일 수 있음. - 포워딩을 하게 되면 응답하지 않고 서버상에서 다이렉트로 이동함. - 그렇게 되면 클라이언트로부터 받은 폼값을 그대로 가져가게 됨. ServletRequest에 저장한 객체도 없어지지 않고 JSP로 넘어가서도 쓸 수 있음. 그리고 나서 응답하면 죽으니까 메모리 효율성 뛰어남. 이 경우에는 H..
Attribute : 서버상에서 데이터(개체)를 보관하는 저장소. -보관할 때 Binding : setAttribute(" ", object) //키는 String으로 밸류는 객체로 들어감. -찾아올 때 Look-up : getAttribute(" ") //키로 찾아옴. Attribute 총 3가지가 있음. -> 용도에 따라 적절하게 사용해야 함. : 모두 setAttribute(), getAttribute가 있음. : 동일한 메소드가 서로 다른 객체에 있을 때는 이름, 기능이 똑같더라도 뭔가 다른 점이 있음. : 데이터가 보관되는 scope가 다름. 데이터가 저장되는 유통기한이 다름. - ① ServletRequest : WAS 가동하자마자 만들어짐. 서버 꺼지기 전까지 저장함. 모든 서블릿들이 공유할..
- 요청을 하면 폼값을 받고, 응답을 하면 페이지를 돌려줘야 하는데 이 때 영어는 깨지지 않지만 한글은 깨짐. - 따라서 양방향 한글 인코딩 처리가 필요하다. - 한글 처리부터 하고 폼값 받아와야 하고, 한글 처리부터 하고 응답해야 한다. - 따라서 service() 메소드에 다음 코드를 포함시킨다. request.setCharacterEncoding("utf-8"); //요청 관련 인코딩 처리 response.setContentType("text/html;charset=utf-8"); //응답 관련 인코딩 처리 - 그런데 filter를 사용하면 서블릿을 작성할 때마다 번거롭게 위 코드를 적어주지 않아도 된다. - Filter의 원리 필터를 만들어주고 컨테이너가 알아들을 수 있게 등록해줘야 함. 필터 뒤..