분류 전체보기

게시글 작성에서 기존의 방식은 사용자가 글 제목, 작성자, 글 내용을 직접 입력해야했습니다. 그러나 로그인한 사용자의 이름을 게시글 작성자로 설정해두고 싶습니다. 이 처리를 위해서는 세션이 필요하다고 생각했고 관련 자료들을 찾게 되었습니다. HttpSession 활용하기 https://pro-pennek.tistory.com/entry/Spring-%EC%BB%A8%ED%8A%B8%EB%A1%A4%EB%9F%AC%EC%97%90%EC%84%9C-%EC%84%9C%EB%B9%84%EC%8A%A4%EB%A1%9C-Session%EA%B0%92-%EB%84%98%EA%B8%B0%EA%B8%B0 [Spring] 컨트롤러에서 서비스로 Session값 넘기기 어으 죽을 맛이다.ㅋㅋㅋㅋ 이것때문에 개고생함. 컨트롤러..
게시글 작성 기능에 이어서 글을 읽을 수 있는 기능을 넣어줍시다. 일단 게시글 목록 조회도 필요할 테고 그중에서 마음에 드는 글의 내용을 볼 수 있도록 해볼게요. BoardController @GetMapping("/board/list") public String list(Model model){ model.addAttribute("postList",boardService.findAllDesc()); return "board/list.html"; } @GetMapping("/board/post/{id}") public String findById (@PathVariable Long id,Model model){ BoardDto boardDto = boardService.findById(id); model..
2021.03.28 - [web/spring&spring boot] - [스프링부트] 게시판 - 게시글 등록 구현하기(1) [스프링부트] 게시판 - 게시글 등록 구현하기(1) 사용자가 메인 페이지에서 글쓰기 버튼을 누르면 글 작성 페이지로 넘어가고 작성한 내용을 mysql 데이터베이스에 저장해봅시다. mysql 및 기본 프로젝트 설정은 이미 준비되어있다는 가정하에 진 coding-nyan.tistory.com 지난 시간에는 Entity만 구현하고 끝내버렸군요. board domain @Getter @Entity @NoArgsConstructor(access = AccessLevel.PROTECTED) @EntityListeners(AuditingEntityListener.class) public clas..
· TechTalk
요즘 스프링 시큐리티를 적용한 뒤로 자꾸 CSRF 관련으로 문제가 생겼어요. 얘가 대체 뭐길래!! 저를 이렇게 고통스럽게 하는지 궁금해서 오늘은 CSRF 공격에 대해서 다뤄보겠습니다. CSRF란? Cross-site request forgery 줄여서 CSRF는 사이트 사이의 위조 요청이라는 뜻을 가지고 있습니다. 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위(수정, 삭제, 등록 등)를 웹사이트에 요청하게 하는 공격을 말합니다. 공격자는 웹사이트가 신뢰하고 있는 사용자의 권한을 이용해서 중요 행동을 실행합니다. 웹사이트 입장에서는 출처가 신뢰할 만한 곳이기 때문에 공격에 노출된다고 합니다. CSRF 동작 방식 일단 아래와 같은 전제사항이 충족해야 된다고 합니다. 1. 공격자가 유도해야 할 이유가..
· Java
들어가기 자료를 찾기 이전에 제가 알고 있던 예외처리는 그저 try-catch 정도였습니다. 다중 예외처리를 구현할때는 예외 계층에 대해서 주의해야하구요. 사실 저는 그냥 throws Exception 위주로 사용하고 있었습니다. 이번 기회에 모르는 부분이 있다면 보충해보고 잘못 알고 있는 부분은 정정해보겠습니다. 예외란? 예외가 무엇일까요? 에러의 경우에는 오동작 혹은 고장으로 인해서 프로그램이 종료되는 상황입니다. 이런 상황은 애초에 발생하지 않도록 주의해야합니다. 예외는 사용자의 잘못된 조작으로 인해서 발생할 수 있습니다. 원래라면 예외도 프로그램이 종료가 되지만 프로그래머가 예외처리를 통해서 정상적으로 작동하게끔 만들 수 있습니다. 에러와 예외의 차이점 한 줄 요약 -> 예외는 에러와 달리 핸들링..
오늘은 회원가입 후 home으로 돌아가고 다시 사용자가 로그인해야되는 과정을 자동 로그인 방식으로 바꿔보겠습니다. 여담이지만 저는 로그인 다음에 게시글 목록 창으로 리다이렉트 시키는 작업도 해줬답니다. 별건 아니지만 그걸 이제서야 하는 나란 아이.. 자동 로그인 구현 @PostMapping("/user/register") public String signup(UserDto userDto,HttpServletRequest request,HttpServletResponse response) throws ServletException { userService.saveUser(userDto,request,response); request.login(userDto.getUsername(),userDto.getPa..
5월 16일 오늘은 아이유님의 생일입니다. 축하 기념 공지를 띄워보도록 하겠습니다. 모달과 팝업의 차이 본문에 들어가기 앞서 모달과 팝업에 대해서 간략하게 언급하겠습니다. 둘이 비슷하게 메인 윈도우에 또 다른 윈도우를 띄우는 기능을 하고 있습니다. 그러나 팝업의 경우에는 완전 다른 윈도우라면 모달은 부모 자식간의 관계를 유지하고 있습니다. 또한 팝업 차단 기능으로 개발자의 의도와는 상관없이 사용자가 제어가 가능하지만 모달은 그게 아니라고 합니다. 그래서 요즘은 모달을 많이 쓰는 추세라고 합니다. 참고 https://bomango.tistory.com/57 모달창 VS 팝업창, 차이가 뭔데? "팝업창 말고 모달창으로 만들어줘~" "이번 모달창은 iframe으로 만들어~" 입사 초기에 모달=팝업 이라고 생각..
회원가입/로그인에 이어서 로그아웃 기능을 구현해봅시다. SecurityConfig 수정 @Override protected void configure(HttpSecurity http) throws Exception { //... .and() .logout() .logoutSuccessUrl("/") // 로그아웃 성공시 리다이렉트 주소 .invalidateHttpSession(true); // 로그아웃 이후 세션 전체 삭제 여부 } config 파일에 로그아웃 기능을 추가해줍시다. 스프링 시큐리티가 참 좋아요. 이렇게 직관적인 메서드들을 제공해주므로 그대로 써줍시다. 로그아웃 관련 메서드들 정리 logoutSuccessUrl("URL") redirect할 주소를 적어줍니다. html같은 페이지 단위 주소..
www.acmicpc.net/problem/2357 2357번: 최솟값과 최댓값 N(1 ≤ N ≤ 100,000)개의 정수들이 있을 때, a번째 정수부터 b번째 정수까지 중에서 제일 작은 정수, 또는 제일 큰 정수를 찾는 것은 어려운 일이 아니다. 하지만 이와 같은 a, b의 쌍이 M(1 ≤ M ≤ 100 www.acmicpc.net 이번에는 이 문제를 풀어볼게요. 세그먼트 트리를 이용해서 최솟값과 최댓값을 구하는 문제입니다. 이론파트에서 너무 누적합 얘기만 해서 찔렸거든요 헣헣 저번에 작성해뒀던 틀에서 조금의 수정으로 풀어보겠습니다. + 연산 대신에 min 연산과 max 연산으로 고치면 되겠네요. 그러면 짜잔~ import math import sys def input(): return sys.stdi..
세그먼트 트리에 대한 글은 이미 많습니다. 심지어 다들 구체적으로 설명해주고 계십니다. 그런데 세그먼트 트리를 단지 구간합 트리라고 알고 계시는 분들이 생각보다 많이 계신 이유로 오해를 정정하고자 포스팅해보겠습니다. 세그먼트 트리가 없다면? 세그먼트 트리(구간 트리)는 주어진 쿼리에 대해서 빠르게 응답하기 위한 자료구조입니다. 배열 A가 주어져있고 A의 start~end 구간까지의 합을 구하려고 합니다. for문으로 answer+=A[i]를 돌리면 되겠죠. 그런데 만약 이 구간내 값이 변동이 된다면 어떨까요?? 총 M번 반복한다고 가정했을때, 수정 연산(O(1))+ 합산 연산 = O(NM)의 시간복잡도가 발생합니다. 세그먼트 트리 도입 여기에 세그먼트 트리를 사용한다면 어떻게 변할까요?? 수정 연산 = ..
moongomi
'분류 전체보기' 카테고리의 글 목록 (5 Page)