728x90
테스트 로그인
@ModelAttribute 어노테이션이 붙은 객체를 자동으로 생성합니다. 이 때 @ModelAttribute가 지정되는 클래스는 bean 클래스여야 합니다. 또한 getter와 setter가 명명 규칙에 맞게 만들어져 있어야 합니다. 이후 생성된 오브젝트(mVO)에 HTTP로 넘어온 값들을 해당 변수의 setter를 통해서 해당 멤버 변수에 자동으로 바인딩됩니다. @ModelAttribute 어노테이션이 붙은 mVO객체가 자동으로 Model 객체에 추가되고 따라서 MemberVO 객체가 main.jsp로 전달됩니다.
package com.spring.view.controller;
import java.util.HashMap;
import java.util.Map;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;
import com.spring.biz.board.BoardDAO;
import com.spring.biz.board.BoardVO;
import com.spring.biz.member.MemberVO;
@Controller
public class MainController {
@ModelAttribute("searchMap")
public Map<String, String> searchMap() {
Map<String, String> map = new HashMap<String, String>();
map.put("제목", "TITLE");
map.put("작성자", "WRITER");
return map;
}
@RequestMapping(value="/main.do")
// public String main(@RequestParam(value="searchCondition", defaultValue="TITLE", required=false)String searchCondition, @RequestParam(value="searchContent", defaultValue="", required=false)String searchContent, @ModelAttribute("mem")MemberVO mVO, BoardDAO bDAO, /* ModelAndView mav,*/ Model model) {
public String main(@ModelAttribute("mem")MemberVO mVO, BoardVO bVO, BoardDAO bDAO, /* ModelAndView mav,*/ Model model) {
// String searchCondition = request.getParameter("searchCondition");
// System.out.println("searchCondition: " + searchCondition);
// System.out.println("searchContent: " + searchContent);
System.out.println("searchCondition: " + bVO.getSearchCondition());
System.out.println("searchContent: " + bVO.getSearchContent());
mVO.setMid("test");
mVO.setMpw("1234");
System.out.println("MainController 로그");
// model.addAttribute("mem", mVO); // 가독성의 이유로 22번 보다는 @ModelAttribute 선호
model.addAttribute("datas", bDAO.selectAll(null));
// mav.addObject("datas", bDAO.selectAll(null));
// mav.setViewName("main.jsp");
// /WEB-INF/views/ + main + .jsp
// return mav;
return "main.jsp";
}
}
MainController.java
<%@ 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/functions" prefix="fn" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="kim" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>메인페이지</title>
</head>
<body>
<kim:header />
<hr>
<form action="main.do">
<select name="searchCondition">
<!--
<option value="TITLE">제목</option>
<option value="WRITER">작성자</option>
-->
<c:forEach var="v" items="${ searchMap }">
<option value="${ v.value }">${ v.key }</option>
</c:forEach>
</select>
<input type="text" name="searchContent" placeholder="검색어를 입력하세요.">
<input type="submit" value="검색">
</form>
<br>
<c:if test="${fn:length(datas) <= 0 }">
<h1>출력할 게시글이 존재하지않습니다!</h1>
</c:if>
<c:if test="${fn:length(datas) > 0 }">
<table border="1">
<tr>
<th>글 번호</th><th>글 제목</th><th>작성자</th><th>조회수</th>
</tr>
<c:forEach var="v" items="${datas}">
<tr>
<td><a href="board.do?bid=${v.bid}&searchCondition=CNT">${v.bid}</a></td><td>${v.title}</td><td>${v.writer}</td><td>${v.cnt}</td>
</tr>
</c:forEach>
</table>
</c:if>
</body>
</html>
main.jsp
GitHub
https://github.com/Qkrwnsgus0522/Spring
728x90