☘️ Spring

[Spring] day63 - 테스트 로그인 / 검색 실습

harveydent 2023. 8. 7. 08:56
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

 

GitHub - Qkrwnsgus0522/Spring

Contribute to Qkrwnsgus0522/Spring development by creating an account on GitHub.

github.com

 

728x90