메신저 기능을 위한 프런트엔드 및 벡엔드 개발
스프링 프레임워크(Spring Framework)와 NoSQL인 MongoDB를 사용한 MVC 방식으로 벡엔드를 구성하고 MQTT와 CSS3, JQuery 등을 이용한 사용자 인터페이스 구성을 통해 프런트엔드 개발도 배운다.
① 스프링 프레임워크(Spring Framework)
- 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크로서 스프링이라고도 불린다.
- 동적인 웹사이트를 개발하기 위한 여러 가지 서비스를 제공하고 있다.
- 대한민국 공공기관의 웹 서비스 개발 시 사용을 권장하고 있는 전자정부 표준 프레임워크의
기반기술이다.
② MongoDB
- NoSQL DBMS의 한 종류이다.
- MongoDB는 NoSQL로 분류되는 크로스 플랫폼 도큐먼트 지향 데이터베이스 시스템이다.
- MySQL처럼 전통적인 테이블-관계 기반 RDBMS가 아니며 SQL을 사용하지 않는다.
- RDBMS와 같은 높은 레벨의 트랜잭션이 제공되지 않기 때문에 데이터의 읽기 쓰기도 빠르다.
③ MQTT
- MQTT는 Message Queue Telemetry Transport 의 약자이며, 최근 IOT에서 자주 사용하는 통신 프로토콜이다.
- 지금까지의 HTTP, UPnP, CoAP 등의 프로토콜을 사용할시 방화벽 때문에 포트를 여는 작업이
필요하였지만 MQTT를 메시지전송의 중개자(Broker)로 사용함으로써 위와 같은 작업을 하지
않아도 된다.
- 게시자 (Publisher) 중개자에 연결하여 콘텐츠 게시
- 구독자 (Subscriber) 중개자에 연결하여 콘텐츠를 구독
- 중개자 (Broker) 콘텐츠를 구독자에게 전달

1 2 3 4 5 6 7 8 9 10 11 12 13 | <!-- https://mvnrepository.com/artifact/org.eclipse.paho/org.eclipse.paho.client.mqttv3 --> <dependency> <groupId>org.eclipse.paho</groupId> <artifactId>org.eclipse.paho.client.mqttv3</artifactId> <version>1.2.0</version> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework.data/spring-data-mongodb --> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-mongodb</artifactId> <version>1.10.7.RELEASE</version> </dependency> | cs |


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | public boolean userLogin(UserDto user) { String login_id = user.getId(); String login_password = user.getPassword(); BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); Query query = new Query(); query.addCriteria(Criteria.where("_id").is(login_id)); List<UserDto> get_pass = mongoTemplate.find(query, UserDto.class); String temp_get_pass = get_pass.get(0).getPassword(); boolean login_result = passwordEncoder.matches(login_password, temp_get_pass); return login_result; } | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | public boolean userLogin(UserDto user) { String login_id = user.getId(); String login_password = user.getPassword(); BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); Query query = new Query(); query.addCriteria(Criteria.where("_id").is(login_id)); List<UserDto> get_pass = mongoTemplate.find(query, UserDto.class); String temp_get_pass = get_pass.get(0).getPassword(); boolean login_result = passwordEncoder.matches(login_password, temp_get_pass); return login_result; } | cs |


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | @RequestMapping(value = "/addfriend", method = RequestMethod.GET) public ModelAndView addFriend(HttpSession session, ModelAndView model, WebRequest request) { ModelAndView mv = new ModelAndView(); FriendDto new_friend = new FriendDto(); new_friend.setFriendid(request.getParameter("friend_id")); new_friend.setUserid(session.getAttribute("login").toString()); boolean checkFriend = userDao.checkId(request.getParameter("friend_id")); boolean haveFriend = friendDao.checkFriend(new_friend); if (!haveFriend) { mv.addObject("message", "이미 친구등록 되어있습니다."); } else if (!checkFriend) { friendDao.addFriend(new_friend); mv.addObject("message", "친구등록에 성공했습니다."); } else if (checkFriend) { mv.addObject("message", "존재하지 않는 아이디입니다."); } mv.setViewName("main"); List<FriendDto> friendList = new ArrayList<FriendDto>(); friendList = friendDao.showFriend(session.getAttribute("login").toString()); mv.addObject("list", friendList); return mv; } | cs |



덧글