목록전체 글 (348)
파게로그
문제 링크: 20191번 제목 https://www.acmicpc.net/problem/20191 문제에서의 S를 target이라 하고, T를 pattern이라 하자. alphas는 리스트의 배열로서, alphas[c]라는 리스트는 c라는 문자가 target에서 어디에 위치하는지에 대해 그 인덱스를 모두 담고 있다. 한편 patIdx라는, pattern을 가리키는 인덱스를 하나 둔다. 이는 pattern에서 마지막으로 사용된 문자의 위치를 가리키고 있으며, 초기값은 -1로 해둔다. 이는 뒤에 가서 그 이유를 알 수 있다. 우리는 for문 내에서 target을 한 글자씩 cur이라는 변수로 두고 채워나가는데, patIdx보다 뒤에 있는 문자만 사용 가능하다. 즉 alphas[cur]에서 patIdx보다 큰..
타임리프라고 부르는데 간단한 프로젝트에는 많이 쓰인다고 한다. ⛳ 공식 사이트 ▪ 메인 www.thymeleaf.org ▪ Thymeleaf 문서 www.thymeleaf.org/documentation.html ▪ Thymeleaf + Spring 문서 www.thymeleaf.org/doc/tutorials/3.0/thymeleafspring.html ▪ 실습 튜토리얼 itutorial.thymeleaf.org ⛳ 아래 블로그가 처음에 읽기에는 나쁘지 않았다. 템플릿 엔진의 개념과 종류, JSP보다 Thymeleaf를 권장하는 이유를 간단하게 볼 수 있다. velog.io/@dsunni/ Thymeleaf is a modern server-side Java template engine for both..
URL을 기준으로 설명하면 다음과 같다. /board/notice/[ list | detail | edit | reg | del ] /admin/board/notice/[ list | detail | edit | reg | del ] 위와 같이 두 URL이 모두 존재할 수 있다면, 관리자 페이지와 일반 페이지에 대한 Controller의 이름이 모두 NoticeController로서 중복되어 에러가 발생할 것이다. 하지만 구조상으로 위와 같은 구조가 바람직하기에 구조를 변경하기보다는, 이를 유지하면서도 에러를 발생시키지 않는 방법을 차장야 한다. 이 때에는 Controller의 이름을 바꾸기보다는 @Controller("adminNoticeController")처럼 annotation에 별도의 속성값을 ..
Spring Tool Suite 4를 이용해 Spring Boot 프로젝트 만들기 IntelliJ에서 Gradle 프로젝트로 만들어보고 싶지만 일단은 강의를 따라서 Spring Tool Suite 4에서 Maven 프로젝트로 생성해본다. 물론 큰 차이는 없다. 차후에 Gradle을 사용해보기로 하고 일단은 Maven project로 생성해준다. dependencies에 Spring Web을 추가해준다. 오랜만에 main( )을 만났다. Tomcat도 Spring Boot 아래에 있다는 것을 알 수 있다. com.ddoongi.springweb.controller 패키지에 HomeController 클래스를 추가해준다. 이 때 annotation의 스캔 범위가 com.ddoongi.springweb인 점을..
기존의 Spring은 어디서 동작했나? 아래 3개의 단을 모두 Spring Boot가 통합적으로 대체한다. 개발자는 Web Application 개발에만 집중하도록 하기 위해서다. Spring 공식 홈페이지에서는 Spring Boot의 기능에 대해 다음과 같이 기술하고 있다. Create stand-alone Spring applications Embed Tomcat, Jetty or Undertow directly (no need to deploy WAR files) Provide opinionated 'starter' dependencies to simplify your build configuration Automatically configure Spring and 3rd party librarie..
Method(GET 요청, POST 요청) 구분하여 처리하기 😯 request를 통해서 분기: 권장하지 않음 @RequestMapping("reg") public String reg(HttpServletRequest request, ...) { if (request.getMethod().equals("POST")) { ... } } 😯 RequestMapping annotation에 method 속성 부여: 옛날 방식(~ Spring 3.x) @RequestMapping(value="reg", method=RequestMethod.GET) public String reg() { return "admin/notice/reg"; } @RequestMapping(value="reg", method=Reques..
File saveFile = new File(realPath); multipartFile.transferTo(saveFile); home directory의 실제 경로를 그대로 써버리면 배포하고 나면 문제가 생기니까... ServletContext 얻기 1. 메서드에서만 사용하는 경우에 주로 사용하는 방법 ctx를 얻기 위해서 메서드 파라미터에 HttpServletRequest req를 넣어두고 ServletContext ctx = req.getServletContext(); 2. 멤버 변수로 두기 @Autowired //Spring은 IoC Container에 ServletContext를 담아둔다 private ServletContext ctx; String webPath = "/static/uploa..
웹 브라우저가 WAS 내 Servlet으로 POST를 할 때... key1=value1&key2=value2&...로, 마치 URL의 query string과 같이 전달한다. 그런데 여기에는 문자열 외 바이너리를 포함하기는 어렵다. 이 때에는 클라이언트 인코딩을 새로 해야한다. 먼저, 의 enctype 속성 변경부터 보자. 기존에 우리는 application/x-www-form-urlencoded를 사용한다. 파일을 위해서는 URL 방식이 아니라 multipart/form-data 방식을 이용한다. 이를 위해 로 바꾸어준다. 로 파일 업로드를 가능하도록 버튼을 만들어주면, 서버에서는 public String reg(MultipartFile file)로 받을 수 있다. 실행을 위해 설정을 해보자. 이제는 ..