1. 컨트롤러를 활용하여서 게시판 페이지를 불러와보자!
1) DTO 만들기
package kr.co.itwill.bbs;
public class BbsDTO {
private String wname;
private String subject;
private String content;
private String passwd;
// 기본 생성자, getter, setter, toString()
public BbsDTO() {}
public String getWname() {
return wname;
}
public void setWname(String wname) {
this.wname = wname;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getPasswd() {
return passwd;
}
public void setPasswd(String passwd) {
this.passwd = passwd;
}
@Override
public String toString() {
return "BbsDTO [wname=" + wname + ", subject=" + subject + ", content=" + content + ", passwd=" + passwd + "]";
}
} // class end
2) 컨트롤러 만들기
package kr.co.itwill.bbs;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class BbsCont {
public BbsCont() {
System.out.println("-----------BbsCont() 객체 생성됨");
} // end
// 결과확인 http://localhost:9095/bbs/create.do GET 방식으로 호출
@RequestMapping(value = "/bbs/create.do", method = RequestMethod.GET)
public ModelAndView bbsForm() {
ModelAndView mav = new ModelAndView();
mav.setViewName("bbs/bbsForm");
return mav;
} // bbsForm() end
} // class end
3) bbsForm.jsp 페이지 만들기
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>bbsForm.jsp</title>
</head>
<body>
<table border="1">
<tr>
<th>작성자</th>
<td><input type="text" name="wname" size="10" maxlength="20"
required></td>
</tr>
<tr>
<th>제목</th>
<td><input type="text" name="subject" size="20" maxlength="100"
required></td>
</tr>
<tr>
<th>내용</th>
<td><textarea rows="5" cols="30" name="content"></textarea></td>
</tr>
<tr>
<th>비밀번호</th>
<td><input type="password" name="passwd" size="10"
maxlength="10" required></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" value="쓰기">
<input type="reset" value="취소"></td>
</tr>
</table>
</body>
</html>
4) 결과 : 뷰단에 불러온 화면
+ 이런 경우에는 페이지의 이름을 문자열로 저장만 하면 되기 때문에 String으로 호출 가능하다.
@RequestMapping(value = "/bbs/create.do", method = RequestMethod.GET)
public String bbsForm() {
return "bbs/bbsForm";
} // bbsForm()
2. 컨트롤러를 활용하여서 사용자가 입력한 값을 받아와 결과 페이지를 출력해보자!
다음으로는 bbsForm에 사용자가 입력한 값을 받아와 결과페이지를 출력해보려 한다.
// 동일한 요청 명령어를 GET | POST 방식으로 구분해서 호출 가능하다
@RequestMapping(value = "/bbs/create.do", method = RequestMethod.POST)
public ModelAndView bbsIns(HttpServletRequest req) {
// 사용자가 입력 요청한 정보 가져오기
String wname = req.getParameter("wname").trim();
String subject = req.getParameter("subject").trim();
String content = req.getParameter("content").trim();
String passwd = req.getParameter("passwd").trim();
ModelAndView mav = new ModelAndView();
mav.setViewName("bbs/bbsResult");
mav.addObject("wname", wname);
mav.addObject("subject", subject);
mav.addObject("content", content);
mav.addObject("passwd", passwd);
return mav;
} // bbsForm() end
여기서 명령어가 같다.
하지만 GET 방식과 POST 방식으로 요청한 값을 전달하는 방식이 다르다.
그렇기 때문에 같은 명령어라해도 다른 기능을 수행할 수 있다.
이렇게 입력을 하면?
이렇게 받아와진다.
여기서 url에 주목하자.
둘 다 같은 명령어 url로 출력이 된다.
실제 url은 다를지라도 사용자에겐 같은 url로 보이게 된다.
이는 보안이 더 강화될 수 있는 요소로 사용될 수도 있는 것이다(멋져!).
3. DTO를 활용해서 결과 페이지를 출력해보자
DTO를 활용하여 결과 페이지를 출력하는 방법도 있다.
이 때 새로운 어노테이션을 써야 하는데 바로 @ModelAttribute 이다.
1) 컨트롤러 만들기
// 2) 매개변수가 DTO일 경우
// -> 해당 클래스(BbsDTO)에 반드시 폼 컨트롤 요소 이름으로 되어있는 멤버변수와 각 getter, setter의 변수가 동일해야한다.
// @ModelAttribute는 생략이 가능하다
public ModelAndView bbsIns(@ModelAttribute BbsDTO dto) {
ModelAndView mav = new ModelAndView();
mav.setViewName("bbs/bbsResult2");
mav.addObject("dto", dto);
return mav;
} // bbsIns() end
2) JSP와 EL로 가져온 값을 뷰페이지에 출력시키기
<%@page import="kr.co.itwill.bbs.BbsDTO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>bbsResult.jsp</title>
</head>
<body>
<h3>* 글쓰기 결과 *</h3>
1) JSP<br>
<%
BbsDTO dto = (BbsDTO)request.getAttribute("dto");
out.println("작성자 : " + dto.getWname() + "<br>");
out.println("제목 : " + dto.getSubject() + "<br>");
out.println("내용 : " + dto.getContent() + "<br>");
out.println("비밀번호 :" + dto.getPasswd() + "<br>");
%>
<hr>
2) EL<br>
<!-- BbsDTO 클래스에 반드시 getter와 setter 함수가 있어야 함 -->
작성자 : ${dto.wname}<br>
제목 : ${dto.subject}<br>
내용 : ${dto.content}<br>
비밀번호 : ${dto.passwd}
<hr>
작성자 : ${wname}<br>
제목 : ${subject}<br>
내용 : ${content}<br>
비밀번호 : ${passwd}<br>
</body>
</html>
'⁂ Spring FrameWork > : 기본 익히기(Boot 기반)' 카테고리의 다른 글
[Spring] #7-2 MVC 패턴으로 DB 접근하기 - MyMelon 프로젝트(Class파일) (0) | 2022.11.02 |
---|---|
[Spring] #7-1 MVC 패턴으로 DB 접근하기 - MyMelon 프로젝트(환경설정) (0) | 2022.11.02 |
[Spring] #6 View와 Controller 연습하기(MVC 중 VC) (0) | 2022.11.01 |
[Spring] #5 어노테이션과 스프링 컨테이너(+ 내장형 톰캣 환경설정하기) (0) | 2022.10.31 |
[Spring] #4 pom.xml 뜯어보기 (0) | 2022.10.31 |