스프링 부트의 정석 : 이번에도 남궁성과 끝까지 간다
1. Chapter 1. 스프링부트 준비하기
스프링 부트의 장점
1. 자동설정
2. 의존성 관리
* 2022년 기준 스프링 6.0, 스프링부트 3.0 까지 나옴
* 스프링 툴(sts4 다운로드)
메이븐은 의존성관리, 자동빌드, 패키징을 관리 해준다. (그래들)
스프링부트 프로젝트 :(spring initilizer)
- 2.7.9 버전 : Spring Boot DevTools, Thymeleaf, Spring Web
* 메이븐 적용시키는법 - pom.xml (우클릭후 Maven - Reload Projects)
메이븐 카테고리에서 m버튼을 나오면
maven 명령어를 칠수 있는데 mvn package 를 치면
현재 프로젝트가 jar 파일이 된다.
* java -jar 해당.jar 로 해당 프로젝트를 실행시킬수 있다. (port 충돌로 변경시 --server.port=80)
원격프로그램의 작성과실행
클라이언트와 서버
원격프로 그램에 데이터 전달하기
HTTP요청과 응답
원격 프로그램으로 응답하기
@RequestMapping("/getYoil")
void main(HttpServletRequest request , HttpServletResponse response) throws IOException {
String year = request.getParameter("year");
String month = request.getParameter("month");
String day = request.getParameter("day");
int yyyy = Integer.parseInt(year);
int mm = Integer.parseInt(month);
int dd = Integer.parseInt(day);
// 2. 처리
Calendar cal = Calendar.getInstance();
cal.clear();
cal.set(yyyy, mm-1, dd);
int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
char yoil = "일월화수목금토".charAt(dayOfWeek-1);
response.setContentType("text/html");
response.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head>");
out.println("</head>");
out.println("<body>");
out.println(year + "년 " + month + "월" + day + "일은 ");
out.println(yoil + "요일입니다.");
out.println("</body>");
out.println("</html>");
out.close();
}
MVC로 관심사를 분리하기
단일 책임 원칙 : 관심사 1개만(관심사 여러개면 분리)
개방폐쇄원칙(OCP) : 상속open -> overiding , 변경에는 closed
리스코프치환원칙(LSP) : 다형성
인터페이스 분리원칙(ISP) : 유사한 interface , 목적이 다르면 분리
의존관계 역전 원칙(DIP) : 덜구체적 -> 추상화 의존한 코드 작성 , 구체적코드는 변경에 불리
@RequestParam과 @ModelAttribute
로그인화면 만들기
@RequestMapping과 URL인코딩
Thymeleaf로 레이아웃 적용하기
filter와 interceptor
forward 와 redirect
thymeleaf 사용하기
'4차산업혁명의 일꾼 > Java&Spring웹개발과 서버 컴퓨터' 카테고리의 다른 글
디자인패턴 - Command Pattern (0) | 2023.03.12 |
---|---|
디자인 패턴 with 자바 - 낭비를 없애기(Flyweight, Proxy) (0) | 2023.03.09 |
구조안을 돌아다니며 처리하는 패턴(Iterator, Vsitor, Chain of responsibility) (0) | 2023.03.06 |
복잡한 연결을 단순하고 간단하게 처리하는 패턴(Facade, Mediator) (0) | 2023.03.06 |
(State, Observer, Memento:상태저장)상태를 클래스로 표현하여 관리하는 패턴 (0) | 2023.03.05 |