김갱환
맨땅에 코딩
김갱환
전체 방문자
오늘
어제
  • 분류 전체보기 (239)
    • ⁂ 맨땅에 코딩 (11)
      • : Story (3)
      • : MiniProject 'MyWeb' (1)
      • : Final Project (5)
      • : Josa-Moa 한국어 조사 처리 프로젝트 (1)
    • —————Frontend——————————————.. (0)
    • ⁂ HTML (10)
      • : 기본 익히기 (10)
    • ⁂ CSS (15)
      • : 기본 익히기 (15)
    • ⁂ Java Script (32)
      • : 기본 익히기 (28)
      • : 자바스크립트 라이브러리 (1)
      • : 연습 문제 (3)
    • ⁂ jQuery (11)
      • : 기본 익히기 (11)
    • ⁂ Bootstrap (3)
      • : 기본 익히기 (3)
    • ⁂ TailWind CSS (1)
    • ⁂ AJAX (5)
      • : 기본 익히기 (5)
    • ⁂ Vue.js (3)
      • : 기본 익히기 (3)
    • —————DB : Data Base————————.. (0)
    • ⁂ Oracle DB (27)
      • : 기본 익히기 (24)
      • : 연습 문제 (3)
    • ⁂ MyBatis Framework (15)
      • : 기본 익히기 (15)
    • —————Backend———————————————.. (0)
    • ⁂ Java (62)
      • : 기본 익히기 (42)
      • : JDBC - Java DataBase Conn.. (4)
      • : Crawling (2)
      • : 독학으로 공부하기(과거) (11)
      • : 연습문제 (3)
    • ——————Web————————————————— (0)
    • ⁂ JSP (28)
      • : 기본 익히기 (28)
    • ⁂ Spring FrameWork (15)
      • : Legacy Project (1)
      • : 기본 익히기(Boot 기반) (14)
    • ——————————————————————— (0)
    • ⁂ Error Note (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 코딩
  • 연산자 #기본연산자 #코딩 #자바 #독학 #자바공부 #자바연산자
  • 백앤드
  • web.xml수정
  • 개발자
  • 코딩 #코딩공부 #상수 #리터럴 #형변환 #개발자 #자바 #자바공부 #자바독학
  • 자바공부
  • http에러메세지
  • 객체지향프로그래밍
  • 풀스택
  • httperror
  • 코딩공부
  • HTML공부
  • 프론트앤드
  • 코딩공부 #자바공부
  • 자바
  • 코딩공부 #코딩 #자바 #자바독학 #자바공부 #개발자 #프론트앤드 #백앤드 #풀스택
  • 코딩 #코딩공부 #프론트앤드 #백앤드 #풀스택개발자
  • ErrorPage
  • 비트연산자 #코딩공부 #자바공부 #코딩 #자바 #프로그래밍 #개발자

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
김갱환
⁂ Spring FrameWork/: 기본 익히기(Boot 기반)

[Spring] #6-2 컨트롤러로 게시판 만들기

⁂ Spring FrameWork/: 기본 익히기(Boot 기반)

[Spring] #6-2 컨트롤러로 게시판 만들기

2022. 11. 1. 17:04

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>

dto가 붙지 않으면 값을 가져오지 못한다

 

저작자표시 비영리 동일조건 (새창열림)

'⁂ 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
    '⁂ Spring FrameWork/: 기본 익히기(Boot 기반)' 카테고리의 다른 글
    • [Spring] #7-2 MVC 패턴으로 DB 접근하기 - MyMelon 프로젝트(Class파일)
    • [Spring] #7-1 MVC 패턴으로 DB 접근하기 - MyMelon 프로젝트(환경설정)
    • [Spring] #6 View와 Controller 연습하기(MVC 중 VC)
    • [Spring] #5 어노테이션과 스프링 컨테이너(+ 내장형 톰캣 환경설정하기)
    김갱환
    김갱환
    코딩의 코자도 모르는 이의 공부 기록장

    티스토리툴바

    단축키

    내 블로그

    내 블로그 - 관리자 홈 전환
    Q
    Q
    새 글 쓰기
    W
    W

    블로그 게시글

    글 수정 (권한 있는 경우)
    E
    E
    댓글 영역으로 이동
    C
    C

    모든 영역

    이 페이지의 URL 복사
    S
    S
    맨 위로 이동
    T
    T
    티스토리 홈 이동
    H
    H
    단축키 안내
    Shift + /
    ⇧ + /

    * 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.