본문 바로가기

프로그래밍/SPRING 2.5

간단한 게시판 만들기 - 리스트 페이지

환경은 STS + 톰캣 7 +  JDK 1.7 + ORACLE 11G

 

워밍업삼아 우선 스프링 2.5를 기준으로 하나씩 해나간다.

 

우선 폴더 구조는 아래와 같다.

 

 

 

 

 

1. BoardistController.java

 

package board.controller;

import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;

import board.dao.JdbcTemplateDao;


public class BoardListController extends AbstractController {

 private JdbcTemplateDao boardDao;
 
 public void setBoardDao(JdbcTemplateDao boardDao){
  this.boardDao = boardDao;
 }

 @Override
 protected ModelAndView handleRequestInternal(HttpServletRequest req,
   HttpServletResponse res) throws Exception {
  // TODO Auto-generated method stub
  List boardList = boardDao.list();
  
  ModelAndView mav = new ModelAndView();
  mav.setViewName("list.jsp");
  
  return new ModelAndView("/board/list", "boardList", boardList);
 }
}

 

2. JdbcTemplateDao.java

 

package board.dao;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;

import board.vo.BoardVO;

public class JdbcTemplateDao {
   
 private JdbcTemplate jdbcTemplate;
   
 public void setJdbcTemplate(JdbcTemplate jdbcTemplate){
  this.jdbcTemplate = jdbcTemplate;
 }
 
 public int count() throws Exception{
  return jdbcTemplate.queryForInt("select count(*) from board");
 }
 
 public List list(){
  
  List result = new ArrayList();
  String sql = "select * from board order by board_seq desc";
  
  RowMapper rowMapper = new RowMapper(){

   @Override
   public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
    // TODO Auto-generated method stub
    BoardVO vo = new BoardVO();
    
    vo.setBoard_seq(rs.getInt("board_seq"));
    vo.setBoard_type(rs.getString("board_type"));
    vo.setStep(rs.getInt("step"));
    vo.setTitle(rs.getString("title"));
    vo.setContent(rs.getString("content"));
    vo.setIp(rs.getString("ip"));
    vo.setDelete_yn(rs.getString("delete_yn"));
    vo.setRegi_dt(rs.getString("regi_dt"));
    vo.setRegi_user(rs.getString("regi_user"));
    vo.setModi_dt(rs.getString("modi_dt"));
    vo.setModi_user(rs.getString("modi_user"));
    
    return vo;
   }
  };
  
  result = jdbcTemplate.query(sql, rowMapper);
  
  return result;
 }
 
}

 

3. BoardVO.java

 

package board.vo;

public class BoardVO {
    private int board_seq;
    private String board_type;
    private int step;
    private String title;
    private String content;
    private String ip;
    private String delete_yn;
    private String regi_dt;
    private String regi_user;
    private String modi_dt;
    private String modi_user;
   
 public int getBoard_seq() {
  return board_seq;
 }
 public void setBoard_seq(int board_seq) {
  this.board_seq = board_seq;
 }
 public String getBoard_type() {
  return board_type;
 }
 public void setBoard_type(String board_type) {
  this.board_type = board_type;
 }
 public int getStep() {
  return step;
 }
 public void setStep(int step) {
  this.step = step;
 }
 public String getTitle() {
  return title;
 }
 public void setTitle(String title) {
  this.title = title;
 }
 public String getContent() {
  return content;
 }
 public void setContent(String content) {
  this.content = content;
 }
 public String getIp() {
  return ip;
 }
 public void setIp(String ip) {
  this.ip = ip;
 }
 public String getDelete_yn() {
  return delete_yn;
 }
 public void setDelete_yn(String delete_yn) {
  this.delete_yn = delete_yn;
 }
 public String getRegi_dt() {
  return regi_dt;
 }
 public void setRegi_dt(String regi_dt) {
  this.regi_dt = regi_dt;
 }
 public String getRegi_user() {
  return regi_user;
 }
 public void setRegi_user(String regi_user) {
  this.regi_user = regi_user;
 }
 public String getModi_dt() {
  return modi_dt;
 }
 public void setModi_dt(String modi_dt) {
  this.modi_dt = modi_dt;
 }
 public String getModi_user() {
  return modi_user;
 }
 public void setModi_user(String modi_user) {
  this.modi_user = modi_user;
 }
 
 @Override
 public String toString() {
  return "BoardVO [board_seq=" + board_seq + ", board_type=" + board_type
    + ", step=" + step + ", title=" + title + ", content="
    + content + ", ip=" + ip + ", delete_yn=" + delete_yn
    + ", regi_dt=" + regi_dt + ", regi_user=" + regi_user
    + ", modi_dt=" + modi_dt + ", modi_user=" + modi_user + "]";
 }
}

 

 

4. index.jsp

 

<%@ 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>
    <h2>Board Test</h2>
    <hr></hr>
    <a href="board_list.do">Go to the list</a>
</body>
</html>

 

 

5. 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">

<jsp:useBean id="boardList" type="java.util.List" scope="request" />

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
    Test : ${requestScope.board}
    <p></p>
     
    Total cnt : ${boardCount}
   
    <hr></hr>
   
    <p align="center">
        Board List
    </p>
   
    <table boarder="1">
        <tr>
            <th>No</th>
            <th>Title</th>
            <th>User</th>
            <th>PostDate</th>
        </tr>
       
        <c:forEach var="vo" items="${boardList}">
         <tr>
             <th>${vo.board_seq}</th>
             <th>${vo.title}</th>
             <th>${vo.regi_user}</th>
             <th>${vo.regi_dt}</th>
         </tr>       
        </c:forEach>
    </table>
    
</body>
</html>

 

 

6.web.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>HelloApp</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
 
  <servlet>
      <servlet-name>springapp</servlet-name>
      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
      <load-on-startup>1</load-on-startup>
  </servlet>
 
  <servlet-mapping>
      <servlet-name>springapp</servlet-name>
      <url-pattern>*.do</url-pattern>
  </servlet-mapping>
 
  <listener>
      <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
 
  <context-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>/WEB-INF/springapp-servlet.xml</param-value>
  </context-param>
   
</web-app>

 

7. springapp-servlet.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/mvc"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns:beans="http://www.springframework.org/schema/beans"
 xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
  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">
 
 <!-- the application context definition for the springapp DispatcherServlet -->
 
 <beans:bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
     <beans:property name="prefix">
         <beans:value>/</beans:value>
     </beans:property>
     <beans:property name="suffix">
         <beans:value>.jsp</beans:value>
     </beans:property>
 </beans:bean>

 <beans:bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
     <beans:property name="jndiName" value="jdbc/SpringDB"></beans:property>
     <beans:property name="resourceRef" value="true"></beans:property>
 </beans:bean>
  
 <beans:bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
     <beans:property name="dataSource" ref="dataSource"></beans:property>
 </beans:bean>
 
 <beans:bean id = "boardDao" class="board.dao.JdbcTemplateDao">
     <beans:property name="jdbcTemplate" ref="jdbcTemplate"></beans:property>
 </beans:bean> 
 
 <beans:bean name="/board_list.do" class="board.controller.BoardListController">
     <beans:property name="boardDao" ref="boardDao"></beans:property>
 </beans:bean>
 
</beans:beans>

'프로그래밍 > SPRING 2.5' 카테고리의 다른 글

스프링 라이프 사이클 확인하기.  (0) 2013.09.11
스프링의 구조  (0) 2013.09.05
스프링 컨트롤러 계층 구조  (0) 2013.09.05
DispatcherServlet  (0) 2013.09.04
스프링 MVC 라이프 사이클  (0) 2013.09.04