2. URL, 파라미터 설정
미리 URL과 파라미터를 설정해 주자.
만들기 전 철저한 구성을 해두어야 차후 실수할 일이 적다.
게시글 리스트
URL : cp/bbs/list.do
JSP : [/WEB-INF/views]/bbs/list.jsp
글 쓰기 폼
URL : cp/bbs/created.do
JSP : [/WEB-INF/views]/bbs/created.jsp
글 저장 -> 게시글 리스트로 리다이렉트
URL : cp/bbs/created.do
글 보기
URL : cp/bbs/article.do
JSP : [/WEB-INF/views]/bbs/article.jsp
글 수정 폼
URL : cp/bbs/update.do
JSP : [/WEB-INF/views]/bbs/created.jsp
글 수정 완료 -> 게시글 리스트로 리다이렉트
URL : cp/bbs/update.do
글삭제 -> 게시글 리스트로 리다이렉트
URL : cp/bbs/delete.do
-------------------------------------
파라미터
1. 게시글리스트
페이징처리와 검색등등 복잡하다,, 리스트가 가장 까다로움.
게시물 리스트 -> 글쓰기버튼클릭 -> 글쓰기 폼
게시물 리스트 -> 글제목 클릭 글번호,페이지번호[,검색키,검색값] -> 글보기
게시물 리스트 -> 페이지번호 클릭 - 페이지번호[,검색키,검색값] -> 게시글리스트
게시물 리스트 -> 검색버튼 검색키,검색값 -> 게시글리스트
---------------------------------------
5. 글 수정 폼
글 수정 폼 -> 취소버튼 페이지번호 -> 게시글 리스트
-넘겨받은 파라미터
글번호, 페이지번호
-프로그램 작성
파라미터로 넘어온 글번호,페이지번호 넘겨받기
해당게시물을 테이블에서 가져온다
해당 게시물이 없으면 리스트로 리다이렉트 한다. [파라미터 : page ]
포워딩할 jsp로 넘길 값 설정 해당 게시물, 페이지번호, 작업구분 [mode : update]
글 수정 JSP로 포워딩
-----------------------------------------------
6. 글 수정 완료
- 넘겨 받은 파리미터
제목,이름,내용,패스워드,글번호,페이지번호
- 프로그램 작성
파라미터로 넘어온 제목, 이름, 내용,패스워드, 글번호, 페이지번호 넘겨 받기
테이블의 해당 게시물을 수정한다.
글 리스트로 리다이렉트 한다. [파라미터 : page]
----------------------------------------------------
7. 글 삭제
- 넘겨 받은 파라미터
글번호, 페이지번호
- 프로그램 작성
파라미터로 넘어온 글번호, 페이지번호 넘겨 받기
테이블의 해당 게시물을 삭제한다.
글 리스트로 리다이렉트 한다. [ 파라미터 : page]
'WEB > 게시판구현_springMvc2+mybatis' 카테고리의 다른 글
6. 마이바티스 설정 mybatis-config, mybatis-context, mapper (0) | 2017.04.12 |
---|---|
5. mvc-config.xml ,application-config 설정 (0) | 2017.04.12 |
4. web.xml 설정 (0) | 2017.04.12 |
3. 메이븐, pom.xml 설정 (0) | 2017.04.12 |
1.STS - 스프링 mvc2 게시판 만들기 전체적인 개요 (0) | 2017.04.12 |
1.STS - 스프링 mvc2 게시판 만들기 전체적인 개요
STS -스프링 4.xx mvc2 , 마이바티스 3.xx 게시판 환경설정
- 환경설정 전체적인 개요
1. STS 설치 및 실행
2. tomcat 8.5설치후 - sts에 톰캣추가
3. Spring MVC 프로젝트 생성 (스프링레거시 프로젝트생성)
4. MVC 4.x.x환경설정
- pom.xml 라이브러리 레포지터리,디펜던시 설정
(오라클 등)
- web.xml(빈 환경설정,서블릿등록 컨트롤러 환경설정파일 경로지정,매핑방식등)
- mvc-config.xml ( 스프링 환경설정) 커맨더의 처리결과를 보여줄 view를 결정
- application-config.xml (스프링에서 공통적으로 사용되는 객체를 생성하기 위한 xml)
5.Mybatis환경설정 및 DAO클래스 작성
- jdbc.properties ( JDBC 오라클 환경설정파일 주소,계정정보 등.
- mybatis-config.xml ( mybatis환경설정 )
- mybatis-context.xml ( mybatis 객체생성을 위한 xml)
---------------------------------
6. 맵퍼, DAO등 작성
- bbsmapper.xml ( 게시판에 사용될 맵퍼 우선은 내용없이 만들기.)
- CommonDAO.java , MyBatisDaoImpl.java ( 공통으로 사용될 DAO )
- myutil.java ( 페이징 처리등을 작성할 클래스 )
------------------
1.테이블생성
2.게시물 입력 폼 작성
3.DTO클래스
4.컨트롤러,서비스 클래스
5.맵퍼 작성
--------------------
글쓰기 기능부터 개발 후 데이터 들어가는지 확인한다.
'WEB > 게시판구현_springMvc2+mybatis' 카테고리의 다른 글
6. 마이바티스 설정 mybatis-config, mybatis-context, mapper (0) | 2017.04.12 |
---|---|
5. mvc-config.xml ,application-config 설정 (0) | 2017.04.12 |
4. web.xml 설정 (0) | 2017.04.12 |
3. 메이븐, pom.xml 설정 (0) | 2017.04.12 |
2. URL, 파라미터 설정 (0) | 2017.04.12 |
마이바티스 사용이유
마이바티스란?
마이바티스는 퍼시스턴스계층 (데이터처리계층)의 프레임워크로
정형화된 테이블 구조에 의존하지 않고 sql구문의 실행결과에 객체를 매핑하는 방식이다.
테이블 구조가 복잡해지고 정규화 되 있지 않아도 테이블을 변경할 필요 없이 기존 개발방법에서 사용한
sql을 그대로 사용할 수가 있고
sql에 적용한 튜닝들도 모두 그대로 유지된다.
작동흐름
- 데이터처리를 위해 DAO는 MYBATIS에 제공하는 객체의 메서드를 호출한다
- 마이바티스는 SQL문이 저장된 맵퍼 파일에서 데이터 처리에 필요한 SQL문을 찾는다.
- 마이바티스는 맵퍼 파일에서 찾은 SQL을 서버에 보내고자 JDBC드라이버를 사용
- JDBC드라이버는 SQL문을 DB서버로 보낸다.
- 마이바티스는 SELECT문의 실행 결과를 값 객체에 담아서 반환.
INSERT UPDATE DELETE문인경우 입력 변경 삭제된레코드의 개수 반환.
(오라클 기준)
애플리케이션에서 DB 접속할 때 마다 DB쪽에서도 1:1로 프로세스가 생성됩니다. 예를 들어, 클라이언트 100개가 접속하면 오라클 서버 쪽에도 100개의 프로세스가 생성되는 식이죠. 문제는 오라클 서버 프로세스 생성하는 게 상당한 오버헤드를 일으킬 수 있습니다. 무엇보다 자원 재사용이 안되니까요.
그래서 나온게 커넥션 풀링(connection pooling)입니다. 미리 DB 연결을 맺어두고 그 pool 내에서 필요할 때 꺼내서 사용하고 반환하는 식이죠. 물론 접속이 늘어나면 커넥션 풀에서 자동으로 DB 접속 세션 수를 늘립니다.
mybatis나 ibatis가 커넥션 풀링 기능만 제공하는 건 아니에요. 말씀하신 것처럼 웹로직이나 다른 WAS에서도 기본적으로 제공하는 기능입니다.
단순히 커넥션 풀링 때문에 프레임워크를 쓰는 건 아니고요.
그리고 JSP나 ASP 코딩해보셨으면 아시겠지만, 자바 코드 내에 HTML 태그하고 SQL 쿼리가 짬뽕되면 가독성이나 유지보수성이 현저히 떨어집니다. JAVA 코드 내에 SQL을 문자열 +해서 짠 코드 보신적 있으시죠? SQL이 조금만 길어지고 복잡해져도 눈돌아갑니다.
그래서 이걸 분리하려는 움직임이 생긴거죠. 그러면 가독성이나 유지보수 시 상당히 편리해집니다. 생산성은 곧 비용과 직결되죠.
1. 가장 큰 이유는 빠른 개발(생산성)이 가능합니다.
- DBCP만을 썼을때 Connection, ResultSet, Statement, Transaction 관리도 해야 하고
- 특히 운영하다 명시적인 Connection, ResultSet, Statement, Transaction을 잘못(닫질 않아) 써서 서버가 죽는경우 허다합니다.
- ResultSet의 데이터 매핑도 신경써야 하고
- 소스코드가 하드코딩(""+""+"")되어 있음 소스 분석 및 관리가 힘듭니다. (10,000 라인 넘어가는 소스 한번 보믄 이해하실겁니다. )
2. 보안적으로 SQL Injection 보안에 신경쓰지 않아도 됩니다.
- 물론 DBCP를 쓸 경우 PrepareStatement 쓰믄 문제 없지만
3. RDBMS가 Oracle일 경우 Blob, Clob 치환에 신경쓰지 않아도 됩니다.
4. 디버깅이 쉬워집니다.
- iBatis, myBatis 쿼리문의 ? => value로 매핑된 쿼리문으로 로그를 남기는 jar파일이 여럿 있습니다.
5. 데이터 캐싱(LIFO,FIFO, LRU)이 가능합니다.
- 조회용 데이터 성능이 안나올 때 데이터 캐싱 설정만으로 훌륭한 성능 개선을 할 수 있습니다.
- 실제 대규모 사이트에서 적용 사용하고 있음.
- 간단한 xml 설정만으로 적용 가능
6. 꼭 resultType, resultClass로 VO를 사용 않으셔도 됩니다. Map으로만 이용 가능
참고 - https://okky.kr/article/285215
'WEB > 이론' 카테고리의 다른 글
spring mvc 동작방식 (0) | 2017.03.22 |
---|---|
jdbc와 마이바티스 (0) | 2017.03.21 |
스프링 MVC 구조와 MVC1패턴과 2패턴의 차이. (0) | 2017.03.20 |
web.xml (0) | 2017.01.18 |