Web(109)
-
Spring - EmbeddedDatabase(스프링 내장형DB)
Spring EmbeddedDatabase(스프링 내장형 DB란)스프링 임베디드 데이터베이스란 애플리케이션에 내장되서 애플리케이션과 함께 시작되고 종료되는 DB를 말한다. 데이터는 메모리 상에 저장되기 때문에 런타임에 IO로 인해 발생하는 부하가 적어서 성능이 뛰어나다. 동시에 Map과 같은 컬렉션이나 오브젝트를 이용해 메모리에 데이터를 저장해두는 방법에 비해 매우 효과적이고 안정적인 방법으로 등록,수정,검색이 가능하다. 최적화된 락킹, 격리수준, 트랜잭션 또한 적용 가능하다. 임베디드데이터베이스는 메모리로 읽어들인 데이터를 여러 가지 조건으로 검색하거나 통계를 내야하고 필요에 따라 데이터를 조작해가면서 복잡한 로직을 처리해야 하는 경우 컬렉션 혹은 자바빈 오브젝트 등에 담아서 사용하는 것보다 편리하게 ..
2018.06.16 -
Spring - Jsoup을 이용한 웹크롤링
Spring - Jsoup을 이용한 웹크롤링채팅을 개발하던 도중에 간단히 챗봇 기능을 만들어보면 어떨까 하는 생각에 오늘 날씨를 물어보면 오늘 날씨에 대한 정보를 답장으로 보내주는 채팅을 구현하기 위해 Jsoup을 이용한 웹크롤링을 진행해보았습니다. pom.xml 12345 org.jsoup jsoup 1.8.3cs 웹 크롤링 코드 12345String URL = "https://weather.naver.com/rgn/cityWetrMain.nhn";Document doc = Jsoup.connect(URL).get();Elements elem = doc.select(".tbl_weather tbody>tr:nth-child(1)");String[] str = elem.text().split(" ");E..
2018.05.07 -
Spring AOP를 이용한 XSS 공격 방지
Spring AOP를 이용한 Xss 공격 방지lucy-xss를 이용하여 간단하게 게시글이나 댓글에 XSS공격을 방지하는 기능을 구현하였습니다. 그런데 보통 홈페이지는 게시판과 댓글 기능이 하나만 들어가있는 경우는 드뭅니다. 그말은 즉, xss관련 코드가 2개 이상이 중복되어 구현됩니다. 그래서 spring AOP를 이용하여 XSS 관련 코드를 하나의 클래스 파일에 구현해 게시물,댓글 등의 코드에 중복되어 구현되지 않게 하였습니다. pom.xml 12345678910111213 com.navercorp.lucy lucy-xss 1.6.3 org.aspectj aspectjweaver 1.8.8cs lucy-xss-superset.xml 123456789101112131415161718192021222324..
2018.05.06 -
Spring(스프링) + WebSocket(웹소켓)을 이용한 실시간 채팅
스프링 + 웹소켓을 이용한 간단한 실시간 채팅 우선 웹소켓이란 간단히 이야기하면 서버와 양방향 통신이 가능한 통신 방법이다. 그럼으로써 실시간 채팅 등이 구현이 가능한 것이다. 여기서 그러면 "ajax로 구현하면 되잖아? ajax도 서버와 통신이 되는데?" 생각을 하게된다. 나도 처음에는 그렇게 생각했는데, 생각해보면 ajax는 클라이언트가 서버로 데이터를 요청을 한다. 하지만 서버가 클라이언트에게 요청할 수 있는 방법이 없다. 하지만 웹소켓은 가능하다라는 것 ! ajax로 채팅을 구현한다면 클라이언트가 보낸 메시지를 서버가 받아서 그 메시지를 모든 사람에게 전송한다? ajax는 예를 들어 10초에 한번씩 서버에서 메시지를 뿌려주는 기능을 구현해야 할것이다. 왜냐하면 서버가 클라이언트에게 요청을 할수 있..
2018.04.22 -
Spring(스프링) 어노테이션 DI방법
스프링에서 어노테이션을 이용한 DI 방법 1.@Autowired,@Resource,@Qualfier 어노테이션1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465package com.web.nuri; import static org.hamcrest.CoreMatchers.is;import static org.junit.Assert.assertThat; import javax.annotation.Resource; import org.springframework.test.context.ContextConfiguration;import org.sp..
2018.03.13 -
Spring(스프링) Transaction(트랜잭션) 범위설정
Spring Transaction(트랜잭션) 범위 설정하기 1.예외 상황(트랜잭션 범위설정이전)123456789101112131415161718192021public void insertUserTest() { UserDTO user1=new UserDTO(); UserDTO user2=new UserDTO(); UserDTO user3=new UserDTO(); user1.setId("test@test.com"); user1.setPw("1111"); user1.setNickName("tester"); user2.setId("test1@test.com"); user2.setPw("1111"); user2.setNickName("tester1"); user3.setId("test@test.com"); us..
2018.03.07