by-nc-sa     개발자, DBA가 함께 만들어가는 구루비 지식창고!

어노테이션 기반의 Controller 개발




어노테이션 기반의 Controller 개발

사원목록 조회용 Controller 생성

  • com.oracleclub.study.mvc.controller 패키지를 생성한다.
  • EmpListController를 생성한다.
  • @Controller 어노테이션을 이용하여 Controller 빈으로 선언한다.
  • @RequestMapping 어노테이션을 이용하여 웹에서 접근할 URL을 지정한다.
com.oracleclub.study.mvc.controller.EmpListController.java
 package com.oracleclub.study.mvc.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

/**
 * 사원목록 조회
 * 
 * @author : gurubee
 * 
 */
@Controller
public class EmpListController {

    @RequestMapping(value = "/emp/list")
    public ModelAndView list() {

        ModelAndView mv = new ModelAndView();

        // View 지정
        // mvc-dispatcher-servlet.xml 파일의 viewResolver를 사용
        mv.setViewName("emp/list");

        return mv;
    }
}
  
 

list.jsp 파일 생성

  • 사원 목록을 보여주는 list.jsp 파일을 아래 경로에 생성한다.
    /WEB-INF/pages/emp/list.jsp
     
    <%@ page language="java" contentType="text/html;charset=utf-8" pageEncoding="utf-8" %>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html lang="ko">
    <head>
    <meta http-equiv="Content-type" content="text/html; charset=UTF-8">
    <style>
    .error {
        color: #ff0000;
    }
    .errorblock{
        color: #000;
        background-color: #ffEEEE;
        border: 3px solid #ff0000;
        padding:8px;
        margin:16px;
    }
    </style>
    <script type="text/javascript" language="JavaScript">
        function showMessage(msg){
            if(msg != ''){
                alert(msg); 
            }   
        }
    
        function runRegisterForm(){        
            location.href = "/emp/form";        
        }
    
        function runDelete(){
            if(isChecked(document.getElementsByName("empno"))){
                if(confirm('정말 삭제하시겠습니까?')){
                     document.form.action = '/emp/remove';
                     document.form.submit();
                }else{              
                    return;
                }           
            }else{
                alert('삭제할 사원을 선택해 주세요!');
            }
        }
    
        function isChecked(chkbox){
            var flag = false;
            for(var i=0 ; i<chkbox.length ; i++){
                if(chkbox[i].checked){
                    flag = true;
                    break;
                }   
            }
            return flag;
        }
        
    </script>
    </head>
    <body onload="showMessage('${msg}');">
    <form name="sform" method="post" action="/emp/list">
        <table width="50%" border="0">
            <tr>
                <td width="100%" align="right">
                    <input type="button" value="등록" onclick="runRegisterForm();"/>
                    <input type="button" value="삭제" onclick="runDelete();"/>
                </td>
            </tr>
        </table>
    </form>
    <form name="form" method="post" action="">
        <table width="50%" border="1">
            <tr>
                <th>선택</th>
                <th>empno</th>
                <th>ename</th>
                <th>job</th>
                <th>sal</th>
                <th>mgr</th>
                <th>deptno</th>            
            </tr>
            <c:forEach var="emp" items="${empList}" varStatus="c">
                <tr  > 
                    <td><input type="radio" name="empno" value="${emp.empno}" /></td>
                    <td>${emp.empno}</td>
                    <td><a href="/emp/view.ok?empno=${emp.empno}">${emp.ename}</a></td>
                    <td>${emp.job}</td>
                    <td><fmt:formatNumber value="${emp.sal}" type="number" /></td>
                    <td>${emp.mgr}</td>
                    <td>${emp.deptno}</td>                
                </tr>
            </c:forEach>
        </table>
    </form>
    </body>
    </html> 
     

테스트

문서정보

Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.