[과제]
1. NameTelController 에서 '데이터 전송방식' 구현 (form submit 방식)
2. NAME_TEL 테이블 생성
3. name-tel.jsp 생성 (요청 url 매핑 방식 구현)
1. Spring Application 구동
WAS 구동 시 web.xml 읽은 후 ServletContainer 구동
- web.xml: 서블릿의 생명주기 관리하는 설정이 담겨있는 설정파일.
이 설정파일을 읽어서 서블릿등을 생성하는 컨테이너가 하나 생성
-> 컨테이너: 설정파일을 저장하고 있는 상자. 어떤 동작이 일어났을 때 저장되어 있는 설정파일로 무언가를 생성해주는 상자
- context-param: servlet-container가 구동되면서 전달할 파라미터
스프링 컨테이너 설정파일을 지정해서
servlet-contianer가 구동되면서
스프링 부모컨테이너를 바로 구동할 수 있도록 한다.
context-param으로 지정되어 있는 root-context.xml을 읽어
부모 스프링 컨테이너를 구동
[결론]
- root-context(부모 스프링 컨테이너): Model(비즈니스 로직, DB 커넥션 관련) 설정
- servelet-context(자식 스프링 컨테이너): View-Controller(화면단과 정적파일들) 관련 설정을 주로함.
2. 화면에서 자바로 데이터 전송방식 (가. form submit 방식 이용)
가. form submit: form 태그의 입력된 input 데이터를 바로 요청 url로 전송
각 input의 name 속성이 키로 지정되어 입력된 값을 매핑되어 전송
나. ajax 를 이용한 비동기 통신 전송: ajax 비동기 통신할 때 data 속성으로 원하는 데이터 전송
contentType 속성에서 전송될 데이터 형식을 지정
json, html, text 등 지정 가능
다. multipartFormData: new FormData()로 객체를 생성해서 전송하는 방식. 파일전송 시 주로 이 방식
혹은 form 태그의 enctype 속성으로 FormData 객체 전송 가능
3. 요청 url 매핑 방식
가. get 방식: body 생성 안됨.
url 표출 됨
보안상 중요하지 않은 데이터 사용 / 단순 조회 / 속도 빠름
★ 쿼리스트링 방식: 요청주소? key=value&key2=value2....
★ ★ 화면 이동시 사용
나. post 방식: body 생성.
url 표출 안됨
보안상 중요한 내용.
★ ★ 기능을 발휘해야 할 때(로그인, 회원가입 등) 사용
다. put, delet 방식: Spring Framework에서도 사용 가능하나, Spring Boot에서 배워 볼 예정
[참고] [(free-detail.do)Request Method : get 방식]
4. database - table 생성("NAME_TEL")
5. views - name-tel.jsp 생성
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
// prefix 지정
// 이 선언문을 통해 JSP 파일에서 JSTL(Java Standard Tag Library) 태그를 사용할 수 있습니다.
// JSTL: jsp를 동적으로 표현 가능
<%@ taglib prefix="c" uri="jakarta.tags.core" %>
<html>
<head>
// name-tel 타이틀 지정
<title>name-tel</title>
// style 지정
<style>
div > p {
display: inline-block;
margin-left: 10px;
}
</style>
</head>
<body>
// /name-tel.do 는 name-tel.jsp 파일을 시행한다는 뜻
// method = post, get, put, delete
<form action="/name-tel.do" method="post">
<input type="text" name="name">
<input type="text" name="tel">
<input type="submit" value="전송">
</form>
</body>
</html>
6. java 폴더 - NameTelController.java 생성
- (주의) get, post, request 방법을 사용할 때 다른 것들은 주석처리 해야한다.
@Controller
public class NameTelController {
private NameTelService nameTelService;
@Autowired
public NameTelController(NameTelService nameTelService) {
this.nameTelService = nameTelService;
}
// 요청 방식(get, post)에 따라 다른 메소드를 실행시킬 수 있도록 지정할 수 있다.
// 요청 url 매핑: @RequestMapping, @GetMapping, @PostMapping에 지정된 url로 요청이 발생할 경우
// 매핑되어 있는 메소드를 실행시킨다.
@RequestMapping(value = "/name-tel.do", method = RequestMethod.GET) /*==> @GetMapping("/name-tel.do")*/
public String nameTelView() {
System.out.println("get방식 동작");
return "name-tel";
}
@RequestMapping(value = "/name-tel.do", method = RequestMethod.POST) /*==> @PostMapping("/name-tel.do")*/
public String nameTelPost() {
System.out.println("post방식 동작");
return "name-tel";
}
// GET/POST 방식 모두 지원하는 url 매핑
@RequestMapping("/name-tel.do")
public String nameTelGetPost() {
System.out.println("GET/POST 방식 모두 동작");
return "name-tel";
}
- get 방식
* 주소창에 '쿼리스트링' 방식으로 접근
* 콘솔창에 get 방식 동작
- post 방식
* 주소창에 입력은 무조건 GET 방식으로 입력해야 한다.
이유: 일반적으로 POST 요청은 브라우저의 주소창을 통해 직접 입력할 수 없기 때문에.
POST 요청은 server 로 전송할 때 사용한다.
- request 방식
* 콘솔창 : GET/POST 방식 모두 동작
'백엔드 > Spring Framework' 카테고리의 다른 글
Web Application(3) / 자바에서 화면단으로 데이터 전송 (0) | 2024.07.15 |
---|---|
Web Application(2) / 화면에서 전송한 데이터 자바로 받기 (0) | 2024.07.15 |
IMPL 클래스에서 DAO 클래스를 이용하는 법 (0) | 2024.07.15 |
템플릿(3) / BOARD 파일 수정 (0) | 2024.07.15 |
템플릿(2) / MEMBER 파일 수정 (0) | 2024.07.15 |