Dorothy_YANG
With Dorothy
Dorothy_YANG
전체 방문자
오늘
어제
  • 분류 전체보기 (279)
    • Hi, I'm Dorothy 🕵️‍♂️ (21)
      • Slowly but Surely (18)
      • IT certifications (3)
    • 🤯TIL (80)
      • HTML & CSS (2)
      • Javascript & jQuery (13)
      • React (13)
      • C언어 (1)
      • JAVA (22)
      • Python (2)
      • Oracle SQL (10)
      • My SQL (5)
      • Spring (12)
    • 💻Programmers (17)
    • 🏫 Open API_JAVA (101)
    • 🌎 Project (10)
      • Shopping (10)
    • 💥 Error (24)
    • ⚙ Setting (23)

블로그 메뉴

  • 홈
  • 방명록

공지사항

인기 글

태그

  • sql기간
  • 비쥬얼스튜디오코드
  • 오류해결
  • colaboratory
  • AllArgsConstructor
  • 이것이자바다
  • 코딩앙마
  • 파이썬온라인
  • 노마드코더
  • HTML
  • java
  • 연습문제
  • spring
  • 서버등록
  • Eclipse
  • 기간쿼리
  • Database
  • 백준
  • Javascript
  • CSS
  • 창초기화
  • oracle
  • SQLD합격후기
  • 시작일종료일
  • 독학후기
  • SQL
  • SQLD합격
  • googlecolaboratory
  • 콜라보레이토리
  • 기간설정

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Dorothy_YANG

With Dorothy

[73일차] 게시판 만들기 / 클래스 ➡ 컬렉션으로 사용하기 / 스프링에서 데이터를 받는 방법
🏫 Open API_JAVA

[73일차] 게시판 만들기 / 클래스 ➡ 컬렉션으로 사용하기 / 스프링에서 데이터를 받는 방법

2022. 11. 7. 19:08
728x90

20221107(월)

  • 목차 
    - 게시판 만들기
    - 클래스 ➡ 컬렉션으로 사용하기
    - 스프링에서 데이터를 받는 방법 

 


< 게시판 만들기 >

 

  • SampleController2 코드
package com.demo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;

import com.demo.domain.BoardVO;

import lombok.extern.log4j.Log4j;

@Controller
@Log4j
@RequestMapping("/board/*")
public class SampleController2 {

	// 폼을 구성하고, 사용자가 입력한 데이타를 받아오는 방법
	
	// 게시판 폼
	@GetMapping("/write") // 요청주소 :    /board/write    jsp : /board/write.jsp
	public void write() {
	}
	
	
	// 게시판 : 글저장
	@PostMapping("/write") // BoardVO클래스의 Setter메서드가 동작한다.
	public String write(BoardVO vo) {
		log.info(vo);
		return "";
	}
}

 

  • BoardVO 코드
package com.demo.domain;

import java.util.Date;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;

@Setter
@Getter
@ToString
@NoArgsConstructor
@AllArgsConstructor
public class BoardVO {

	private Long bno;
	private String writer;
	private String title;
	private String content;
	private int viewcnt; // 기본값 0
	private Date regdate; // 기본값 null
}

 

  • write.jsp 코드
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3>게시판 : 글쓰기</h3>
<form method = "post" action="write">
	글번호 : <input type = "text" name = "bno"><br>
	글제목 : <input type = "text" name = "title"><br>
	작성자 : <input type = "text" name = "writer"><br>
	글내용 : <textarea name = "content" rows = "5" cols = "30"></textarea><br>
	<input type = "submit" value = "글저장">
</form>
</body>
</html>

 

  • 실행화면

 

 

  • 글저장 후 ➡ 아래 창 정상!

 

  • 영어는 잘 들어가나, 한글은 깨져서 들어간다. (깨짐 방지는 조금 더 내려가면 해결할 예정이다!)

 


 

✨ 클래스를 만들엇는데 컬렉션으로 사용하고 싶은 경우

 

  • com.demo.domain > SampleDTO
package com.demo.domain;

import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

// 스프링에서는 데이터클래스 목적으로 사용할 경우에는 getter, setter메서드가 반드시 존재해야 한다.


@Data // @Getter, @Setter, @ToString, equals(), hashCode(), canEqual()
public class SampleDTO {

	private String name; // <input type = "text" name = "name"
	private int age;     // <input type = "text" name = "age"
}

 

  • com.demo.domain > SampleDTOList.java 파일코드
package com.demo.domain;

import java.util.ArrayList;
import java.util.List;

import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

@Setter
@Getter
@ToString
public class SampleDTOList {
	
	// 데이타를 컬렉션 형태로 관리하는 데, 실제 데이타타입은 SampleDTO클래스 이다.
	// <input type = "text" name = "list[0].필드명" >
	private List<SampleDTO> list; // list[0].name, list[0].age, list[1].name, list[1].age
	
	public SampleDTOList() {
		list = new ArrayList<SampleDTO>();
	}
}

 

  • com.demo.controller > SampleController2.java 파일코드
package com.demo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;

import com.demo.domain.BoardVO;
import com.demo.domain.SampleDTOList;

import lombok.extern.log4j.Log4j;

@Controller
@Log4j
@RequestMapping("/board/*")
public class SampleController2 {

	// 폼을 구성하고, 사용자가 입력한 데이타를 받아오는 방법
	
	// 게시판 폼
	@GetMapping("/write") // 요청주소 :    /board/write    jsp : /board/write.jsp
	public void write() {
	}
	
	// 1) 클래스 파라미터로 받아오기
	// 게시판 : 글저장
	@PostMapping("/write") // BoardVO클래스의 Setter메서드가 동작한다.
	public String write(BoardVO vo) {
		log.info(vo);
		return "";
	}
	
	
    
	// 2) List 컬렉션으로 데이타 받아오기.
	// 1) 폼
	@GetMapping("/ex02BeanTest")
	public void ex02BeanTest() {
	}
	
	// 2) 데이타 확인
	@PostMapping("/ex02Bean")
	public String ex02Bean(SampleDTOList lst) {
		
		log.info(lst);
		return "";
	}
    
    
    
    // 동일한 파라미터명으로 여러개의 값이 전송되는 경우.
	// get방식. http://localhost?:8888/board/ex02List?ids=11&ids=22&ids=33
	// post방식.
	/*
	 <form method = "post" action = "">
	 	<input type = "text" name = "ids">
	 	<input type = "text" name = "ids">
	 	<input type = "text" name = "ids">
	 </form>
	 
	 */
}

 

  • jsp 폼 > ex02BeanTest.jsp
    폼을 만들 때 그 폼 명으로 된 jsp파일이 있어야 함.
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h3>List 컬렉션으로 데이타 폼 구성하기</h3>
	<form method = "post" action = "/board/ex02Bean">
		이름1 : <input type = "text" name = "list[0].name"><br>
		나이1 : <input type = "text" name = "list[0].age"><br>
		이름2 : <input type = "text" name = "list[1].name"><br>
		나이2 : <input type = "text" name = "list[1].age"><br>
		이름3 : <input type = "text" name = "list[2].name"><br>
		나이3 : <input type = "text" name = "list[2].age"><br>
		<input type = "submit" value = "전송">
	</form>
</body>
</html>

 

 

  • 실행화면

 

  • 데이타가 <SampleDTO>로 들어간다!

 


< 한글 문자깨짐 방지 >

(1) pom.xml에 추가

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
    <scope>provided</scope>
</dependency>

 


(2) web.xml 내용 수정 및 추가

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="WebApp_ID" version="3.1">

 


(3) web.xml에 추가

<!-- 한글깨짐방지. -->
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

 

  • 한글이 더이상 깨지지 않는다!

 


< 클라이언트에서 데이타를 전송했을 때 스프링에서 데이터를 받는 방법 >

     ➡ 필드로 값을 받는다.

  클라이언트(HTML) 스프링 
(1)   - get방식
    http://localhost/?age=100&name=홍길동


  - post방식
    <form method="post">
       <input type="text" name="name">
       <input type="text" name="age">
    </form>
단순 파라미터  
aaa(int age, String name)
(2)   - get방식
    http://localhost/?age=100&name=홍길동


  - post방식
    <form method="post">
       <input type="text" name="name">
       <input type="text" name="age">
    </form>
aaa(SampleDTO dto)
  
  class SampleDTO {
       int age;
       String name;
    }
(3)   - get방식
    http://localhost/?lst[0].age=100&lst[0].name=홍길동&lst[1].age=100&lst[1].name=홍길동


  - post방식
    <form method="post">
       <input type="text" name="lst[0].name">
       <input type="text" name="lst[0].age">
       <input type="text" name="lst[1].name">
       <input type="text" name="lst[1].age">
    </form>
 - 스프링(List컬렉션)
   aaa(SampleDTOList dto)

   class SampleDTOList {
       List lst;
   }
728x90
저작자표시 (새창열림)

'🏫 Open API_JAVA' 카테고리의 다른 글

[75일차] 게시판 구조 생성 / 디자인 html 파일 ➡ jsp 형태로 만들기  (0) 2022.11.13
[74일차] Ajax / 파일 업로드 처리기능 구현 / bean 설정 및 라이브러리 추가  (0) 2022.11.09
[72일차] 개발툴 / 스프링 프레임워크 / 마이바티스 / 스프링에서 bean생성하는 유형  (0) 2022.11.04
[71일차] JSON / 롬복 라이브러리 / 의존성 주입 / Spring-Test / MyBatis xml 파일 사용하기  (0) 2022.11.04
[70일차] JSTL 라이브러리 / 기본이론 / 스프링 프레임워크 / CRUD 기능  (0) 2022.11.04
    '🏫 Open API_JAVA' 카테고리의 다른 글
    • [75일차] 게시판 구조 생성 / 디자인 html 파일 ➡ jsp 형태로 만들기
    • [74일차] Ajax / 파일 업로드 처리기능 구현 / bean 설정 및 라이브러리 추가
    • [72일차] 개발툴 / 스프링 프레임워크 / 마이바티스 / 스프링에서 bean생성하는 유형
    • [71일차] JSON / 롬복 라이브러리 / 의존성 주입 / Spring-Test / MyBatis xml 파일 사용하기
    Dorothy_YANG
    Dorothy_YANG
    Slowly but Surely, 비전공 문과생의 개발공부

    티스토리툴바