2015년 9월 4일 금요일

신입SW인력을 위한 실전 JSP 동영상과정 - 제27~30강 MVC 패턴 게시판(mysql로 컨버전)

이 게시물은
http://www.wiz.center/214
http://www.wiz.center/215
http://www.wiz.center/216
http://www.wiz.center/217

의 동영상 강의를 시청하고 작성한 글입니다.
새로 시작하는 경우라면 위 링크의 동영상 강의를
들어보세요

1. Model1, Model2, Spring MVC 비교
    하단 내용을 참고바람
    줄이자면
    Model1 은 JSP에서 View, Controller를 같이 작성
    Model2 는 Servlet이 Controller 을 수행해서 MVC 가 확실히
      나누어 졌다 정도
    관련 세부 설명은 하단 링크를 참고
http://wiki.javajigi.net/pages/viewpage.action?pageId=73

http://magmajjame.blogspot.kr/2015/07/spring-mvc.html


2. 기본 강의는 상단 강의를 참고바람 (강의에 예제가 있음)
    여기서는 같은 예제로 DB를 mysql로 변경시
    조치해줘야 하는 점에 대해서 언급함.
  1) 예제 임포트 후 jstl 을 인식하지 못하는데 jstl.jar 랑 standard.jar
       두개 파일을 lib 폴더 밑에 위치하면 된다.
       apache library에 포함시키면 굳이 프로젝트 라이브러리에 안
       넣어도 되서 이렇게 설정됨

  2) 게시판 테이블을 작성한다.
      주의할 사항으로 bGroup 가 oracle에서는 원본글의 경우
       bId랑 같이 움직이는데 이건 댓글일 경우 원글의 번호를 대입해야
       하므로 놔둔다.    

create table mvc_board(
bId int(4) NOT NULL AUTO_INCREMENT  PRIMARY KEY ,
bName varchar(20),
bTitle varchar(100),
bContent varchar(300),
bDate DATETIME DEFAULT CURRENT_TIMESTAMP,
bHit int(4) default 0,
bGroup int(4),
bStep int(4),
bIndent int(4)
);

  3) mysql 컨넥터 드라이버를 lib에 추가한다.
   

  4) 연결 방법을 보니 connection pool을 이용한다. 
      tomcat 설정파일(context.xml)에서 db설정을 확인한다.


  5) BDao.java 파일에서 dataSource 명칭을 수정한다.
      dataSource = (DataSource) context.lookup("java:comp/env/jdbc/mysql");

  6) 리스트가 뜨는지 확인한다.

  7) 글작성에 대한 쿼리부분을 수정한다.
      나머지 수정, 삭제는 정상 동작하지만 작성시 시퀀스 작성에 대한
      부분은 수정이 필요하다 BDao.java 파일의 write 함수를 아래와
      같이 수정한다. (28,29강에서 진행)

public void write(String bName, String bTitle, String bContent) {
// TODO Auto-generated method stub
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
int maxid=0;
try{
 connection = dataSource.getConnection();
 String query = "select max(bId) as maxId from mvc_board";
 preparedStatement = (PreparedStatement) connection.prepareStatement(query);
 resultSet = preparedStatement.executeQuery();
  
 if(resultSet.next()){
  maxid = resultSet.getInt("maxId");
 }
  
}catch(Exception e){
 e.printStackTrace();
}finally{
  
  try {
   if(resultSet != null)resultSet.close();
   if(preparedStatement != null)preparedStatement.close();
   if(connection != null)connection.close();
  } catch (Exception e3) {
   // TODO Auto-generated catch block
   e3.printStackTrace();
  }
}
try {
connection = dataSource.getConnection();
String query = "insert into mvc_board (bName, bTitle, bContent, bHit, bGroup, bStep, bIndent) values ( ?, ?, ?, 0, ?, 0, 0 )";
preparedStatement = connection.prepareStatement(query);
preparedStatement.setString(1, bName);
preparedStatement.setString(2, bTitle);
preparedStatement.setString(3, bContent);
preparedStatement.setInt(4, maxid);
int rn = preparedStatement.executeUpdate();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
} finally {
try {
if(preparedStatement != null) preparedStatement.close();
if(connection != null) connection.close();
} catch (Exception e2) {
// TODO: handle exception
e2.printStackTrace();
}
}
}

  8) 리플 작성시 bId 를 시퀀스로 넣는걸 삭제한다. mysql
       은 자동으로 입력된다. (답변달기는 30강에서 진행)


public void reply(String bId, String bName, String bTitle, String bContent, String bGroup, String bStep, String bIndent) {
.......
String query = "insert into mvc_board (bName, bTitle, bContent, bGroup, bStep, bIndent) values (?, ?, ?, ?, ?, ?)";
........
}


댓글 없음:

댓글 쓰기