본문 바로가기

Programming/Java & JSP & Spring

(76)
[Java] Jsoup 사용법 파이썬에는 BeautifulSoup이 있고, C#에는 HtmlAgilityPack이 있다면 Java에는 HTML을 파싱하기 위해 사용되는 라이브러리 Jsoup이 존재한다. 사용방법은 해당 홈페이지 http://jsoup.org/download 에서 다운을 받거나메이븐등을 이용해 라이브러리를 추가해주면 된다.org.jsoupjsoup1.10.2 자바 프로젝트에 라이브러리를 추가했다면 Jsoup을 Import한다.기본적인 사용법은 다음과 같다.import org.jsoup.Jsoup;import org.jsoup.nodes.Document;import org.jsoup.select.Elements; try {//웹에서 내용을 가져온다.Document doc = Jsoup.connect("http://jobc..
[Spring] HttpSession과 인터셉터 웹에서 로그인의 가장 기본적인 방식은 HttpSession 객체를 이용해서 사용자의 정보를 보관하고필요한 경우 사용하거나 수정하는 방식이다. HttpSession의 동작은 실제로는 세션 쿠키(Session Cookie)를 통해서 이뤄지는데,서버는 필요한 경우 접속한 브라우저에게 세션 쿠키를 전달하고,브라우저에서 서버를 호출할 때마다 세션 쿠키를 같이 가지고 다니기 때문에,이를 마치 열쇠처럼 사용해서 필요한 데이터를 보관한다. 세션 쿠키가 열쇠라면 HttpSession은 열쇠가 필요한 상자로 볼 수 있다.이 상자들이 모여있는 공간을 세션 저장소(Session Repository)라고 한다.너무나 많은 세션이 존재하면 서버의 성능에 영향을 미치기 때문에,서버에는 일정시간 이상 사용되지 않는 상자들을 정리하는..
[Spring] HiddenMethod의 활용 REST방식을 사용하기 위해 GET, POST, PUT, PATCH, DELETE 방식등을 이용한다.하지만 브라우저에 따라서 PUT, PATCH, DELETE 방식을 지원하지 않는 경우가 발생할 수 있다. 많은 브라우저가 GET, POST 방식만을 지원하기 때문에 REST 방식을 제대로사용하려면 이러한 상황에 대해서 고려해야한다. 이러한 해결책으로는 브라우저에서 POST방식으로 전송하고, 추가적인 정보를 이용해서PUT, PATCH, DELETE와 같은 정보를 같이 전송하는 것이다.이를 'Overloaded POST'라고 한다. 예를 들어 Ajax를 이용해서 전송하는 경우에는 'X-HTTP-Method-Override' 정보를 이용하는데코드는 아래와 같이 작성한다.$.ajax({type:'delete',u..
[Spring] @RequestParam 파라미터 매핑 컨트롤러를 구현할 때 가장 많이 사용되는 어노테이션은 바로 @RequestParam 일 것이다. @RequestParam은 HTTP 요청 파라미터를 컨트롤러 메소드의 파라미터로 전달받을 때 사용된다.즉, JSP에서 request.getParameter(); 와 비슷하다고 볼 수 있다. @RequestParam 어노테이션이 적용된 파라미터는 기본적으로 필수 파라미터이다.따라서 @RequestParam 어노테이션에 명시한 HTTP 요청 파라미터가 존재하지 않을 경우스프링 MVC는 잘못된 요청을 의미하는 400 응답 코드를 웹 브라우저에 전송한다. 필수가 아닌 파라미터인 경우 required 속성 값을 주어 false로 지정해주면 된다.required 속성 값을 따로 작성안할 경우 기본 값은 true로 지정되..
[Spring] VO와 DTO VO(Value Object)와 DTO(Data Transfer Object) 일반적으로 컨트롤러에 전달되는 데이터를 수집하는 용도로 VO를 사용하는 경우도 있고,DTO를 사용하는 경우도 있다. DTO와 VO의 용도는 데이터의 수집과 전달에 사용할 수 있다는 공통점이 있다.양쪽 모두 파라미터나 리턴 타입으로 사용하는 것이 가능하다. 다만 VO의 경우 데이터베이스와의 거리가 가깝다.즉, VO는 테이블의 구조를 이용해서 작성되는 경우가 많다. 반면에 DTO의 경우는 보다 화면과 가깝다.화면에서 전달되는 데이터를 수집하는 용도로 사용하는 경우가 많다. ※ 출처 : 코드로 배우는 스프링 웹프로젝트
[Spring] 트랜잭션 처리 스프링을 사용하는 프로젝트 내에서는 특별한 경우가 아니라면 데이터베이스의 트랜잭션은 AOP의 설정을응용해서 처리한다. 약간의 설정과 애노테이션만을 이용하면 트랜잭션의 문제가 간단하게 해결된다. 트랜잭션이란?트랜잭션은 쉽게 말해 하나의 업무에 여러 개의 작은 업무들이 같이 묶여 있는 것을 의미한다. 가장 흔한 예로 계좌이체를 들 수 있다.만약 내가 상대방에게 이체를 할때, 먼저 내 통장에서 돈이 빠져나가고 상대방 통장에 돈이 들어감으로써하나의 온전한 프로세스가 완료되게 된다.이렇게 두 개 이상의 작은 업무로 구성된 것을 트랜잭션이라고 한다. 데이터베이스의 정규화와 트랜잭션은 서로 연관이 있는 경우가 많다. 데이터베이스의 정규화가 잘 돼 있을수록,관련을 맺는 데이터는 줄어든다. 반면에 성능상의 이유나 구현상..
[Spring] AOP, Filter, Interceptor의 차이 스프링에서 사용되는 AOP, Filter, Interceptor 세 가지 기능은 모두 무슨 행동을 하기전에 먼저 실행하거나,실행한 후에 추가적인 행동을 할 때 사용되는 기능들이다. 기능적으로는 비슷하지만 내부 구현적으로는 큰 차이가 있다. 우선 Interceptor와 Filter는 Servlet 단위에서 실행된다. 반면 AOP는 메소드 앞에 Proxy패턴의 형태로 실행된다.그래서 실행순서에서도 차이가 나는데, Filter가 가장 겉에 있고 그안에 Interceptor, 그안에 AOP가 있는 형태이다. 따라서 요청이 들어오면 Filter → Interceptor → AOP → Interceptor → Filter 순으로 거치게 된다. 실행되는 메소드를 기준으로 설명하면서버를 실행시켜 서블릿이 올라오는 동안..
[Spring] AOP 란? 스프링의 여러 특징 중 중요한 특징을 뽑자면 IoC, DI 그리고 AOP라고 볼 수 있다. AOP는 'Aspect Oriented Programming'의 약어로 기능을 핵심 비지니스 로직과 공통 모듈을 분리함으로써개발자가 좀 더 비지니스 로직에만 집중해서 처리할 수 있는 방법을 제공한다.이 말은 즉, 공통 모듈(로깅이나 보안인증 등)을 별도로 작성한 후 코드밖에서 비지니스 로직 사이에 삽입하는 것이AOP 기능을 사용해 개발한 것이라고 볼 수 있다. AOP와 비슷한 단어로 Java의 OOP(Object Oriented Programming)이라는 것이 있다.OOP 즉, 객체지향 프로그래밍이라는 단어와 AOP는 앞만 다르다는 것을 알 수 있다.AOP는 OOP를 대신하는 새로운 개념이 아니라, OOP를 더욱..