Spring Spring Controller의 Model 객체 Spring에서는 각 JSP영역 대신 Model에 어트리뷰트를 실어서 전달한다. @GetMapping("/choosinsu") public String choo(Model model, int age, String name) { model.addAttribute("attr1","ABC"); model.addAttribute("attr2", name + age); model.addAttribute("ABCD"); // 값을 꺼낼때 ${string} 으로 꺼낼 수 있음 return "choosinsu"; } addAttribute(key, value) 를 사용해서 jsp에 값을 전달할 수 있다. 전달받은 값은 JSP에서 변수처럼 사용할 수 있다. ..
Spring Spring Controller의 파라미터 자동 수집기능 URL에서 넘긴 파라미터 이름과 매개변수의 이름을 똑같이해서 받을 수 있다. // 요청 URL http://localhost:8080/chulsu?name=철수 @GetMapping("/chulsu") public String getChulsu(String name) { log.info("name : " + name); return "chulsu"; } 위와 같이 페이지에서 파라미터를 넘겨받을 때 파라미터 이름과 매개변수의 이름을 동일하게 할 경우 자동으로 값이 할당 된다. ( name = 철수 ) 넘어오는 데이터의 알맞은 형태의 VO를 사용한다면 VO객체를 매개변수로 받아서 사용할 수 있다. @Component public class..
Spring Spring Controller JSP의 복잡했던 절차들을 많이 생략한 방식으로 웹 서버 구현 가능 컨트롤러에서는 데이터를 attribute에 싣고 다음 페이지로 안내하는 작업만 하는 것이 바람직하다. 다양한 방식의 매개변수와 리턴 타입을 사용할 수 있다. GET/POST 등 Method별로 별도의 처리도 어노테이션으로 간편하게 처리 가능하다. 클래스 위에 @Controller어노테이션을 달아놓으면 스프링이 알아서 수집한다. @RequestMapping 사용자의 요청 URL과 해당 컨트롤러를 매핑시키는 어노테이션 클래스와 메서드 위에 사용할 수 있다. - value : 매핑할 URL을 설정한다 어노테이션 뒤에 아무런 속성을 정의하지 않으면 기본값이 된다. - method : 요청 방식을 구분..
Log4j - 자바에서 로그를 효율적으로 남기기 위한 라이브러리 - 디버그, 로깅등의 용도로 사용된다. Log4j의 구조 Logger 로그 메세지를 작성, Appender에게 전달한다. Appender 로그를 출력하는 위치 결정(콘솔, 파일, DB 등) Layout Appender로 로그 생성전에 메세지를 어떤 형식으로 기록할지 설정한다. ※ 주의 main과 test 안에 resources폴더 내부에 log4j.xml로 위의 설정을 변경할 수 있다. java소스가 test와 main인지 구별해서 설정해야 한다. Log4j 레벨 로그 레벨 설명 OFF 로그를 끈다. FATAL 치명적 에러 ERROR 에러 WARN 주의 INFO 일반 정보 DEBUG 디버깅 정보 TRACE 더 자세한 디버깅 정보 ALL 모든..
Lombok - 어노테이션만 사용하면 자바데이터 클래스 스타일의 객체로 만들어주는 라이브러리 Lombok 설치 Spring 프로젝트에서 Lombok을 사용하기 위해선 라이브러리와 pom.xml업데이트 둘 다 해야한다. 1. 라이브러리 다운 및 설치 https://projectlombok.org/download 위 홈페이지에서 버튼을 눌러 jar파일 다운로드를 한다. 다운이 완료 되었으면 lombok.jar를 더블클릭해서 실행한다. (더블클릭 안 될 경우 cmd에서 lombok.jar를 받은 폴더로 이동한 뒤 java -jar lombok.jar 명령어를 실행한다.) 실행하면 위와같은 창이 뜨는데 Specify location... 을 눌러서 이클립스 실행파일을 선택한 후 Install/Update를 하면..
JUnit5 Java8이상의 버전 필요 pom.xml 업데이트 1 2 3 4 5 6 7 8 9 10 11 12 org.junit.jupiter junit-jupiter-api 5.3.1 test org.junit.jupiter junit-jupiter-engine 5.0.1 test Colored by Color Scripter cs 위의 두개를 내에 추가 기존의 junit4에 해당하는건 지우지 않아도 된다. JUnit5 어노테이션 어노테이션 설명 @ExtendWith(SpringExtension.class) JUnit4의 @Runwith과 같은 기능을 한다. @ContextConfiguration는 그대로 사용하면 된다. @RepeatedTest(n) 테스트를 반복할 수 있게 해준다. 사용 방법 //J..
JUnit4 - 자바용 단위 테스트 API - 단위 테스트 : 하나의 기능이 올바르게 동장하는지 독립적으로 테스트하는 것 - Spring에 포함되어 있다. JUnit 관련 어노테이션 어노테이션 설명 @Test 이 어노테이션이 붙어있는 메소드를 단위 테스트로 인식하고 실행한다. 여러가지 옵션을 줄 수 있다. @Ignore 이 어노테이션을 붙인 테스트 메소드를 무시한다. (테스트의 주석 느낌) @Before 테스트 실행전에 초기화를 진행하는 어노테이션. 테스트 시작 전에 먼저 실행된다. @After 모든 테스트 종료 후 실행된다. @RunWith(SpringJUnit4ClassRunner.class) 테스트를 스프링 테스트로 실행하기 위한 설정 (pom.xml에서 spring-test를 추가해야 사용할 수 ..
Cannot find DTD 'file:///E:/kg-ac/java/springworkspace/Practice_SpringMVC/src/test/resources/log4j.dtd'. Create the DTD file or configure an XML catalog for this DTD. 위와같이 DTD파일을 확인하지 못한다는 에러가 떳을 때 2번째 라인의 코드를 아래와 같이 수정해주면 된다.
jsp에서 Redirect는 기본적으로 값을 넣지않고 페이지만 이동할때 사용 했지만 addAttribute를 사용하면 값도 넘길수 있습니다. 일단 Redirect 사용문법부터 보겠습니다. Controller @RequestMapping(value = "/studentConfirm", method = RequestMethod.GET) public String studentRedirect(Model model,HttpServletRequest request) { String id = request.getParameter("id"); model.addAttribute("id",id); if(id.equals("abc")) { return "redirect:studentOk"; } return "redirect..
커맨드객체를 통해 값을 출력할때 EL(Expression Language)을 사용했습니다. 이번엔 EL에 별칭을 주는 방법을 알아보겠습니다. StudentInformation DTO/VO package com.co.mvc05_03; public class StudentInformation { private String name; private String age; private String gradeNum; private String classNum; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public v..
스프링에서 HTTP 전송 데이터를 받아오는 방법은 getParameter를 사용해서 받아오거나 @RequestParam이라는 어노테이션을 사용하여 받아올 수 있습니다. 위의 방법은 데이터의 속성들이 적다면 큰 문제가 생기지 않지만 굉장히 많은 속성을 처리하기엔 현실적으로 불가능합니다. 그래서 스프링에서는 커맨드 객체를 지원해서 각체 자체의 속성값을 커맨드 객체에 바인딩하여 처리할 수 있게 해주었습니다. 사용예시 Member VO package com.co.mvc03; public class Member { private String name; private String id; private String pw; private String email; public String getName() { retur..
MVC2 에서는 컨트롤러에서 get,post 어느 방식으로 데이터가 들어와도 doProcess라는 메소드를 생성하여 둘다 한번에 처리하는 메소드를 만들어서 처리했습니다. 스프링 컨트롤러에서는 같은 메소드를 두개만들고 오버로딩을 하여 사용하면 됩니다. studentInput.jsp studentId: studentId: 위 화면처럼 post, get 버튼을 만들어서 입력한 값을 원하는 방식으로 보내보겠습니다. post get get,post를 처리해주는 컨트롤러를 보겠습니다. 어떤 방식으로 데이터를 받아도 처리를 하기위해서 같은 메소드를 오버로딩해서 두개를 만들어주어야 합니다. 오버로딩하기 위해서는 매개변수의 갯수나 타입이 다르면 오버로딩을 할 수 있는 조건을 성립하게 됩니다. 그래서 하나는 ModelAn..