ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Spring - JDBC
    Java/Spring 2018. 8. 21. 15:34
    반응형

    pom.xml에 commons-dbcp, spring-jdbc    Dependency를추가한다.










    ojdbc6.jar파일을 C드라이브에 옮긴 후

    프로젝트 우클릭 -> Run -> Maven Build... -> Goals에


    install:install-file -Dfile=C:\ojdbc6.jar -DgroupId=ojdbc -DartifactId=ojdbc -Dversion=6 -Dpackaging=jar 를 입력하고
    Apply, Run시킨다.


    Build후 GroupID를 ojdbc, ArtifactID를 ojdbc, version을 6을주고 dependency를 pom.xml에 만들어준다.



    이후 VO를 만들고 Getter,Setter 추가, DaoImpl의 Argument를 수정한다


    SQL의 jdbc driver, id, password 설정을 위해

    Sql.java를 따로 만들지 않고

    /WEB-INF/spring/ 이곳에 settings.properties파일을 만들어서 관리한다.

    properties파일은 유니코드여서 숫자와 영어위주로, 띠어쓰기를 하지 않는다.

    #으로 주석처리가 가능하다.



    설정 후 데이터을 사용하기 위해 

    applicationContext.xml에서 Propertoes Load및 BasicDataSource를 생성한다.



    JdbcTemplate 주입은 @Autowired로 대체한다.


    BoardDaoImpl에 List queries를 추가한다.



    @Resource(name="boardQueries")
        private List<String> boardQueries;



    BoardController를 수정한다.


    // Get이나 Post 2가지 방식 다 사용한다.
    @RequestMapping("/detail")


    // doGet과 같은 역할
        // Spring 4.2 이하에서 사용
        // @RequestMapping(value="/write", method=RequestMethod.GET)
        // Spring 4.3 이상에서 사용
        @GetMapping("/write")
        public String viewBoardWritePage() {
            return "board/write";
        }
        
    // doPost와 같은 역할
        @PostMapping("/write")
        public String viewBoardWriteAction(HttpServletRequest request) {
            
            String subject = request.getParameter("subject");
            String content = request.getParameter("content");
            String email = request.getParameter("email");
            
            BoardVO boardVO = new BoardVO();
            boardVO.setSubject(subject);
            boardVO.setContent(content);
            boardVO.setEmail(email);
            
            boolean isSuccess = this.boardService.createBoard(boardVO);
            
            if( isSuccess ) {
                return "redirect:/list"; //redirect - 재연결
            }
            else {
                return "redirect:/write";
            }
            
        }



    /WEB-INF/view/board에 write.jsp를 작성한다.


    <%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert Form</title>
    </head>
    <body>
        
        <form method="post" action="/HelloSpring/write">
            <div>
                <input type="text" name="subject" placeholder="제목을 입력하세요." />
            </div>
            <div>
                <input name="content" placeholder="내용을 입력하세요." />
            </div>
            <div>
                <input type="email" name="email" placeholder="E-Mail을 입력하세요." />
            </div>
            <div>
                <input type="submit" value="제출" />
            </div>
        </form>
        
    </body>
    </html>



    form안에 input 태그안에 있는 name값으로 데이터를 이용한다.



        @PostMapping("/write")
        public String viewBoardWriteAction(HttpServletRequest request) {
            
    // form태그안에 있는 input의 name값들을 가져온다.

            String subject = request.getParameter("subject");
            String content = request.getParameter("content");
            String email = request.getParameter("email");
            
            BoardVO boardVO = new BoardVO();
            boardVO.setSubject(subject);
            boardVO.setContent(content);
            boardVO.setEmail(email);
            
            boolean isSuccess = this.boardService.createBoard(boardVO);
            
            if( isSuccess ) {
                return "redirect:/list";
            }
            else {
                return "redirect:/write";
            }
            
        }
        



    applicationContext.xml에 사용할 Query를 list형태로 값을 value Tag를 이용해 집어 넣는다.


    <!-- BoardDaoImpl이 사용할 Query 작성 -->
        <bean id="boardQueries"
         class="java.util.ArrayList">
         <constructor-arg name="c">
           <list>
               <!-- 0번 Index, Insert -->
               <value>
                        INSERT INTO SPRING.BOARD (
                                         ID
                                         , SUBJECT
                                         , CONTENT
                                         , EMAIL
                                         , CRT_DT
                                         , MDFY_DT
                                         , FILE_NAME
                                         , ORIGIN_FILE_NAME
                                         )
                        VALUES (
                                     BOARD_ID_SEQ.NEXTVAL
                                         , ?
                                         , ?
                                         , ?
                                         , SYSDATE
                                         , SYSDATE
                                         , ?
                                         , ?
                         )
               </value>
               <!-- 1번 Index -->
               <value></value>
           </list>
         </constructor-arg>
        </bean>





    반응형

    댓글

Designed by Tistory.