IT_Note



bbs.BoardController.java


Model을 메소드 인자로 사용하여 모델설정 역할. req.setAttribute("이름",값)

package com.sp.bbs;


@Controller("bbs.boardController")

public class BoardController {

@Autowired

private BoardService service;

@Autowired

private MyUtil myUtil;

//@RequestMapping 어노테이션을 사용할 경우, MultiActionController와 같이 한 개의 컨트롤러에서 다수의 요청을 처리.

//@RequestMapping의 value형태의 url이 들어오면 해당 method를 호출한다.

@RequestMapping(value="/bbs/created",method=RequestMethod.GET)

public String createdForm(Model model) throws Exception {

model.addAttribute("mode","created");

return "bbs/created";

}

@RequestMapping(value="/bbs/created", method=RequestMethod.POST)

public String createdSubmit(Board dto, HttpServletRequest req)throws Exception{

dto.setIpAddr(req.getRemoteAddr());

service.insertBoard(dto);

return "redirect:/bbs/list";

}

}



DB에 데이터를 저장하기 위한 bbsMapper.xml 파일 수정

<?xml version="1.0" encoding="UTF-8"?>


<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="bbs">


<insert id="insertBoard" parameterType="com.sp.bbs.Board">

INSERT INTO bbs (num, name, pwd, subject, content, ipAddr) VALUES(

bbs_seq.NEXTVAL, #{name},#{pwd},#{subject},#{content},#{ipAddr})

</insert>


</mapper>



휴.......이제 서버 실행 후 게시글을 작성해서 db에 들어가는지 확인 해 보자.


아마 들어갈 것임 




- com/sp/bbs/Board.java ( DTO 클래스 )


public class Board {

private int listNum, num;

private String name,pwd,subject,content,ipAddr,created;

private int hitCount;

getter setter 작성.



- com/sp/bbs/BoardService.java -  인터페이스 작성

package com.sp.bbs;


import java.util.List;

import java.util.Map;


public interface BoardService {

public int insertBoard(Board dto);

    public List<Board> listBoard(Map<String, Object> map);

    public int dataCount(Map<String, Object> map);

    public Board readBoard(int num);

    public int updateHitCount(int num);

    public Board preReadBoard(Map<String,Object> map);

    public Board nextReadBoard(Map<String,Object> map);

    public int updateBoard(Board dto);

    public int deleteBoard(int num);

}


- com/sp/bbs/BoardServiceImpl.java - 인터페이스 구현. 클래스

어노테이션 빼먹지 않도록 주의한다.


@Autowired 타입에 의한 의존관계 자동설정


동일한 타입이 둘 이상인 경우

@Autowired 

@Qualifier("bbs.boardService")


import java.util.List;

import java.util.Map;


import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Service;


import com.sp.common.dao.CommonDAO;


@Service("bbs.boardService")

public class BoardServiceImpl implements BoardService {


 @Autowired

 private CommonDAO dao;


@Override

public int insertBoard(Board dto) {

int result=0;

try {

//최대값을 이용하여 게시물 번호를 작성하는 경우

//int maxNum = dao.getIntValue("bbs.numMax")

//dto.setNum(maxNum+1);

result=dao.insertData("bbs.insertBoard", dto);

} catch (Exception e) {

// TODO: handle exception

}

return result;

}

//기타 클래스 생략 //

}


//commondao의 insertdate를 사용.


- 사용자생성 - 오라클 DB

--1 사용자를 생성한다 이름은 board1으로.비번은 java$!

CREATE USER board1 IDENTIFIED BY "java$!";


--2 사용자에게 CONN 및 테이블스페이스를 사용할 권한 부여

GRANT CONNECT, RESOURCE TO board1;


--3 테이블스페이스 변경

ALTER USER board1 DEFAULT TABLESPACE USERS;


--4 

ALTER USER board1 TEMPORARY TABLESPACE TEMP;


- 테이블생성


게시판 테이블이름은 bbs로. 

ip주소와 비밀번호를 이용하는 비회원제 게시판이다.

여러가지 방법이 있겠지만 일단 가장 기초적으로 ㄱㄱ

CREATE TABLE bbs (

num NUMBER NOT NULL

,name VARCHAR2(30) NOT NULL 

,pwd VARCHAR2(50)

,subject VARCHAR2(255) NOT NULL  

,content VARCHAR2(4000) NOT NULL

,ipAddr VARCHAR2(50) NOT NULL

,hitCount NUMBER DEFAULT 0

,created DATE DEFAULT SYSDATE

,CONSTRAINT pk_bbs_num PRIMARY KEY(num)

);


- 시퀀스 생성


기본키 num값을 위한 시퀀스 설정

시퀀스이름은 bbs_seq로.

1씩증가하며 1부터 시작한다.

CREATE SEQUENCE bbs_seq

INCREMENT BY 1

START WITH 1

NOMAXVALUE NOCYCLE NOCACHE;

SELECT * FROM seq;


참고

NOMAXVALUE : 오름차순 최대 10의 27승 까지, 내림차순 -1 까지 생성됨.

NOCACHE : 시퀀스를 메모리에 할당하여 사용하지 않음.

NOCYCLE : 해당 시퀀스가 최대값에 도달해도 다시 생성하지 않는다.[DEFAULT]