증상 서버에서 파일을 읽어오다가 실패하면서 console에 "net::ERR_CONTENT_LENGTH_MISMATCH 200" 출력 원인 서버에서 읽어오는 파일의 크기와 Header에 설정된 파일의 Content-Length의 크기가 달라서 발생 해결 upload 할 때 파일 크기를 추출해서 DB에 저장한다. @PostMapping("/uri") public String upload(@RequestParam("file") MultipartFile file) { Object obj = new Object(); obj.setFileSize((int) file.getSize());//MultipartFile의 getSize() 메소드로 파일 크기를 추출한다. service.insert(obj);//추출한 파..
Controller @PostMapping("/login") public String login( @RequestParam(name="email", required=true) String email, HttpSession session, ModelMap modelMap ){ if("myEmail@seogineer.com".equals(email)) { //로그인 정보를 session.setAttribute(key, value)로 등록시켜준다. session.setAttribute("isLogin", true); session.setAttribute("email", email); } } //session.getAttribute(key)로 session에 저장된 값을 읽을 수 있다. if(session.ge..
정규표현식(regular expression) 정규 표현식은 문자열에 나타나는 특정 문자 조합과 대응시키기 위해 사용되는 패턴입니다. 자바스크립트에서 정규 표현식 또한 객체입니다. 사용 예 이메일, 주소, 전화번호 규칙 검증 textarea에 입력된 것 중 불필요한 입력값 추출 트랜스파일링 개발 도구에서의 문자열 치환 정규표현식 선언 1. 리터럴 let re = /abc/; 2. 생성자 함수 let re = new RegExp("abc"); 메소드 1. match() 문자열이 정규식과 매치되는 부분을 검색 문법 : str.match(regexp) 결과 값 : 문자열이 정규식과 일치하면, 결과 정보를 담은 Array를 반환하고 아니면 null을 반환 ex) [ '32', index: 3, input: 'a..
생성자패턴 객체지향적인 방법으로 객체에서 비슷한 속성과 행위를 묶어서 표현할 수 있다. 객체를 동적으로 생성해서 중복을 줄일 수 있다. prototype에 메서드를 속성으로 추가할 수 있다. 객체리터럴(Object literal) 코드의 중복이 발생한다. var healthObj = { name : "seogineer", lastTime : "PM 10:12", showHealth : function(){ console.log(this.name + "님, 오늘은 " + this.lastTime + "에 운동을 하셨네요."); } } var healthObj2 = { name : "crong", lastTime : "AM 09:10", showHealth : function(){ console.log(th..
트랜잭션(Transaction) 쪼갤 수 없는 하나의 작업 단위 서비스 객체(=비즈니스 로직)는 하나의 트랜잭션으로 동작한다. 트랜잭션의 특징 1. 원자성 : 전체가 성공하거나 전체가 실패하는 것을 의미 2. 일관성 : 트랜잭션이 진행되는 동안 데이터가 변경 되더라도 처음에 트랜잭션을 진행할 때 참조한 데이터로 진행된다. 3. 독립성 : 하나의 특정 트랜잭션이 완료될때까지 다른 트랜잭션이 특정 트랜잭션의 결과를 참조할 수 없다. 4. 지속성 : 트랜잭션이 완료되었을 경우 영구적으로 반영되어야 한다. Spring에서 트랜잭션 사용 1. pom.xml에 라이브러리 추가 org.springframework spring-tx 4.3.5.RELEASE 2. web.xml에 ContextLoaderListener가..
SQL SELECT id, name, content, regdate FROM guestbook ORDER BY id DESC limit :start, :limit; --LIMIT 시작점, 갯수 Controller defaultValue="0"에 의해 처음은 0 번째부터 5개를 출력한다. 그 다음부터 pageCount에 따라 pageStartList에 5, 10, 15 등의 값이 들어갈 수 있다. @Autowired GuestbookService guestbookService; @GetMapping(path="/list") public String list(@RequestParam(name="start", required=false, defaultValue="0") int start, ModelMap mo..
1. pom.xml에서 JDK와 Servlet의 버전을 각각 1.8과 3.1.0으로 변경 후 저장한 다음 "프로젝트 우클릭 → Maven → Update Project..." UTF-8 1.8 1.8 javax.servlet javax.servlet-api 3.1.0 provided 2. web.xml에 DTD를 3.1로 변경한다. Archetype Created Web Application index.html index.jsp 3. 이클립스 Navigator 뷰에서 프로젝트/.settings/org.elclipse.wst.common.project.facet.core.xml 파일을 수정한다. 4. 이클립스 restart
실행 과정 1. 주소창에 http://~/xxxx 입력 2. DispatcherServlet → Controller : Controller에서 path가 /xxxx인 메소드 실행 3. Controller → DispatcherServlet : InternalResourceViewResolver가 가져온 return 값에 "/WEB-INF/views/"와 ".jsp"를 붙임 4. DispatcherServlet → View template : return 받은 "/WEB-INF/views/xxxx.jsp" 경로 파일 실행 (아래 DispatcherServlet 설정 참고) DispatcherServlet(=WebMvcContextConfiguration.java) 설정 @Configuration @Enab..
Maven Project 생성 File - New - Maven Project - Archetype 선택(Group Id : org.apache.maven.archetypes, Artifact Id : maven-archetype-webapp) - Group Id, Artifact Id 입력 - finish 폴더 추가 Maven Project를 최초 생성하면 위와 같은 구조를 가지고 있는데 Maven Project 디렉토리 구조를 만들기 위해서 아래와 같이 main 폴더 하위에 java, resources 폴더를 생성한다. ㄴsrc ㄴmain ㄴjava : 자바 패키지 폴더와 소스 코드가 위치함. ㄴresources : *.properties, *.xml 등 설정파일들이 위치함. ㄴwebapp : WEB..
MVC MVC는 Model-View-Controller의 약자이다. Spring MVC란 스프링 프레임워크 모듈 중에 하나인 Web 모듈이다. Model : Model은 View가 렌더링하는데 필요한 데이터이다. 예) 사용자가 요청한 상품 목록이나 주문 내역 View : 실제로 보이는 부분. Model을 사용해 렌더링한다. Controller : 사용자의 액션에 응답하는 컴포넌트이다. Model을 업데이트하고 다른 액션을 수행한다. Spring MVC 기본 동작 흐름 1. 클라이언트의 모든 요청은 Front Controller(=DispatcherServlet)라는 단 하나만 존재하는 서블릿이 받는다. 2. Front Controller는 요청만 받고 실제 일은 Controller 클래스(Handler ..