김갱환
맨땅에 코딩
김갱환
전체 방문자
오늘
어제
  • 분류 전체보기 (239)
    • ⁂ 맨땅에 코딩 (11)
      • : Story (3)
      • : MiniProject 'MyWeb' (1)
      • : Final Project (5)
      • : Josa-Moa 한국어 조사 처리 프로젝트 (1)
    • —————Frontend——————————————.. (0)
    • ⁂ HTML (10)
      • : 기본 익히기 (10)
    • ⁂ CSS (15)
      • : 기본 익히기 (15)
    • ⁂ Java Script (32)
      • : 기본 익히기 (28)
      • : 자바스크립트 라이브러리 (1)
      • : 연습 문제 (3)
    • ⁂ jQuery (11)
      • : 기본 익히기 (11)
    • ⁂ Bootstrap (3)
      • : 기본 익히기 (3)
    • ⁂ TailWind CSS (1)
    • ⁂ AJAX (5)
      • : 기본 익히기 (5)
    • ⁂ Vue.js (3)
      • : 기본 익히기 (3)
    • —————DB : Data Base————————.. (0)
    • ⁂ Oracle DB (27)
      • : 기본 익히기 (24)
      • : 연습 문제 (3)
    • ⁂ MyBatis Framework (15)
      • : 기본 익히기 (15)
    • —————Backend———————————————.. (0)
    • ⁂ Java (62)
      • : 기본 익히기 (42)
      • : JDBC - Java DataBase Conn.. (4)
      • : Crawling (2)
      • : 독학으로 공부하기(과거) (11)
      • : 연습문제 (3)
    • ——————Web————————————————— (0)
    • ⁂ JSP (28)
      • : 기본 익히기 (28)
    • ⁂ Spring FrameWork (15)
      • : Legacy Project (1)
      • : 기본 익히기(Boot 기반) (14)
    • ——————————————————————— (0)
    • ⁂ Error Note (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 연산자 #기본연산자 #코딩 #자바 #독학 #자바공부 #자바연산자
  • 프론트앤드
  • 자바
  • 자바공부
  • http에러메세지
  • 백앤드
  • 코딩공부
  • HTML공부
  • 코딩 #코딩공부 #프론트앤드 #백앤드 #풀스택개발자
  • 코딩 #코딩공부 #상수 #리터럴 #형변환 #개발자 #자바 #자바공부 #자바독학
  • 코딩공부 #코딩 #자바 #자바독학 #자바공부 #개발자 #프론트앤드 #백앤드 #풀스택
  • web.xml수정
  • 비트연산자 #코딩공부 #자바공부 #코딩 #자바 #프로그래밍 #개발자
  • ErrorPage
  • httperror
  • 개발자
  • 코딩공부 #자바공부
  • 객체지향프로그래밍
  • 코딩
  • 풀스택

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
김갱환

맨땅에 코딩

⁂ MyBatis Framework/: 기본 익히기

[MyBatis3] #4-8 파일 업로드 및 댓글 게시판 만들기 : 수정 기능 넣기

2022. 11. 11. 16:57

 

1. Model

 * 짚고 넘어갈 뽀인트

 - 코드만 잘 살피자.

 

1) product.xml

<update id="update">
    <![CDATA[
    UPDATE product
    SET product_name = #{product_name}
       ,price = #{price}
       ,description = #{description}
       ,filename = #{filename}
       ,filesize = #{filesize}
    WHERE product_code = #{product_code}
    ]]>
</update>

 

2) productDAO.java

public void update(Map<String, Object> map) {
    sqlSession.update("product.update", map);
} // insert() end

 

2. View

 * 짚고 넘어갈 뽀인트

- 상품 수정 버튼을 클릭할 시 product_update() function 호출.

- document.form1.action 을 활용하여 액션을 취한다.

 : 이는 <form action="/product/update">와 같은 기능이다. 즉, 한 폼 안에서 다양한 액션을 취할 수 있다.

 

<input type="button" value="상품수정" onclick="product_update()">
function product_update(){
    document.form1.action="/product/update";
    document.form1.submit();
} // product_update() end

 

3. Controller

 * 짚고 넘어갈 뽀인트

- update 명령어 생성.

- 기존 파일은 File 클래스를 활용하여 삭제하게 함.

- filesize=(long)product.get("FILESIZE") 코드가 오류가 났다.

 : product.get("FILESIZE")는 Map<String, Object>로 만들어진 product 객체의 값을 get() 메서드로 가져오는 것이다.

 : 여기서 FILESIZE라는 컬럼의 값을 가져올 때 Object로 가져오게 된다.

 : 그런데, Object를 long 형으로 형변환 시에는 String으로 형변환을 한번 한 후 또 다시 형 변환을 해야한다.

 : 그래서 수정된 코드는 filesize=Long.parseLong(product.get("FILESIZE").toString()); 이다.

 

@RequestMapping("/update")
public String update(@RequestParam Map<String, Object> map
                    ,@RequestParam MultipartFile img
                    ,HttpServletRequest req) {

    String filename = "-"; 
    long filesize = 0;
    String product_code = map.get("product_code").toString();
    Map<String, Object> product = productDao.detail(product_code);
    if(img != null && !img.isEmpty()) {
        filename = img.getOriginalFilename(); 
        filesize = img.getSize();
        try {
            ServletContext application = req.getSession().getServletContext();
            String path = application.getRealPath("/storage");

            // 기존 파일 삭제하기
            String oldFilename = product.get("FILENAME").toString();
            File file = new File(path+"\\"+oldFilename);
            if(file.exists()) {
                file.delete();
            } // if end

            img.transferTo(new File(path+"\\"+filename));
        } catch (Exception e) {
            System.out.print("파일 등록 실패 : ");
            e.printStackTrace(); // 에러 출력 메서드
        } // try end			
    } else {
        filename=product.get("FILENAME").toString();
        filesize=Long.parseLong(product.get("FILESIZE").toString());
        // filesize=(long)product.get("FILESIZE"); 오류
    }// if end

    map.put("filename", filename);
    map.put("filesize", filesize);
    productDao.update(map);
    return "redirect:/product/list";
} // update() end

 

 

저작자표시 비영리 동일조건 (새창열림)

'⁂ MyBatis Framework > : 기본 익히기' 카테고리의 다른 글

[MyBatis] #5-2 AJAX를 활용한 댓글 게시판 만들기 2 - 댓글 등록(Insert)  (0) 2022.11.14
[MyBatis] #5-1 AJAX를 활용한 댓글 게시판 만들기 1 - 테이블, DTO, DAO, Controller 생성  (0) 2022.11.14
[MyBatis3] #4-7 파일 업로드 및 댓글 게시판 만들기 : 삭제 기능 넣기  (0) 2022.11.11
[MyBatis3] #4-6 파일 업로드 및 댓글 게시판 만들기 : 상품 상세보기 페이지  (0) 2022.11.11
[MyBatis3] #4-5 파일 업로드 및 댓글 게시판 만들기 : 검색 기능 넣기  (0) 2022.11.11
    '⁂ MyBatis Framework/: 기본 익히기' 카테고리의 다른 글
    • [MyBatis] #5-2 AJAX를 활용한 댓글 게시판 만들기 2 - 댓글 등록(Insert)
    • [MyBatis] #5-1 AJAX를 활용한 댓글 게시판 만들기 1 - 테이블, DTO, DAO, Controller 생성
    • [MyBatis3] #4-7 파일 업로드 및 댓글 게시판 만들기 : 삭제 기능 넣기
    • [MyBatis3] #4-6 파일 업로드 및 댓글 게시판 만들기 : 상품 상세보기 페이지
    김갱환
    김갱환
    코딩의 코자도 모르는 이의 공부 기록장

    티스토리툴바