본문 바로가기
학원수업/3월

03/15 국비학원 개발자 과정 74회차- Spring Boot, JQuery, React

by 코딩마스터^^ 2023. 3. 15.

아래로 내려가는것 캡처링

위로 올라가는것 버블링

 

흐름

App.jsx->index.js->index.html

 

 

//css를 js문법을 사용하여 컴포넌트로 만들어 주는 라이브러리

리액트에 디자인 넣을때 style components를 사용하였다. import해서 사용해야한다.

 

컴포넌트(Component)란, 

소프트웨어 공학에서 구성 가능한 부품이나 요소를 말합니다. 즉, 모듈화된 소프트웨어 부분으로서, 여러 개의 컴포넌트를 조합하여 큰 소프트웨어 시스템을 만들어낼 수 있습니다.

컴포넌트는 보통 재사용성이 높은 기능적인 요소로, 독립적으로 개발되어 다른 시스템에서도 사용될 수 있습니다. 컴포넌트는 특정한 인터페이스를 가지며, 이를 통해 다른 컴포넌트나 시스템과 상호작용합니다.

 

쿠키와 세션

 

클라이언트사이드와 서버사이드 중 동기화가 되는것은? 서버쪽

클라이언트-정적

서버-동적

 

클라이언트와 서버의 물리적거리를 유지하고싶다

 

유지?

SCOPE

Request

Session

Page

Application

 

클라이언트보다 서버쪽이 항상 바쁘다.

 

서버속의 정보를 유지하는 방법은?

1.세션

2.쿠키

-클라이언트의 text를 이용한다.(문자열)

-쿠키는 text로 처리하기때문에 주소를 담을 수 없다.

 

 브라우저안에도 세션값이 있다. 브라우저가 열릴때마다 세션아이디가 있다.

세션아이디가 쿠키에 저장이 된다.

세션아이디가 같으면 사람을 식별할 수 있다.

-"땡땡님 반갑습니다...^^"

 

요청이 서버에 전달이 되면 서버에서 뭔가 한다. 그걸 서블렛이 한다. 응답은 JSP가 한다.

jsp를 쓰면 주소가 바뀐다.

forward는 안바뀐다. 응답을 하면 주소 그제서야  바뀐다.

redirect는 주소 바뀐다.

 

Spring Boot에서 자주 사용되는 어노테이션

@SpringBootApplication: 

Spring Boot 어플리케이션을 실행할 때, main 메소드에 이 어노테이션이 포함된 클래스를 지정합니다. 이 어노테이션은 @Configuration, @EnableAutoConfiguration, @ComponentScan 어노테이션을 한 번에 사용하는 편리한 대체 수단입니다.


@RestController: REST API를 제공하는 컨트롤러 클래스를 나타냅니다. @Controller와 @ResponseBody 어노테이션을 합쳐놓은 것입니다.

 

@RequestMapping: HTTP 요청과 메소드를 매핑하는 어노테이션입니다. 주로 컨트롤러 클래스나 메소드 위에 사용됩니다.

 

@Autowired: 스프링 컨텍스트에서 빈(bean)으로 등록된 클래스를 자동으로 주입할 때 사용합니다.

 

@Service: 비즈니스 로직을 처리하는 서비스 클래스임을 나타냅니다. 주로 서비스 클래스 위에 사용됩니다.

 

@Repository: 데이터베이스와 연동하여 데이터를 처리하는 DAO(Data Access Object) 클래스임을 나타냅니다. 주로 DAO 클래스 위에 사용됩니다.

 

@Component: 스프링에서 컴포넌트 스캔(Component Scan)을 통해 빈으로 등록될 수 있는 클래스임을 나타냅니다. 주로 비즈니스 로직이나 데이터베이스와 연동하지 않는 클래스 위에 사용됩니다.

 

@Transactional: 트랜잭션을 처리하는 어노테이션입니다. 주로 서비스 클래스나 DAO 클래스 위에 사용됩니다.

 

 

 

 

어노테이션-자바코드에 등록한다. 클래스 이름 앞에온다.

@Controller

 

결합도를 낮춰야...재사용성

상속은 결합도가 높다. 재사용성 베스트 아니다.

 

@RequestMapping은

클래스와 메소드위에 둘다 올 수 있다. 

 

Restful API

 

Service->Model->Logic->Dao

 

로직클래스에는 걸러줘야한다.

그래서 if문이 있어야. 혹은while문

로직클래스에는 업무의 프로세스가 들어있다.

순서가 있다. 알고리즘을 생각해야 한다.

 

@Autowired

setterr객체 주입법

getter

 

자바와 xml은 이종간이다.

생성자로 객체를 주입 해주어야한다.

 

오토와이어드는 필요할때 객체를 주입 해 준다.

 

어노테이션을 사용하면 임플리먼츠를 안해도된다.

implements

POJO에서는 implements를 사용해서 객체넣음.

인터페이스는 무조건 메소드 구현을 다 해야한다.

하나라도 구현을 안하면 안된다.

기능이 100000개인데 다 구현? 말도안되는 일...

@어노테이션을 그래서 쓴다. 원하는것만 쓴다.

 

쿠키는 클라이언트가 접속(URL요청)을 하면 서버쪽에서 생성해서 해당 클라이언트에게 보냄

클라이언크가 접속을 하면 저장을 하는 방식이다.

저장하는 곳은 서버가 아닌 클라이언트 쪽이다.

 

도메인 마다 저장되는 쿠키값이 다를 수 있다.

도메인에 따라 쿠키값을 따로 지원한다.

도메인 안에 폴더명과 페이지명이 있다.(upmu[0])

 

 

 

쿠키 만들고 지워보기

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>쿠키</title>
</head>
<body>
<%
//아래 코드는 서버가 바라보는 물리적인 위치에 들어있다.
//서버츳에서 실행됨->html->다운로드(SSR-서버사이드렌더링)->동적처리(실시간)->서버사이드의 장애
 	Cookie c1=new Cookie("notebook", "맥북");
	c1.setMaxAge(60);
	Cookie c2=new Cookie("hp", "아이폰");
	c2.setMaxAge(60*2);
	//아래를 생략하면 현재 페이지가 바라보는 물리적인 위치를 갖는다.
	//여기서는 쿠키임
	//c2.setPath("/");
	Cookie c3=new Cookie("coffee", "아메리카노");
	c3.setMaxAge(60*3);
	response.addCookie(c1);
	response.addCookie(c2);
	response.addCookie(c3); 
%>
</body>
</html>

 

<%@ 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>
<%
	Cookie cs[]=request.getCookies();
int size=0;
size=cs.length;
for(int i=0;i<size;i++){
	out.print(cs[i].getName()+","+cs[i].getValue());
}
%>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>쿠키 삭제하기</title>
</head>
<body>
<%
	Cookie cookie=new Cookie("notebook","");
	cookie.setMaxAge(0);
	response.addCookie(cookie);
%>
</body>
</html>

어제에 이어 오늘도 

(Model model)

controller->logic->dao

 

Spring Boot에서 ModelAndView 객체는 

뷰(View)와 모델(Model)을 함께 처리할 때 사용됩니다. 

ModelAndView 객체는 컨트롤러에서 처리한 결과 데이터를 뷰에 전달하고, 뷰에서 화면에 출력할 데이터를 모델에 담아 컨트롤러로 전달합니다.

 

ModelAndView 객체를 생성하지 않고 메소드 인자로 Model 객체를 전달하여 모델에 데이터를 추가할 수도 있습니다. 이 경우, 뷰 이름은 컨트롤러 메소드의 반환값으로 설정됩니다.

 

Spring Boot에서는 ModelAndView 이외에도 다양한 Model 관련 파라미터가 제공됩니다.

Model
Model은 컨트롤러에서 처리한 데이터를 뷰에 전달하는 인터페이스입니다. ModelAndView와 마찬가지로 데이터를 모델에 추가할 수 있으며, 뷰 이름은 컨트롤러 메소드의 반환값으로 설정됩니다.
java
Copy code
@GetMapping("/")
public String home(Model model) {
    model.addAttribute("data", "Hello, World!");
    return "myView";
}
ModelMap
ModelMap은 Model 인터페이스의 구현체로, 데이터를 추가하는 방법은 Model과 동일합니다. ModelMap은 Map 인터페이스를 상속받아 Map 형태로 데이터를 저장하고, 컨트롤러에서 처리한 데이터를 뷰에 전달하는 기능을 수행합니다.
java
Copy code
@GetMapping("/")
public String home(ModelMap model) {
    model.addAttribute("data", "Hello, World!");
    return "myView";
}
Map
Map은 ModelMap과 같이 데이터를 Map 형태로 저장하여 컨트롤러에서 처리한 데이터를 뷰에 전달하는 기능을 수행합니다. ModelMap과 달리, Map은 데이터를 저장하고 전달하는 기능만 수행하며, 뷰 이름은 컨트롤러 메소드의 반환값으로 설정됩니다.
java
Copy code
@GetMapping("/")
public String home(Map<String, Object> model) {
    model.put("data", "Hello, World!");
    return "myView";
}

 

댓글