1. Tomcat(톰캣)? 뭐하는 프로그램인가?
자바기반의 서블릿 웹 컨테이너. 웹서버다. JSP/Spring으로 웹사이트를 구축한다면 톰캣은 반드시 사용한다.
2. 서블릿? 서블릿이 뭐지?
Server + let(작은 프로그램) .
서버 쪽에서 실행되면서 클라이언트의 요청에 따라 동적으로 서비스를 제공하는 자바 class
3. xml?
4. ModelAndView 사용.
package com.earth.apple;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Calendar;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
/*
* 년, 월, 일 입력하면 해당 요일을 알려주는 프로그램을 작성하시오.
*
* 1) URL을 입력해서 호출을 하면 톰캣이 HttpServletRequest 객체를 만든다
* 2) 브라우저에서 요청한 정보를 HttpServletRequest 객체에 담아서 자동으로
* main()메서드의 매개변수로 넘겨줌
*/
@Controller //1. 원격 호출가능한 프로그램으로 등록
public class DayOfTheWeek4 {
@RequestMapping("/getdaymv") //2.url과 메서드를 연결
public ModelAndView main(int year, int month, int day, Model model) {
//1. 유효성 검사
// if(!isValid(year, month, day))
// return "DayOfweekError"; // /WEB-INF/views/dayOfweekError.jsp
//2. 요일 계산
char dayOfTheWeek = getDayOfWeek(year, month, day);
ModelAndView mv = new ModelAndView();
//3. Model에 작업 결과 저장
mv.addObject("year", year);
mv.addObject("month", month);
mv.addObject("day", day);
mv.addObject("dayOfTheWeek", dayOfTheWeek);
//4. 작업한 결과를 보여줄 뷰의 이름을 지정
mv.setViewName("dayOfWeek");
//5.ModelAndView를 반환
return mv;
}
private char getDayOfWeek(int year, int month, int day) {
Calendar cal = Calendar.getInstance();
cal.set(year, month-1, day); //날짜 setting
int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
/*
* " 일월화수목금토".chatAt(1) => 일
* " 일월화수목금토".chatAt(2) => 월
*
*/
char dayOfTheWeek = " 일월화수목금토".charAt(dayOfWeek);
return dayOfTheWeek;
}
private boolean isValid(int year, int month, int day) {
if (year == -1 || month == -1 || day == -1)
return false;
return (month >=1 && month <=12) && (day >=1 && day <=31);
}
}
5. javaEE : 스프링 라이브러리를 안 쓴다면 이걸 써도 무방하다.
6. 낯선 느낌은 내 몸이 저항하는 것이다.
7. 상속 개념이 많이 쓰인다. 다른 클래스에서 가져와서 쓰는 경우가 많네.
9. Server Runtime을 넣어줌.
10. 서블릿 요청
package com.earth.saturn;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//@WebServlet(urlPatterns = {"/hello"}, loadOnStartup = 1)
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("[HelloServlet] service() 호출");
}
@Override
public void destroy() {
// TODO Auto-generated method stub
super.destroy();
}
@Override
public void init() throws ServletException {
// TODO Auto-generated method stub
super.init();
}
}
11. 잘 모르겠으면 호출-반응정도만이라도 이해하자.
12. 왔다갔다 하니까 헷깔리고 이해가 안되는 부분이 많음. Spring 강의들어야겠다.
13. JSP는 Javaserverpage의 약자다. 서블릿과 JSP의 차이점?
서블릿 JSP
----------------------------------------------------------------------------------
자바 코드안에서 전체 html html 코드안에서 필요한 부분만
페이지를 생성 자바 코드를 스크립트 형태로 추가함
변수 선언 및 초기화는 반드시 내장 객체로 제공하여 즉시 사용할 수 있음
선행되어야함
컨트롤러(Contorller)를 만들 때 처리된 결과를 보여주는 뷰(View)를 만들 때 사용
사용함
14. webapp가 루트라고 하는데.... 루트 노드? 그것과 비슷한 건가?
15. let 릿이 붙으면 작은 단위가됨.
16. https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%9E%85%EB%AC%B8-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8 스프링 강의 하루에 하나씩 듣자. 인프런 무료강의.
17. 스프링 공부하는 느낌 : 거대하고 깊은 바다에 표류하는 돛단배가 되었다.