프로그래밍

[Spring] day63 : 테스트계정 / 검색 예제 본문

자바/Spring

[Spring] day63 : 테스트계정 / 검색 예제

시케 2023. 8. 13. 22:33
728x90
반응형

2023.08.07.월

테스트계정 / 검색 예제

현재까지 학습한 내용인 Spring MVC 방식으로 테스트계정과 검색 예제를 구현해보자

 

[@ModelAttribute("이름")]
VIEW에서 사용할 데이터를 세팅하려는 목적으로 활용하는 @(어노테이션)

@Controller 파트에서 해당 @을 사용하면
@RequestMapping보다 먼저 수행된다
※ 가장 먼저 실행된다는 특징이 있다

해당 방식을 사용할시 무슨 검색이 되어야하는지 VIEW가 몰라도 괜찮아진다
DB 구조를 모르더라도 VIEW 구현이 가능해진다

 

request라는 NOT POJO인 무거운 객체를 쓰지 않을 수 있다는 장점 또한 있다

단, VO에 tmp 멤버변수를 생성하는것이 보편적인 방식이다

 

@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(@ModelAttribute("mem")MemberVO mVO, BoardVO bVO, BoardDAO bDAO, Model model) {
		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);
		model.addAttribute("datas", bDAO.selectAll(bVO));
		return "main.jsp";
	}

}

[테스트 계정으로 로그인]

Command 객체를 별도의 설정없이 바로 VIEW에서 EL식으로 사용할 수 있다
※ 단, 클래스타입을 소문자로 시작해야한다

 

<%@ tag language="java" pageEncoding="UTF-8"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<c:if test="${empty member}">
	<form action="login.do" method="post">
		아이디 <input type="text" name="mid" value="${mem.mid}" required> <br>
		비밀번호 <input type="password" name="mpw" value="${mem.mpw}" required> <br>
		<input type="submit" value="로그인">
	</form>
</c:if>
<c:if test="${not empty member}">
	<a href="logout.do">로그아웃</a>
	<br>
	<a href="insertBoard.do">글 작성</a>
</c:if>

MainController.java에서 @ModelAttribute("mem")으로 지정하여 View에서 바로 사용 가능하게 되었다

@ModelAttribute로 멤버변수에 없는 데이터도 특정하여 보낼 수 있다

 

이전의 코드에서는 VIEW가 VO를 알고 코딩을 한 상황이지만 해당 방식을 사용하면 VIEW가 VO를 알지못하더라도 개발할 수있다

 

[검색]

이전

<%@ 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">
		<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>

 

 

https://github.com/jihyean/Spring/tree/main/day63

728x90
반응형
Comments