영보의 SystemOut.log

[Spring] Spring MVC 구조 자유게시판 만들기 - (3) 본문

Spring

[Spring] Spring MVC 구조 자유게시판 만들기 - (3)

영보로그 2020. 11. 10. 22:41
반응형

qh5944.tistory.com/97?category=418956

 

[Spring] Spring MVC 구조 자유게시판 만들기 - (2)

qh5944.tistory.com/92 [Spring] Spring MVC 구조 자유게시판 만들기 - (1)  개념 정리 # request 구분 일반 MVC 구조 Spring 차이점 1. 사용자 보내준 데이터를 받을 수 있다  → getParameter() 2. 결과값을..

qh5944.tistory.com

저번 게시물에 이어서 마지막으로 게시판 총 완성을 시켜보겠습니다.

 

 

 

 개념 정리

 

fList의 인덱스 번호 (varStatus="s")

                         fList.get(0) => sList.get(0)

                                           ${sList[s.index]}

 - 여러개의 ArrayList가 들어와도 동시에 출력이 가능하게 함

 

 

 

# download

 - 헤더 → 데이터 전송전에 보내는 내용 : 다운로드창을 보여준다 (파일명,파일크기)
 - 헤더 response
 - request : 사용자가 요청값 전송 사용자 정보(IP)
 - response : 응답 (Cookie,Header,HTML)

 

 

 

 

 코드

# DB에 테이블에 컬럼 추가 SQL문

1
2
3
ALTER TABLE spring_board ADD filename VARCHAR2(1000);
ALTER TABLE spring_board ADD filesize VARCHAR2(1000);
ALTER TABLE spring_board ADD filecount NUMBER DEFAULT 0;
cs

 

 

# applicaition-datasource.xml 

   경로 : WEB-INF - config - applicaition-datasource.xml 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd">
    <!-- DataSource -->
    <!-- 
          maxActive="8"
          maxIdle="8"
     -->
    <bean id="ds"
        class="org.apache.commons.dbcp.BasicDataSource"
        p:driverClassName="oracle.jdbc.driver.OracleDriver"
        p:url="jdbc:oracle:thin:@211.238.142.181:1521:XE"
        p:username="hr"
        p:password="happy"
    />
    
    <!-- MyBatis에 값을 전송 -->
    <bean id="ssf"
       class="org.mybatis.spring.SqlSessionFactoryBean"
       p:dataSource-ref="ds"
    />
    <!-- 인터페이스 구현 -->
    <bean id="bmapper"
       class="org.mybatis.spring.mapper.MapperFactoryBean"
       p:sqlSessionFactory-ref="ssf"
       p:mapperInterface="com.sist.dao.BoardMapper"
    />  
    <bean id="rmapper"
       class="org.mybatis.spring.mapper.MapperFactoryBean"
       p:sqlSessionFactory-ref="ssf"
       p:mapperInterface="com.sist.dao.ReplyMapper"
    />
</beans>
cs

 

 

 

# application-context.xml

   경로 : WEB-INF - config -applicaition-context.xml 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:p="http://www.springframework.org/schema/p"
    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-4.3.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd">
    <context:component-scan base-package="com.sist.*"/>
    <!-- RestController에서 데이터 전송시에 한글이 깨진다 -->
    <mvc:annotation-driven>
        <mvc:message-converters>
            <!-- @ResponseBody Content-Type:application/json;charset=UTF-8  -->
            <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                <property name="supportedMediaTypes">
                    <list>
                        <value>text/html;charset=UTF-8</value>
                    </list>
                </property>
            </bean>
        </mvc:message-converters>
     </mvc:annotation-driven>
    <!-- JSP 찾기 -->
    <bean id="viewResolver"
       class="org.springframework.web.servlet.view.InternalResourceViewResolver"
       p:prefix="/"
       p:suffix=".jsp"
     />
     <!--  id : 대소문자 구분 단어를 반드시 설정 
                     이미 설정되어 있는 디폴트 ID
      -->
     <bean id="multipartResolver"
       class="org.springframework.web.multipart.commons.CommonsMultipartResolver"
     />
</beans>
cs

 

 

 

# ReplyVO

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package com.sist.dao;
import java.util.*;
public class ReplyVO {
    private int no;
    private int bno;
    private String id;
    private String name;
    private String msg;
    private Date regdate;
    private String dbday;
    public int getNo() {
        return no;
    }
    public void setNo(int no) {
        this.no = no;
    }
    public int getBno() {
        return bno;
    }
    public void setBno(int bno) {
        this.bno = bno;
    }
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getMsg() {
        return msg;
    }
    public void setMsg(String msg) {
        this.msg = msg;
    }
    public Date getRegdate() {
        return regdate;
    }
    public void setRegdate(Date regdate) {
        this.regdate = regdate;
    }
    public String getDbday() {
        return dbday;
    }
    public void setDbday(String dbday) {
        this.dbday = dbday;
    }
}
cs

 

 

# ReplyDAO

1
2
3
4
5
6
7
8
9
10
11
12
13
14
package com.sist.dao;
 
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import java.util.*;
@Repository
public class ReplyDAO {
   @Autowired
   private ReplyMapper mapper;
   public List<ReplyVO> replyListData(int bno)
   {
       return mapper.replyListData(bno);
   }
}
cs

 

 

 

# ReplyMapper

1
2
3
4
5
6
7
8
9
10
11
12
package com.sist.dao;
 
import org.apache.ibatis.annotations.Select;
import java.util.*;
public interface ReplyMapper {
  // 목록 읽기
  @Select("SELECT no,bno,id,name,msg,TO_CHAR(regdate,'YYYY-MM-DD HH24:MI:SS') as dbday "
         +"FROM spring_reply "
         +"WHERE bno=#{bno} "
         +"ORDER BY no DESC")
  public List<ReplyVO> replyListData(int bno);
}
cs

 

 

 

 

 

 실행 화면

list.jsp 실행

시험삼아 넣어본 심청이의 게시물

 

 

 

detail.jsp

심청이 게시물 상세페이지

 

 

 

insert.jsp

list.jsp에서 [새글] 누르고 나오는 글쓰기 화면

파일 업로드도 가능하다.

 

 

 

다시 list.jsp

새 글이 업데이트 된게 보이네요

 

 

 

delete.jsp

상세페이지에서 삭제를 누르고 글쓸 때 사용했던 비밀번호를 치고 삭제

 

 

 

정상적으로 삭제된 화면.

 

반응형