1. src/main/java에 있는 com.spring.board.service패키지에

   BoardDeleteService.java 클래스 생성 및 소스코드 추가 합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package com.spring.board.service;
 
import org.springframework.beans.factory.annotation.Autowired;
 
import com.spring.board.dao.BoardDao;
import com.spring.board.model.Board;
 
public class BoardDeleteService {
    
    private BoardDao boardDao;
    @Autowired
    public void setBoardDao(BoardDao boardDao) {
        this.boardDao = boardDao;
    }//setBoardDao()
 
    public void service(int no) {
        boardDao.delete(no);
    }//service()
 
}//class BoardUpdateService
 
cs

2. src/main/java/com.spring.board.controller/BoardController.java 클래스에 있는  생성자및 delete() 메서드에 아래 소스코드로 수정 합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
private BoardDeleteService boardDeleteService;
    
    @Autowired
    public BoardController(BoardListService boardListService,BoardViewService boardViewService,
            BoardWriteService boardWriteService, BoardUpdateService boardUpdateService,
            BoardDeleteService boardDeleteService) {
        this.boardListService=boardListService;
        this.boardViewService=boardViewService;
        this.boardWriteService=boardWriteService;
        this.boardUpdateService=boardUpdateService;
        this.boardDeleteService=boardDeleteService;
    }//생성자
 
    @RequestMapping("/delete.do")
    public String delete(int no){
        boardDeleteService.service(no);
        return "redirect:./list.do";
    }//method delete()
cs


3. src/main/resources/board.xml 파일에 아래 소스코드 추가 합니다.


<bean class="com.spring.board.service.BoardDeleteService" />


4. src/main/java/com.spring.board.dao/BoardDao.java 클래스에 있는 delete() 메서드 생성 및 아래 소스코드로 수정 합니다.

1
2
3
4
5
    // 게시판 글 삭제
    public void delete(int no) {
        System.out.println("### BoardDao.delete() ###");
        sqlSessionTemplate.delete("dao.Board.delete", no);
    }//method delete()
cs


5. src/main/resources/mybatis/boardDao.xml에 아래 소스코드 추가

1
2
3
    <delete id="delete">
        delete from board where no=#{no}
    </delete>
cs


6. 서버(tomcat) 실행 후 http://localhost/board/list.do URL로 접속 합니다.

16번 글을 삭제 하겠습니다.


7. http://localhost/board/delete.do?no=16 URL로 접속 합니다.

delete는 따로 페이지가 없으므로 list.do로 다시 돌아가도록 하였습니다.


<끝>




Posted by 홍이홍이
,

1. src/main/java에 있는 com.spring.board.service패키지에

   BoardUpdateService.java 클래스 생성 및 소스코드 추가 합니다.

1
2
3
4
5
6
7
8
9
    private BoardDao boardDao;
    @Autowired
    public void setBoardDao(BoardDao boardDao) {
        this.boardDao = boardDao;
    }//setBoardDao()
 
    public void service(Board board) {
        boardDao.update(board);
    }//service()
cs


2. src/main/java/com.spring.board.controller/BoardController.java 클래스에 있는  생성자및 updateForm()/update() 메서드에 아래 소스코드로 수정 합니다.

1
2
3
4
5
6
7
8
9
10
    private BoardUpdateService boardUpdateService;
    
    @Autowired
    public BoardController(BoardListService boardListService,BoardViewService boardViewService,
            BoardWriteService boardWriteService, BoardUpdateService boardUpdateService) {
        this.boardListService=boardListService;
        this.boardViewService=boardViewService;
        this.boardWriteService=boardWriteService;
        this.boardUpdateService=boardUpdateService;
    }//생성자
cs


1
2
3
4
5
6
7
8
9
10
11
    @RequestMapping(value="/update.do",method=RequestMethod.GET)
    public String updateForm(Model model,int no){
        model.addAttribute("view",boardViewService.service(no));
        return "updateForm";
    }//method updateForm()-GET
    
    @RequestMapping(value="/update.do",method=RequestMethod.POST)
    public String update(Board board){
        boardUpdateService.service(board);
        return "redirect:view.do?no="+board.getNo();
    }//method update()-POST
cs


3. src/main/resources/board.xml 파일에 아래 소스코드 추가 합니다.


<bean class="com.spring.board.service.BoardUpdateService" />


4. src/main/java/com.spring.board.dao/BoardDao.java 클래스에 있는 update() 메서드 생성 및 아래 소스코드로 수정 합니다.


1
2
3
4
5
    // 게시판 글 수정
    public void update(Board board) {
        System.out.println("### BoardDao.update() ###");
        sqlSessionTemplate.update("dao.Board.update", board);
    }//method update()
cs

5. src/main/resources/mybatis/boardDao.xml에 아래 소스코드 추가

1
2
3
4
    <update id="update">
        update board set title=#{title},content=#{content},
        writer=#{writer} where no=#{no}
    </update>
cs


6. src/main/webapp/WEB-INF/view/updateForm.jsp 파일에 아래 소스코드 추가 합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
글수정 페이지 입니다.
<form action="update.do" method="post">
<input type="hidden" name="no" value="${view.no}" />
제목: <input name="title"  value="${view.title}"/><br/>
내용: <textarea rows="5" cols="60" name="content" >${view.content}</textarea><br/>
작성자: <input name="writer"  value="${view.writer}" readonly="readonly"/><br/>
<button type="submit">수정</button>
<button type="button" class="btnCancel">취소</button>
</form>
</body>
</html>
cs


7. 서버(tomcat) 실행 후 http://localhost/board/view.do?no=1 URL로 접속 합니다.


1번글 글보기 화면 입니다.

1번글 수정 페이지 입니다.


제목과 내용을 수정 후 수정 버튼 클릭 합니다.


1번글 글보기 페이지에 접속 해보면 수정 되어 있는것을 확인 할 수 있습니다.








<끝>


Posted by 홍이홍이
,

1. src/main/java에 있는 com.spring.board.service패키지에

   BoardWriteService.java 클래스 생성 및 소스코드 추가 합니다.

package com.spring.board.service;
import org.springframework.beans.factory.annotation.Autowired;
import com.spring.board.dao.BoardDao;
import com.spring.board.model.Board;
public class BoardWriteService {
private BoardDao boardDao;
@Autowired
public void setBoardDao(BoardDao boardDao) {
this.boardDao = boardDao;
}//setBoardDao()
public void service(Board board) {
boardDao.write(board);
}//service()
}//class BoardWriteService









2. src/main/java/com.spring.board.controller/BoardController.java 클래스에 있는  생성자및 writeForm()/write() 메서드에 아래 소스코드로 수정 합니다.


private BoardWriteService boardWriteService;

@Autowired
public BoardController(BoardListService boardListService,BoardViewService boardViewService,
BoardWriteService boardWriteService) {
this.boardListService=boardListService;
this.boardViewService=boardViewService;
this.boardWriteService=boardWriteService;
}//생성자
@RequestMapping(value="/write.do",method=RequestMethod.GET)
public String writeForm(){
return "writeForm";
}//method write()-GET
@RequestMapping(value="/write.do",method=RequestMethod.POST)
public String write(Board board){
boardWriteService.service(board);
return "redirect:list.do";
}//wethod write()-POST











3. src/main/resources/board.xml 파일에 아래 소스코드 추가 합니다.


<bean class="com.spring.board.service.BoardWriteService" />



4. src/main/java/com.spring.board.dao/BoardDao.java 클래스에 있는 wirte() 메서드 생성 및 아래 소스코드로 수정 합니다.

// 게시판 글 쓰기
public void write(Board board) {
System.out.println("### BoardDao.write() ###");
sqlSessionTemplate.insert("dao.Board.write", board);
}//method write()

5. src/main/resources/mybatis/boardDao.xml에 아래 소스코드 추가

<insert id="write">
insert into board(no,title,content,writer,wdate)
values(board_seq.nextval,#{title},#{content},#{writer},sysdate)
</insert>

6. src/main/webapp/WEB-INF/view/writeForm.jsp 파일에 아래 소스코드 추가 합니다.


<form action="write.do" method="post">
제목: <input name="title" /><br/>
내용: <textarea rows="5" cols="60" name="content"></textarea><br/>
작성자: <input name="writer" /><br/>
<button type="submit">쓰기</button>
</form>

7. 서버(tomcat) 실행 후 http://localhost/board/write.do URL로 접속 합니다. 제목 / 내용 / 작성자 입력 후 쓰기 버튼 클릭 하면 자동으로 list.do 페이지로 이동 합니다.


<끝>


Posted by 홍이홍이
,

1. src/main/java/com.spring.board.controller/BoardController.java 클래스에 있는 view() 메서드에 아래 소스코드로 수정 합니다.

@RequestMapping("/view.do")
public String view(Model model, int no){
model.addAttribute("view",boardViewService.service(no));
return "view";
}//method view()




2. src/main/java에 있는 com.spring.board.service패키지에

   BoardViewService.java 클래스 생성 및 소스코드 추가 합니다.

package com.spring.board.service;
import org.springframework.beans.factory.annotation.Autowired;
import com.spring.board.dao.BoardDao;
import com.spring.board.model.Board;
public class BoardViewService {
private BoardDao boardDao;
@Autowired
public void setBoardDao(BoardDao boardDao) {
this.boardDao=boardDao;
}//method setBoardDao()
public Board service(int no){
return boardDao.view(no);
}//method service();
}//class BoardListService












3. src/main/java/com.spring.board.dao/BoardDao.java 클래스에 있는 view() 메서드에 아래 소스코드로 수정 합니다.

// 게시판 글 보기
public Board view(int no) {
System.out.println("### BoardDao.view() ###");
return sqlSessionTemplate.selectOne("dao.Board.view", no);
}// view()


4. src/main/java/com.spring.board.controller/BoardController.java 클래스에 있는 생성자에 아래 소스코드로 수정 합니다.


private BoardViewService boardViewService;

@Autowired
public BoardController(BoardListService boardListService,BoardViewService boardViewService) {
this.boardListService=boardListService;
this.boardViewService=boardViewService;
}//생성자

5. src/main/resources/board.xml에 아래 소스코드 추가 합니다.


<bean class="com.spring.board.service.BoardViewService" />


6. src/main/resources/mybatis/boardDao.xml에 아래 소스코드 추가

<select id="view" resultType="com.spring.board.model.Board">
select no,title,content,
writer,wdate,hit from board
where no=#{no}
</select>

7. src/main/webapp/WEB-INF/view/view.jsp 파일에 아래 소스코드 추가 합니다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
글보기 페이지 입니다.
<table>
<tr>
<th>번호</th>
<td>${view.no}</td>
</tr>
<tr>
<th>제목</th>
<td>${view.title}</td>
</tr>
<tr>
<th>내용</th>
<td>${view.content}</td>
</tr>
<tr>
<th>작성자</th>
<td>${view.writer}</td>
</tr>
<tr>
<th>작성일</th>
<td>
${view.wdate}
</td>
</tr>
<tr>
<th>조회수</th>
<td>${view.hit}</td>
</tr>
<tr>
<td colspan="2">
<button class="btnUpdate">수정</button>
<button class="btnDelete">삭제</button>
<button class="btnList">리스트</button>
</td>
</tr>
</table>
</body>
</html>








8. 서버(tomcat) 실행 후 http://localhost/board/view.do?no=5 URL로 접속




<끝>











Posted by 홍이홍이
,

1. http://hongeui.tistory.com/9?category=732702 참고하세요

test01 계정으로 board 테이블 및 board_seq 시퀀스 생성 합니다.

기본 데이터도 insert문을 사용 하여 삽입 합니다.


create table board(
no number(10) primary key, -- 글번호
title varchar2(100) not null, -- 글제목
content varchar2(2000) not null, -- 글내용
writer varchar2(20) not null, -- 작성자
wdate date,
hit number(10) default 0
);
create sequence board_seq;
insert into board(no,title,content,writer,wdate)
values(board_seq.nextval,'첫 번째 글의 제목','첫 번째 글의 내용','작성자1',sysdate);
insert into board(no,title,content,writer,wdate)
values(board_seq.nextval,'두 번째 글의 제목','두 번째 글의 내용','작성자2',sysdate);
insert into board(no,title,content,writer,wdate)
values(board_seq.nextval,'세 번째 글의 제목','세 번째 글의 내용','작성자3',sysdate);
insert into board(no,title,content,writer,wdate)
values(board_seq.nextval,'네 번째 글의 제목','네 번째 글의 내용','작성자4',sysdate);
insert into board(no,title,content,writer,wdate)
values(board_seq.nextval,'다섯 번째 글의 제목','다섯 번째 글의 내용','작성자5',sysdate);
insert into board(no,title,content,writer,wdate)
values(board_seq.nextval,'여섯 번째 글의 제목','여섯 번째 글의 내용','작성자6',sysdate);
insert into board(no,title,content,writer,wdate)
values(board_seq.nextval,'일곱 번째 글의 제목','일곱 번째 글의 내용','작성자7',sysdate);
insert into board(no,title,content,writer,wdate)
values(board_seq.nextval,'여덟 번째 글의 제목','여덟 번째 글의 내용','작성자8',sysdate);
insert into board(no,title,content,writer,wdate)
values(board_seq.nextval,'아홉 번째 글의 제목','아홉 번째 글의 내용','작성자9',sysdate);
insert into board(no,title,content,writer,wdate)
values(board_seq.nextval,'열 번째 글의 제목','열 번째 글의 내용','작성자10',sysdate);
insert into board(no,title,content,writer,wdate)
values(board_seq.nextval,'열 하나 번째 글의 제목','열 하나 번째 글의 내용','작성자11',sysdate);
insert into board(no,title,content,writer,wdate)
values(board_seq.nextval,'열 둘 번째 글의 제목','열 둘 번째 글의 내용','작성자12',sysdate);
insert into board(no,title,content,writer,wdate)
values(board_seq.nextval,'열 셋 번째 글의 제목','열 셋 번째 글의 내용','작성자13',sysdate);
insert into board(no,title,content,writer,wdate)
values(board_seq.nextval,'열 넷 번째 글의 제목','열 넷 번째 글의 내용','작성자14',sysdate);
select * from board;
commit;

 


2. src/main/java에 package 및 class 생성

패키지 명 : com.spring.board.model

클레스 명 : Board

3. Board.java에 아래 소스코드 입력 합니다.

package com.spring.board.model;
public class Board {
private int no;
private String title;
private String content;
private String writer;
private String wdate;
private int hit;
}//class Board

4. 상단에 있는 Source -> Generate Getters and Setters 클릭





Select All 선택 하여 모두 선택 하여 getter / setter 생성 합니다.







5. src/main/java에 package 및 class 생성 및 service() 메서드 추가

패키지 명 : com.spring.board.service

클레스 명 : BoardListService

6. board.xml에 아래 소스코드를 추가 합니다.

<bean class="com.spring.board.service.BoardListService" />




7. BoardController.java에 아래 소스코드 추가 합니다. 

private BoardListService boardListService;
@Autowired
public BoardController(BoardListService boardListService) {
this.boardListService=boardListService;
}//생성자

8. src/main/java에 package 및 class 생성 및 list() 메서드 추가

패키지 명 : com.spring.board.dao

클레스 명 : BoardDao


9. board.xml에 아래 소스코드를 추가 합니다.

<bean class="com.spring.board.dao.BoardDao" />



10. BoardController.java에 있는 list() 메서드 아래 소스코드로 수정

@RequestMapping("/list.do")
public String list(Model model) {
model.addAttribute("list",boardListService.service());
return "list";
}//method list()

11. BoardListService.java 아래 소스코드로 수정 합니다.

public class BoardListService {

private BoardDao boardDao;
@Autowired
public void setBoardDao(BoardDao boardDao) {
this.boardDao=boardDao;
}//method setBoardDao()
public List<Board> service(){
return boardDao.list();
}//method service();
}//class BoardListService





12. BoardDao.java 아래 소스코드로 수정 합니다.

package com.spring.board.dao;
import java.util.List;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import com.spring.board.model.Board;
public class BoardDao {
private SqlSessionTemplate sqlSessionTemplate;
@Autowired
public void setSqlSessionTemplate(SqlSessionTemplate sqlSessionTemplate) {
this.sqlSessionTemplate = sqlSessionTemplate;
}//method sqlSessionTemplate()
public List<Board> list() {
return sqlSessionTemplate.selectList("dao.Board.list");
}//method list()
}//class BoardDao













13. src/main/resources/mybatis 폴더에 boardDao.xml 파일 생성


14. boardDao.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="dao.Board">
<!-- resultType은 select 할때만 사용 -->
<select id="list" resultType="com.spring.board.model.Board">
select no,title,writer,wdate,hit
from board
</select>
</mapper>







15. spring-mvc.xml 파일에 아래 소스코드 추가 합니다.

<!-- connection이 있는 dataResouce를 bean으로 등록 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close">
<property name="driverClass" value="oracle.jdbc.driver.OracleDriver" />
<property name="jdbcUrl" value="jdbc:oracle:thin:@localhost:1521:orcl" />
<property name="user" value="test01" />
<property name="password" value="test01" />
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="mapperLocations">
<list>
<value>classpath:/mybatis/boardDao.xml</value>
</list>
</property>
</bean>
<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate"
destroy-method="clearCache">
<constructor-arg ref="sqlSessionFactory" />
</bean>













16. src/main/webapp/WEB-INF/view 폴더에 있는 

     list.jsp 파일 아래 소스코드로 수정 합니다.


<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
리스트 페이지 입니다.
<table>
<tr>
<th>글번호</th>
<th>제목</th>
<th>작성자</th>
<th>작성일</th>
<th>조회수</th>
</tr>
<c:forEach var="board" items="${list}">
<tr class="dataTr">
<td id="no">${board.no}</td>
<td id="no">${board.title}</td>
<td id="no">${board.writer}</td>
<td id="no">${board.wdate}</td>
<td id="no">${board.hit}</td>
</tr>
</c:forEach>
</table>
</body>
</html>





















17. 서버(tomcat) 실행 후 http://localhost/board/list.do URL로 접속




<끝>

Posted by 홍이홍이
,


8. src/main/webapp/WEB-INF 아래 view 폴더 생성 ->

src/main/webapp/WEB-INF/view 아래 board 폴더 생성 합니다.

board 폴더에 list.jsp / writeForm.jsp /

view.jsp / updateForm.jsp 파일 생성 합니다.


9. BoardController.java에 메서드 생성


























































































































package com.spring.board.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class BoardController {
@RequestMapping("/list.do")
public String list() {
return "list";
}//list()
@RequestMapping("/write.do")
public String writeForm() {
return "writeForm";
}//writeForm()
@RequestMapping("/view.do")
public String view() {
return "view";
}//view()
@RequestMapping("/update.do")
public String updateForm() {
return "updateForm";
}//updateForm()
}//class BoardController
list() / writeForm() / view() / updateForm()


































10. 서버(tomcat) start 후 위 RequestMapping 한 URL로 접속




















<끝>


Posted by 홍이홍이
,


1. spring-mvc.xml 아래 코드로 수정 합니다.

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!-- @Controller 어노테이션을 이용한 컨트롤러를 사용하기 위한 설정 -->
<mvc:annotation-driven />
<!-- DispatcherServlet의 매핑 경로를 "/"로 주었을때, JSP/HTML/CSS 등을 올바르게 처리 하기 위한
설정 -->
<mvc:default-servlet-handler />
<!-- prefix="/WEB-INF/view/"은 forward 시킬때 "board/list.jsp" 라고 입력을 하면 실제적으로는
"/WEB-INF/view/board/list.jsp" 가 된다. suffix=".jsp" 로 지정하면 "board/list" 만
입력을 하면 실제적으로는 "board/list.jsp" 가 된다. prefix는 앞에 내용을 붙이는 것이고 suffix는 뒤쪽에 내용을
붙이는 것이다. -->
<mvc:view-resolvers>
<mvc:jsp prefix="/WEB-INF/view/" suffix=".jsp" />
</mvc:view-resolvers>
<!-- 자동 DI 적용 -->
<context:annotation-config />

</beans>
2. src/main/resources 우클릭 -> new -> Folder 선택











3. resources 선택 -> 폴더명 : mybaits 으로 생성 합니다




4. src/main/resources/mybatis 폴더에

boardDao.xml 파일 생성 합니다.



5. src/main/java 우클릭 -> new -> Class 선택하여 생성 합니다.


Package 명 : com.spring.board.controller

Class명 : BoardController



6. BoardController.java 아래 코드 작성

package com.spring.board.controller;
import org.springframework.stereotype.Controller;
@Controller
public class BoardController {

}//class BoardController


7. board.xml 아래 코드 작성
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean class="com.spring.board.controller.BoardController" />
</beans>


Posted by 홍이홍이
,


1. web.xml에서 dispatcher 설정 및 Filter를 이용하여 한글처리를 합니다.

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
<display-name>Archetype Created Web Application</display-name>
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:spring-mvc.xml
classpath:board.xml
</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>















2. src/main/resources에서 하위 폴더에 web.xml에서 설정한 

   spring-mvc.xml / board.xml 파일 생성 합니다.



3. board.xml에 아래 코드 작성 합니다.


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
</beans>

4. spring-mvc.xml에 아래 코드 작성 합니다.


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
</beans>



<끝>



Posted by 홍이홍이
,

OOP (Object Oriented Programming) : 객체지향 

1. 객체지향 개념 

2. 메서드와 오버로드( OverLoad ), 변수 유효 범위 

3. 생성자 , 생성자 중복(Overload) 

4. this, super 키워드 

5. 클래스

6. 인터페이스, 추상클래스

7. 클래스 상속,  인터페이스 상속 , 추상 클래스 상속

 

oop (Object Oriented Programming) : 객체지향 

객체지향 개념  : 하나의 클래스를 객체라 한다

 ( 클래스=모듈(단위프로그램))

 ( 클래스는 레퍼런스 자료형 이다 )


1. 객체지향 4 대 특징

 ☞ 캡슐화 , 은익화

 ☞ 상속 

 ☞ 다형성 ( Overload, Overriding)

 ☞ 추상화 (복잡한것을 단순화 )

     클래스 설계자 입장 

     클래스 사용자 입장 


다형성(Polymorphism)이란,  한가지로 여러 가지의 일을 한다는 뜻이다.

 프로그램에서 하나의 형태로 여러 가지 작업을 하는것이 바로 

다형성의 뜻 입니다   

 의미(semantics)는 하나지만 실제 형태는 여러 가지가 될 수 있다는 말이다



먹는다( ){ 

    내용: 과자를 먹는다

  }


먹는다( ){

  내용: 밥을 먹는다

  }


먹는다( ){

   내용: 과일 먹는다

 }


다형성은  객체지향 프로그래밍 언어에서

 "오버로딩 (overloading)", "오버라이딩 (overriding)"의 형태로 나타난다.


* OverLoad (오버로드)

   1. 하나의 클래스 내에 이름이 같은 메서드가 여러개인 경우 

   2. 구분은 매개변수(인수) 로 한다 , 인수 갯수가 다르거나 , 인수자료형이 달아야 한다 

     ------------------------------------ 

       class AA

          {

             void   aa(){}

             int    aa(int a){}

             String aa(String name){}

          }

     ------------------------------------   

   3. 확장(상속)이 가능하다

   4. 리턴형은 같아도 달라도 상관없다 



* Overrding (오버라이딩)

   1. 상속 받은 메서드 내용 재정의 

   2. 리턴형, 인수개수 , 인수자료형은 반드시 같아야 한다 


   3. 접근제한자 상위와 같거나 , 더 넓은 개념으로 사용하면 된다

      ( 상위의 proptected 는   public 사용가능 하다 )

   4. 상속 관계로서 사용 가능 

   5. 또 다른 클래스로 , 확장(상속)가능 하다 


----------------------------------------------------------------

클래스 상속

----------------------------------------------------------------

  class 클래스이름

   {

     // 변수 선언 

     private int age ; // 은폐필드 ( 자신의 클래스 내에서만 사용 가능)

     생략    int age;  // 같은 패키지 내에서 사용 가능 

     proptected String name ; // 보호필드 ( 자신의 클래스와 , 상속 받은 클래스에서 사용 가능 )

                                              수퍼클래스   ,   파생클래스

     public  String pum;// 공개필드 ( 어디서나 사용 가능)


     // 메서드 

     private 리턴형 메서드명(){}

     생략    리턴형 메서드명(){}

     protected  리턴형 메서드명(){}

     public  리턴형 메서드명(){}

   }

  class 클래스이름2 extends 클래스이름 implements 인터페이스명

   {

   }

----------------------------------------------------------------

* 메서드란 

  기본적으로 프로그램 명령문의 집합이며, 자바에서는 실행의 기본 단위가 된다 

  메서드는 클래스에 속한 일 부분이다 


* 클래스란 

  하나 이상의 변수, 또는 메서드를 포함하고 있는 변수와 메서드 집합체이다 

  하나의 단위 프로그램이다( 모듈)


* 자바 프로그램이란 

  하나 이상의 클래스로 구성된 클래스 집합체이다 .

  저장은 main() 이 소속해 있는 클래스 이름으로 저장 한다

  

프로그램을 실행하는 동안에  동일 클래스나 , 다른클래스에 있는 메서드를 호출할 수 있다

프로그램 코드는 항상 메서드내에 존재해야 하며, 메서드는 항상 클래스내에 존재해야 한다 


메서드

------------------------------------------------

메서드 기본 형식 

------------------------------------------------

[접근제한자] 리턴형 메서드명(인수)

{

   처리내용 ;

}

------------------------------------------------

[접근제한자] [static] 리턴형 메서드명(인수) throws ExceptionList

{

   처리내용 ;

}

------------------------------------------------

public static void main(String args[]) throws IOException

{

}

------------------------------------------------

 

===============================

 <<< 메서드 호출  >>>

  자신의 클래스에서는 메서드 호출 ==> 메서드명(인수값)

  다른클래스의  메서드 호출 ==> 객체생성하고, 객체.메서드(인수값)

  static 메서드 호출 =====> 클래스이름.메서드(인수값)  ex) Math.random()

                                    객체생성하고, 객체.메서드()


<< static 메서드들  >>=== java.lang.Math


public static double abs(double a) ==> 절대값

public static double ceil(double a) ==> 올림값

public static double floor(double a) ==> 내림값

public static double round(double a) ==> 사사오입 

public static double max(double a,double b) ==> 둘 중 큰값를리턴

public static double min(double a,double b) ==> 둘 중작은 값를리턴



static 메서드 

- static 메서드는 static으로 선언된 변수,메서드만 호출 가능하다 

- Math.max(5,2) => static 으로 선언된 메서드는 객체생성 않고도 호출가능 

 클래스.메서드();

- static 변수는 모든 객체가 그를 공유 할 수 있다 

- static 메서드에서는 this 사용 못함 : 자신을 2번 지칭하는 것이므로  


접근제한자 ( 접근 지정자)


 1. private : 자신의 클래스 내에서만 접근 가능 

 2. 생략 :    같은 패키지 내에서 접근 가능 

 3. protected : 자신의 클래스(수퍼클래스)와 파생 클래스 에서만  접근 가능

 4. public : 어디서나 접근 가능 


변수 유효 범위 

 - 전역변수 : 메서드 외부, 클래스 내부에 선언된 변수(자동 초기화 된다)

 - 지역변수 : 메서드 내에서 선언한 변수(자동 초기화 안된다)


 * 전역 변수 

   - 은폐필드 : private 으로 선언된 필드(변수) ( 자신의 클래스에서만 접근 가능)

   - 보호필드 : protected 으로 선언된 변수(자신의클래스와 파생 클래스에서만 접근 가능)

   - 공개필드 : public 으로 선언된 변수(어디서나 접근 가능)


<끝>

Posted by 홍이홍이
,

1. PreparedStatement 는 준비된 Statement 이다

   미리 SQL문이 셋팅된 Statement가 DB에 전송되어저 컴파일되어지고

   SQL문의 ? 부분만 나중에 추가 셋팅해서 실행이 되어지는 

   준비된 Statement 이다 


<Statement 사용법>


Statement stmt=con.createStatement();// 생성, 생성시 인자 안들어간다 

stmt.executeUpdate(sql);// 실행시 인자가 들어간다

stmt.executeQuery(sql);


<PreparedStatement 사용법>


PreparedStatement pstmt=con.prepareStatement(sql);// 생성시 인자 들어간다

pstmt.setXxx(1,값);

pstmt.setXxx(2,값);

pstmt.setXxx(3,값);

pstmt.executeUpdate();// 실행시 인자 안들어간다 

pstmt.executeQuery();


------------------------------------------------------------------------------------

2. PreparedStatement 장점

    반복적(for) 인 SQL문을 사용할 경우에 Statement보다 빠르다

   (이유는  ? 를 제외한 SQL문이 DB에서 미리 컴파일 되어져서 대기하고 있기 때문에)



3. 단점 

    SQL문마다 PreparedStatement 객체를 각각 생성해 줘야 한다

    ( 재 사용이 불가능해서, 새로 생성 해야 한다 )

   Statement객체는 SQL문이 달라지더라도 한개만 생성해서 재사용 가능하다

    ( 실행시 sql 문이 들어가기 때문에) 



4. Statement  반복 사용 할때 


  stmt=con.createStatement();

  String content="김장면";

  for(int i=0; i<10000;i++)

   {

      //stmt.executeUpdate("insert into test values('"+content+"')");

      stmt.executeUpdate("insert into test values('김장면')"); //실행시 인자가 들어간다

   }



5.  PreparedStatement 반복 사용 할때 


    pstmt=con.prepareStatement("insert into test values(?)"); // 생성시 인자가 들어간다.


    for(int i=0 ; i<10000;i++)

    {

     pstmt.setString(1,content+i);

     pstmt.executeUpdate();

    }


<끝>

Posted by 홍이홍이
,