반응형

Spring-JSP 20

[Spring-JSP] Rest API 사용하기

@Controller와 @RestController 차이 한번 보고 넘어가자 차이점 HTTP Response Body가 생성되는 방식의 차이. @Controller는 View 기술을 사용 Client -> Request -> Dispatcher Servlet -> Handler Mapping -> Controller -> View -> Dispatcher Servlet -> Response -> Client @RestController는 객체를 반환할때 객체 데이터는 바로 JSON/XML 타입의 HTTP 응답을 직접 리턴 Client -> HTTP Request -> Dispatcher Servlet -> Handler Mapping -> RestController (자동 ResponseBody 추가)-..

[Spring-JSP] 엄청쉬운 Apache Poi Excel 양식다운로드 기능구현 / 테이블 참조

오늘은 excel 다운로드를 만들어보려고 한다. 본인은 양식을 만들어서 사용자들이 양식에 맞게 사용할 수 있도록 제공하려고했다. 그와중에 다른 시트에 있는 데이터를 참조해서 드롭다운메뉴로 사용할 수 있게 설정해 주고 싶었는데(사용자 편의성) 찾아봐도 잘나오지 않았다. 다음에도 사용할 수 있으니 기록해둬야지 1). TEST.JSP multipart/form-data로 form을 하나 만들어준다. => multipart 설명은 생략하겠다 ㅎ; 양식다운 2). TEST.Js 이래저래 하다가 그냥 form만들어서 Submit 날리는것으로 만들었다. function excelDownLoad(){ $("#deviceExcelUpload").submit(); } 3). TEST.Controller @RequestMa..

[Spring-JSP] 엄청쉬운Poi Excel 업로드 기능 구현

엑셀 업로드 기능을 만들어보려고 한다. 하나하나 만들어놓고 나중에 편하게 꺼내서 사용하자...! 여기저기 블로그 및 사수분께 감사하며...! Begin~ 1). 엑셀업로드 관련 라이브러리 POI 추가 org.apache.poi poi 3.16 org.apache.poi poi-ooxml 3.16 2). 엑셀 유틸 모듈 작성 한군데에 몰아놓고 꺼내쓰기 좋다. import java.awt.image.BufferedImage; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.net.MalformedURLException; im..

[Spring-JSP] Custom Annotation만드는 방법 정리

1). 왜 사용하나? 기존의 어노테이션들을 묶어서 지정하거나 값을 지정하고 재사용하게 만들어 코드의 양을 줄이고, 유지보수를 편하게 할 수 있다. AOP의 타겟으로 삼아 pointcut으로 지정하기 애매한 것들을 어노테이션으로 타겟팅 할 수도 있다. 다시한번 용어 설명 하고 Annotation 을 만들어보려고 한다. 공통 코드를 어드바이스(Advice)한다. 끼워넣을 곳을 조인포인터(Joinpoint) 라고 한다. 조인포인터 들을 모아둔것을 포인트컷(Pointcut)이라고 한다. 어드바이스를 조인포이트에 실제로 끼워넣는 작업을 위빙(Weaving) 이라고 한다. 스프링에만 있는 것으로 어드바이스와 포인트컷을 한데 묶어 다루는 어드바이저(Advisor)라고 한다. 2). Target과 Retention 2..

[Spring-JSP] 파일업로드 처리 / 파일(단,다중) + 추가정보 @ModelAttribute

파일업로드를 구현할때가 굉장히 많을 것이다. 하지만 여러가지 상황으로 파일하나만 올리는지, 파일과 추가정보를 같이 보내는지, 여러파일을 올리는지에 따라 사용법이 다르기 때문에 정리해 놓으려고 한다. 단일 파일 업로드 다중 파일 업로드 파일업로드 + 추가정보 => @RequestParam => 개별로 (파일&추가정보) 파일업로드 + 추가정보 => @ModelAttribute => 한번에 클래스 매핑 보통 스프링에서 파일업로드를 사용할때 두가지 방식 중 하나를 선택해서 사용한다. Servlet 3.0 Multipart Request 사용 Apache Commons FileUpload API 사용 나는 Commons Fileupload를 사용해서 정리를 해놓을 예정이다. 1). Dependency추가 comm..

[Spring-JSP]문자열 출력시 공백 및 줄바꿈 적용

DB에서 값을 가져와 TextField나 그냥 출력하거나 할때 줄바꿈이나 띄어쓰기가 이상하게 적용되는것을 볼수있다. 간단하게 처리하는 방법으로 아래와 같이 사용한다. 1). 를 페이지에 적용시킨다. 2). 문자열을 출력할 곳에 style="white-space:pre;" 를 적용시킨다. Tomcat을 사용한다면 Tomcat 설치 폴더 아래 conf/web.xml 파일에 trimSpaces 설정을 추가할 수 있다. jsp org.apache.jasper.servlet.JspServlet fork false xpoweredBy false trimSpaces true 3

[Spring-JSP] AES-256 암호화

AES256을 사용하여 DB에 등록될 사용자 정보를 암/복호화 하는 방법이다. 우리는 보통 사용자의 중요정보(개인정보)를 DataBase에 관리를 하게된다. 이때 암호화를 하지 않은 상태로 관리를 하게 된다면, DataBase 정보 탈취의 우려가 있을 가능성이 있다. 탈취자와 보안을 위해 한번이라도 더 귀찮게 만들어주자. 1). AES256SecureUtil.java 모듈화해서 사용할 수 있도록 만들어두고 사용하자. public class AES256SecureUtil { private static String key = "원하는비밀Key^$%^"; private String iv; private Key keySpec; /** * @desc 초기화 생성자 함수 전역에 설정된 key 값으로 필요 변수 값들..

[Spring-JSP] RSA 암호화

인터넷 서비스에서는 대칭키와 공개키를 이용한 암호화를 다양하게 활용하고 있는데 대표적으로 TLS(Transport Layer Security)라고 불리는 암호 규약이 대표적이며 쉽게 예를 들면 웹 브라우징 시에 사용되는 보안 계층을 말한다. TLS는 기존의 SSL(Secure Sockets Layer)가 표준화되면서 바뀐 이름이며 우리가 인터넷에서 익숙하게 접하는 HTTPS 프로토콜에서 이를 활용하고 있다. 구분목적 Public Key 누구에게나 공개될 수 있음 / 메세지를 보내는 발신자는 공개키를 통해 정보를 암호화 Private Key 수신자는 비밀키를 암호화된 메세지를 복호화 하는데 사용/ 외부에 노출되지 않도록 안전하게 보관해야 함 순서 1. Client 단에서 RSA를 비동기 호출하여 Publi..

[Spring-JSP] SHA-256 / SHA-512 암호화

기본적으로 SHA는 단방향 암호화 알고리즘이다. 보통 비밀번호와 같이 중요정보를 hash화 하여 암호화를 진행한다. 비밀번호는 복호화하여 비교할 필요가 없기때문에... 그래서 DataBase에 암호화된 비밀번호와 사용자가 입력한 비밀번호를 SHA로 암호화 하여 비교하며 사용할 수 있다. 사용법은 매우 간단하다. SHA암호화의 단점이라고는...음... Rainbow Table(해시 함수를 사용하여 변환 가능한 모든 해시 값을 저장시켜 놓은 표)를 사용하여 SHA 알고리즘의 해독이 가능할 수 있다는 점... 다만 엄청난 시간이 필요하다고 한다. 그렇지만 조금더 안전을 기하기위하여 본인은 RSA 암호화 후 SHA암호화를 통해 비밀번호 암호화를 진행하였다. SHA암호화는 기본적으로 256 / 512 두가지를 제..

Paging Module - Java + javascript

Java로 Script Paging Box를 만들어 붙이는 방식으로 만들어보자. Paging에는 여러가지 방식이 있으니, 다음번에는 Ajax로 만들어서 올려놔야지... 1). Mapper.xml start 와 limit를 적용시켜야 한다. 불러올때는 RowNumber로 List의 Numbering을 적용하였다. SELECT * ,ROW_NUMBER() OVER(ORDER BY NOTICE_ID ASC) AS ROWNUM FROM NOTICE n WHERE 1=1 AND n.COMPANY_ID = #{companyId} AND n.DEL_FLAG ='N' ORDER BY n.NOTICE_ID DESC LIMIT #{start}, #{end} 2). Paging Module.Java row의 갯수와 Page..

반응형