전체 글505 [SpringBoot] JSP사용하기(sts 3) 이 방식은 sts 3에서만 유효하다. 4 이상이라면 jsp파일이 더이상 만들어지지 않아서 다른 설정이 더 필요하다. 1. pom.xml jstl과 jsp(jasper - jsp 해석) 관련 라이브러리를 추가한다. Spring에서처럼 버전을 직접 설정하지 않는 이유는 스프링부트에서 알아서 설정해놓았기 때문이다. 미리 설정해놓은 버전 정보는 org.springframework.boot:spring-boot-dependencies:버전명.pom에 있다. javax.servlet jstl org.apache.tomcat.embed tomcat-embed-jasper 2. jsp 페이지 모음 폴더 생성 jsp 페이지를 모아놓을 폴더를 생성한다. src/main/webapp/WEB-INF 밑에 폴더를 만들면 된다... 기록/BACKEND 2022. 5. 1. [JAVA] System.arraycopy, Array.clone() 보호되어 있는 글 입니다. 2022. 5. 1. [JAVA] 예외처리의 비용 예외처리에도 비용이 있다. [이 문제]를 풀다가 처음 발견했다. 더 자세한 내용은 [Exceptions are slow in Java] 라는 포스팅을 읽고 알게되었다. 1. Filling in the stack trace is slow 한 예외마다 대략 1~5ms정도의 시간이 걸린다. 이 대부분의 시간은 exception thread stack을 채우는 데 걸리는 시간이다. stack trace가 깊을 수록, 더 오랜 시간이 걸린다. 대부분의 경우 예상할 수 없는 문제에 exception을 던지기 때문에 생성될 exception이 얼마나 많은 시간이 걸릴 지 알 수 없는 것도 문제다. 2. How to avoid the stack trac penalty? Using non-exceptional metho.. 기록/JAVA 2022. 4. 30. [Spring] REST API 1. REST API란 - Representational State Transfer의 약어 - HTTP URI를 통해 제어할 자원(Resource)를 명시하고, HTTP Method(GET,POST,PUT,DELETE)를 통해 해당 자원을 제어하는 명령을 내리는 방식의 아키텍처 - 서버는 요청으로 받은 리소스에 대해 순수한 데이터를 전송한다. 데이터처리만 하거나, 처리 후 반환될 데이터가 있다면 JSON이나 XML형식으로 전달한다. - GET/POST 외에 PUT, DELETE 방식을 사용해 리소스에 대한 CRUD처리를 할 수 있다. - 가장 큰 단점은 정해진 표준이 없고 암묵적인 표준만 정해져있는 것이다. 하이픈(-)은 사용하지만 언더바(_)는 사용하지 않는다. 특별한 경우를 제외하고 대문자 사용은 하.. 기록/BACKEND 2022. 4. 29. [Spring] REST API(feat.jackson-databind, json) json 라이브러리와 jackson-databind 라이브러리를 이용한 rest api 작성 방법이다. jackson-databind라이브러리는 객체를 JSON포맷의 문자열로 변환시켜서 브라우저로 전송한다. 비슷한 라이브러리로, jackson-dataformat-xml라이브러리는 객체를 xml로 브라우저로 전송한다. 1. pom.xml 라이브러리를 추가한다. com.fasterxml.jackson.core jackson-databind 2.13.2.2 org.json json 20220320 2. Controller jackson 사용 X JSONObject를 생성해서 값을 저장한다. json.toString을 반환한다. @GetMapping("/idcheck") public @ResponseBody S.. 기록/BACKEND 2022. 4. 28. [Spring] MyBatis Mapper interface 자동 주입 [이 글] 보다 조금 더 간단해진 방식이다. sqlSession을 직접 주입하지 않고 Mapper 위치에서 스캔하도록 한다. 1. root-context.xml sqlSession bean 설정부분을 지우고 대신 mybatis-spring:scan에 mapper interface가 있는 위치를 지정한다. 2. interface Mapper.java @Mapper 어노테이션을 붙인다. 붙이지 않아도 잘 스캔되기는 한다. @Mapper public interface MemberMapper { int idCheck(String id) throws Exception; void registerMember(MemberDto memberDto) throws Exception; MemberDto login(Map ma.. 기록/BACKEND 2022. 4. 27. [Spring] MyBatis 설정(feat.Spring) [이 글]과 달라진 점만 체크한다. 1. pom.xml mybatis, mybatis-spring, spring-jdbc, spring-tx를 사용한다. tx는 트랜잭션 처리를 위해서 추가한 것이다. org.mybatis mybatis 3.5.9 org.mybatis mybatis-spring 2.0.7 org.springframework spring-tx 5.3.18 org.springframework spring-jdbc 5.3.18 2. root-context.xml 1. 다음을 추가한다. 여기서 ds는 DataSource의 id다. 2. typeAliase를 하나하나 설정하려면 주석된 곳을 풀고 mybatis-config.xml을 남겨서 그 파일에 작성하면 된다. typeAliasesPackage.. 기록/BACKEND 2022. 4. 26. [WEB] MyBatis 설정 1. pom.xml 라이브러리를 추가한다. org.mybatis mybatis 3.5.9 2. src/main/resources/mybatis-config.xml 데이터베이스, 매퍼 등 설정파일이다. 순서를 꼭 지켜야한다. 이 코드에서는 db 아이디나 비밀번호를 properties파일로 따로 저장했다. properties는 이렇게 만든다. driver=com.mysql.cj.jdbc.Driver url=jdbc:mysql://localhost:3306/스키마이름?serverTimezone=UTC&useUniCode=yes&characterEncoding=UTF-8 dbid=아이디 dbpwd=비밀번호 3. SqlMapConfig.java 이름은 같지 않아도 된다. 이 파일에 SqlSession을 반환하는 .. 기록/BACKEND 2022. 4. 25. [Spring] Interceptor Interceptor spring container가 관리한다. 따라서 스프링의 모든 빈 객체에 접근할 수 있다. DispatcherServlet에서 Controller를 호출하기 전에 먼저 동작한다. servlet-context.xml에서 설정한다. * filter는 Servlet container에서 관리한다. DispatcherServlet 이전에 실행되고, web.xml에서 설정한다. 사용자 인터셉터.java spring 5.3 이상부터는 extends HandlerInterceptorAdapter 하지 않고 implements HandlerInterceptor한다. HandlerInterceptor 인터페이스를 상속받더라도 필요없는 메서드는 오버라이딩하지 않아도 된다. public boolean.. 기록/BACKEND 2022. 4. 24. [Spring] File Download .jsp 파일 원본 이름 옆 다운로드 a태그를 만들었다. 이 태그에 속성을 몇 개 추가한다. 이름은 마음대로 해도 된다. 1. sfolder - 서버 저장 폴더명 2. sfile - 실제 저장 파일 이름 3. ofile - 원본 파일 이름 ${file.originFile} [다운로드] a 태그가 클릭되면 실행되는 이벤트 함수를 만들었다. (js) 이 함수는 파일 다운로드 form에 값을 넣고 submit 시킨다. $('.filedown').click(function() { $(document).find('[name="sfolder"]').val($(this).attr('sfolder')); $(document).find('[name="ofile"]').val($(this).attr('ofile')); $.. 기록/BACKEND 2022. 4. 23. [Spring] File Upload apache commons의 fileupload를 사용했다. pom.xml 라이브러리를 추가한다. commons-fileupload commons-fileupload 1.4 servlet-context.xml 1. 인코딩, maxUploadSize, maxInMemorySize를 설정한다. 이 외에도 설정할 수 있다. (api문서 참고) maxUploadSize : 한 요청당 업로드가 허용되는 최대 용량. 바이트 단위로 설정. 기본값(-1)은 용량에 제한이 없다. maxInMemorySize : 디스크에 저장하지 않고 메모리에 유지하도록 허용하는 바이트 단위의 최대 용량. 사이즈가 이보다 클 경우 이 이상의 데이터는 파일에 저장된다. 기본값은 10240바이트다. ver. SpringBoot 스프링부트에서.. 기록/BACKEND 2022. 4. 22. [BOJ] 15684 사다리 조작 - JAVA 1. 문제 15684번: 사다리 조작 사다리 게임은 N개의 세로선과 M개의 가로선으로 이루어져 있다. 인접한 세로선 사이에는 가로선을 놓을 수 있는데, 각각의 세로선마다 가로선을 놓을 수 있는 위치의 개수는 H이고, 모든 세로선 www.acmicpc.net * 이 문제는 꼭 문제 링크로 들어가서 힌트를 봐야한다! 사다리 게임은 N개의 세로선과 M개의 가로선으로 이루어져 있다. 인접한 세로선 사이에는 가로선을 놓을 수 있는데, 각각의 세로선마다 가로선을 놓을 수 있는 위치의 개수는 H이고, 모든 세로선이 같은 위치를 갖는다. 아래 그림은 N = 5, H = 6 인 경우의 그림이고, 가로선은 없다. 초록선은 세로선을 나타내고, 초록선과 점선이 교차하는 점은 가로선을 놓을 수 있는 점이다. 가로선은 인접한 두.. 코딩테스트/BOJ 2022. 4. 22. 이전 1 ··· 25 26 27 28 29 30 31 ··· 43 다음