게시글
질문&답변
2023.02.14
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
- 1.9K
질문&답변
2023.02.11
thymeleaf 적용이 안됩니다.
직접 다운 받아 확인해봤는데 item도메인객체를 model에 담으실 때 키 값을 item으로 하셨는데 items.html의 코드에서 model키 값을 ${items} 으로 하셨네요 item으로 바꾸시면 됩니다. 기존코드 수정된 코드
- 0
- 2
- 2.5K
질문&답변
2023.02.09
수업자료 제목이 자꾸 깨지는데요(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
- 395
질문&답변
2023.02.08
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
- 780
질문&답변
2023.01.16
gradle.build 오류..
2번째 라인에 version을 2.7.7 로 바꿔보시면 bulid새로고침 해보세요 최신버전으로 하면 똑같이bulid error 나더라구요
- 0
- 2
- 3.3K