inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

han글님의 게시글

han글 han글

@nus05035056

수강평 작성수
-
평균평점
-

게시글 5

질문&답변

session을 model에 등록하지 않아도 되는 이유

하지 않아도 된다는 것보단 서로 model.addAttribute와 session.setAttribute의 차이점이 존재합니다. model.addAttribute는 요청당이고 session.setAttribute는 세션당이라는 점입니다. Model 어느 한 요청으로 model에 값을 할당하고 응답으로 view를 보내면 그 view에만 해당 model값을 렌더링 할 수 있습니다. 그 후 요청을 처리한 후 모델이 삭제되고 다음 요청의 대한 새로운 모델이 생성됩니다. Session 로그인 같은 경우를 예시로 들 수 있는데 로그인이 된 아이디 같은 경우는 후속 요청이 들어와서 웹페이지상에 그대로 로그인정보가 있어야 되기 때문에 session을 사용하는 겁니다. 만약 로그인을 하는 페이지에서 클라이언트가 로그인 요청을 했을 때 관련정보를 model에 담았을 경우 일회성으로 어느 한 view에서만 그 정보들이 보여지겠죠. 혹시나 하는 생각에 간략한 코드로 보여드리겠습니다. @GetMapping("/test") public String login() { return "/test"; } @PostMapping("/login") public String postLogin(HttpSession session, @RequestParam String id, Model model) { //Session에 담긴 값 session.setAttribute("id", id); //Model에 담긴 값 model.addAttribute("id", id); return "/login"; } @GetMapping("/login2") public String postLogin() { return "/login2"; } test.html ID PWD 로그인 login.html Session에 담긴 값 확인 [[${session.id}]]님 안녕하세요 Model에 담긴 값 확인 [[${id}]]님 안녕하세요 login2.html Session에 담긴 값 재확인 [[${session.id}]]님 안녕하세요 Model에 담긴 값 재확인 [[${id}]]님 안녕하세요

좋아요수
1
댓글수
1
조회수
2086

질문&답변

thymeleaf 적용이 안됩니다.

직접 다운 받아 확인해봤는데 item도메인객체를 model에 담으실 때 키 값을 item으로 하셨는데 items.html의 코드에서 model키 값을 ${items} 으로 하셨네요 item으로 바꾸시면 됩니다. 기존코드 수정된 코드

좋아요수
0
댓글수
2
조회수
2843

질문&답변

수업자료 제목이 자꾸 깨지는데요(window)

지금 보이는 화면의 위 상단 카테고리 중 보기 를 선택하신 후 언어변환 을 누신 후 한국어 혹은 유니코드로 변환해 보세요. 링크 하나 남겨두겠습니다. https://www.urbanbrush.net/%ED%95%9C%EA%B8%80%EA%B9%A8%EC%A7%80%EB%8A%94%ED%98%84%EC%83%81/

좋아요수
0
댓글수
2
조회수
491

질문&답변

HTTP 응답 데이터 - json

강의처럼 response.getWriter().write(result); 이렇게 출력을 하셨다면 response.setCharacterEncoding("utf-8"); 혹은 //response.setCharacterEncoding("utf-8"); 에 따라 인코딩이 적용될 수도 안 될 수도 있습니다. 만약 인코딩형식을 안 적으셨다면 크롬 브라우저 기준으로 Content-type이 application/json;charset=ISO-8859-1 인코딩형식을 안 적고 utf-8 형식으로 하고 싶다면 김영한님이 말씀하신 대로 getWriter() 대신 getOutputStream 메소드를 이용 하시면 됩니다. private ObjectMapper objectMapper = new ObjectMapper(); @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("application/json"); //response.setCharacterEncoding("utf-8"); HelloData helloData = new HelloData(); helloData.setUsername("김"); helloData.setAge(20); String result = objectMapper.writeValueAsString(helloData); OutputStream os = response.getOutputStream(); PrintStream out = new PrintStream(os, true); out.println(result); 이렇게 해보시면 인코딩형식 안 적어도 적용이 될 겁니다.

좋아요수
3
댓글수
1
조회수
890

질문&답변

gradle.build 오류..

2번째 라인에 version을 2.7.7 로 바꿔보시면 bulid 새로고침 해보세요 최신버전으로 하면 똑같이 bulid error 나더라구요

좋아요수
0
댓글수
2
조회수
3817