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 |