Spring
-
JWT 토큰을 이용해서 로그인 인증 구현하기Spring 2021. 9. 5. 18:27
회원의 로그인정보를 통한 authentication을 구현해보자. Authentication 로그인 인증 구현 방식에는 session cookie 방식과 jwt 토큰 방식이 존재한다. session cookie 방식은 사용자에 따라서 고유의 session ID가 발급되며 유의미한 정보를 담고 있지 않기 때문에 쿠키방식보다는 안전하지만, 세션저장소에 모두 담아두기 때문에 다수의 요청이 발생시 부하가 발생할 수 있다. JWT 세션쿠키와 하게 인증에 필요한 정보들을 암호화한 토큰을 사용하는 방식으로, 비밀키가 유출되지 않는 이상 토큰을 복호화 하지 못하므로 보안이 유리하다. access token의 기한은 유효하지만, access token이 만료되기전에 사용자가 로그인하면 refresh token을 이용해서..
-
WebSocket 사용해서 react와 함께 채팅구현하기 (Stomp사용하기)Spring 2021. 9. 5. 17:30
nodejs에서 socketio를 이용해서 클라이언트와 서버의 채팅을 구현한다면, spring에는 stompjs가 존재한다. STOMP stomp는 websocket와 같이 양방향(클라이언트-서버)네트워크 프로토콜로 HTTP에서 모델링되는 프레임기반의 프로토콜이다. spring에서 stomp를 사용한다면, spring websocket 어플리케이션은 Stomp Broker로 작동하게 된다. websocket에서는 text나 binary데이터를 전송하면서 추가적인 정보(예를들면, 어디로 route하고 어떻게 처리할지)의 부재로 추가코드작성이 불가피해진다. 이를 해결하기위한 서브프로토콜이 stomp이다. stomp덕분에 CONNECT, SUBSCRIBE, UNSUBSCRIBE, ACK, SEND와 같은 웹소..
-
@Many to Many 혹은 연관관계에서 stackOverFlow 에러 발생시Spring 2021. 8. 17. 11:19
연관관계 매핑시에 lombok의 데이터 사용시 내부적으로 toString을 불러내면서 연관관계의 객체를 연속해서 불러내게 된다. 이때 stackOverFlow 에러가 발생하게 되므로 롬복의 Data-> @Getter, @Setter로 변경해준다. (참고) https://stackoverflow.com/questions/17445657/hibernate-onetomany-java-lang-stackoverflowerror Hibernate OneToMany java.lang.StackOverflowError It's my first question here on stack, so please be gentle :D I'm trying to create hibernate OneToMany relationsh..
-
Social Media 만들기 - 19) socket io 사용하기 ( App.js 문제 해결!)Spring 2021. 8. 2. 22:48
이번엔 socket io를 사용해서 알림을 가도록 설정해보자. 먼저 server에 socket 사용을 위한 세팅을한다. 서버쪽에 npm i socket.io, 클라이언트 쪽에 npm i socket.io-client해준다. const SocketServer = require('./SocketServer') //Socket const http = require('http').createServer(app) const io = require('socket.io')(http) io.on('connection', socket=>{ console.log(socket.id + ' Connected') SocketServer(socket) }) const port = process.env.port || 5000 ht..
-
Database App with JDBC : 학생 정보를 업데이트하고 삭제하는 기능 만들기 (Update, Delete)Spring 2021. 6. 19. 17:45
update먼저 해보자. 먼저 업데이트 링크를 만들어준다. 여기서는 먼저 로드해서 데이터를 업데이트폼화면에 보여주도록 LOAD 커멘드라우트를 만들어 줄 것이다. FooBar University First Name Last Name Email Action ${tempStudent.firstName} ${tempStudent.lastName} ${tempStudent.email} Update 여기서 Update의 링크를 복사해서 보면, 다음과 같이 보인다. http://localhost:8080/web-student-tracker/StudentControllerServlet?command=LOAD&studentId=5 command와 studentId가 확인 되는 것을 볼 수 있다. 이제 command와 학..
-
Database App with JDBC : 학생을 추가하는 기능 만들기 (Create)Spring 2021. 6. 19. 16:31
이번엔 학생을 학생리스트에 추가해서 저장하는 기능을 만든다. 먼저 Add new 버튼을 만들어주자. add-student-form.jsp을 만들어주자. FooBar University Add Student First name : Last name : Email : Back to List 이제 컨트롤러에 add가 작동하도록 설정하자. route에 따라서 작동을 다르게 하도록 switch구문을 사용했고, addStudent함수를 구현해줬다. studentDbUtil에 addStudent라는 함수를 만들고 구현할 것이다. package com.yunhalee.web.jdbc; import java.io.IOException; import java.util.List; import javax.annotation...
-
Database App with JDBC : 학생 리스트 DB에서 가져오기 (Read)Spring 2021. 6. 18. 22:33
먼저 mysql workbench에서 sql script(다운받은 파일중에) 차례대로 2개를 실행시켜준다. 이후에 다운받은 폴터의 lib안에서의 mysql-connector-java-8.0.19jar파일을 우리가 만든 web-student-tracker 다이나믹 프로젝트안의 lib 폴더로 복사해준다. 추가로 META-INF 폴더안의 context.xml파일도 같은 위치로 복사해준다. 이제 com.yunhalee.web.jdbc 패키지를 만들고 그안에 TestServlet을 만드는데, 다음과 같이 조건을 변경해서 생성해준다. package com.yunhalee.web.jdbc; import java.io.IOException; import javax.annotation.Resource; import ja..
-
MVC : MVC의 기본작용방법Spring 2021. 6. 18. 22:29
먼저 tagdemo에서 사용했던 jstl을 사용하기 위해서 lib안의 내용을 복사해서 servletdemo에 붙여주자. 그다음 controller servlet을 만들자. doget 을 다음과 같이 오버라이딩 해준다. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //Step 0: Add data String[] students = {"Susan", "Anil", "Trupti"}; request.setAttribute("student_list", students); //Step 1: get request dispatcher RequestDi..