본문 바로가기

명사 美 비격식 (무리 중에서) 아주 뛰어난[눈에 띄는] 사람[것]

JAVA/Spring

(91)
Controller에서 간단하게 DB 테스트 하기: jdbcTemplate.queryForObject 의존성 추가implementation 'org.springframework.boot:spring-boot-starter-data-jpa'implementation 'org.springframework.boot:spring-boot-starter-jdbc'implementation 'org.postgresql:postgresql:42.2.18'    db연결정보 기입(~에 알맞게 입력)spring.datasource.url=jdbc:postgresql://localhost:5432/~spring.datasource.username=~spring.datasource.password=~   jdbc template으로 select 1 실행package com.standout.scard.main;import o..
@Transactional Spring 트랜젝션, 실패시 되돌리다 @Transactional 하나의 table이라면 관련없으나 여러개의 table을 작성/수정시에는 중간에 에러날경우 롤백, 처음으로 되돌려야 한다. Spring에는 애너테이션으로 트랜젝션기능을 제공한다. @Transactional controller에서는 service를 실행하고 @RequestMapping(value = "/manpower_edit", method = { RequestMethod.POST }) public ResponseEntity manpowerEdit(@ModelAttribute MpVO mpVO, HttpServletRequest req, HttpServletResponse res) { //System.out.println("전체 form정보: " + mpVO); //System...
DbUnit 테스트: dataSource를 불러와 insert/select 확인하기 앞서 EasyMock을 통한 테스트를 진행해봤다. https://standout.tistory.com/1144 EasyMock + JUnit 테스트 @Before @Test 앞서 JUnit테스트를 진행해봤다. https://standout.tistory.com/1139 JUnit 테스트 : @Before @After @Test 간단한 JUnit 테스트를 진행해보자. https://standout.tistory.com/378 junit 4.7 이란? 단위테스트 프레임워크, 코드수 standout.tistory.com 앞선 테스트에서 아래와같이 VO를 SET하여 실행하였다. sampleService = mock(EgovSampleService.class); //SampleVO 객체를 생성하고 이름을 설정한다..
EasyMock + JUnit 테스트 @Before @Test 앞서 JUnit테스트를 진행해봤다. https://standout.tistory.com/1139 JUnit 테스트 : @Before @After @Test 간단한 JUnit 테스트를 진행해보자. https://standout.tistory.com/378 junit 4.7 이란? 단위테스트 프레임워크, 코드수행결과를 확인해 코드의 정확성/신뢰성을 검증하는 기능 pom.xml에 추가 junit junit 4.7 test ht standout.tistory.com EasyMock을 함께하면 보다 복잡한 구조도 비교적 안정적으로 테스트해볼 수 있다. https://standout.tistory.com/1143 EasyMock이란? EasyMock java언어를 기반으로 하는 Mock객체를 생성하고 관리하는데 사..
JUnit 테스트 : @Before @After @Test 간단한 JUnit 테스트를 진행해보자. https://standout.tistory.com/378 junit 4.7 이란? 단위테스트 프레임워크, 코드수행결과를 확인해 코드의 정확성/신뢰성을 검증하는 기능 pom.xml에 추가 junit junit 4.7 test https://mvnrepository.com/artifact/junit/junit/4.7 standout.tistory.com https://standout.tistory.com/598 전자정부프레임워크 Eclipse 웹프로젝트 만들기 전자정부프레임워크 웹프로젝트 예제와 같이 이미 만들어진 웹프로젝트. 간단한 게시판만들기에 빠르고 적합하다. 전자정부프레임워크 Eclipse 다운로드 후 진행한다. https://standout.tistory.c..
MVC패턴 게시판 구현하기: 페이징 앞서 리스트와 검색하기 기능을 구현해봤다. https://standout.tistory.com/1137 MVC패턴 게시판 구현하기: 검색하기 앞서 게시물 리스트들을 표시해봤다. https://standout.tistory.com/1132 MVC패턴 게시판 구현하기: 리스트페이지 DB연결 테스트를 완료했다면 본격적으로 게시판을 구현해보자. https://standout.tistory.com/1112 M standout.tistory.com 우선 페이징 디자인을 구현해놓자. 클릭했을때 onclick이벤트로 특정범위로 select된 리스트들만 들어가도록 뿌려줄것이고 지정한 보여줄 게시물수에 맞춰 1, 2, 3, ...정수가 표시되도록 foreach문을 통해 구현한다. 이전과 다음버튼은 그저 현재 페이지에서 +..
MVC패턴 게시판 구현하기: 검색하기 앞서 게시물 리스트들을 표시해봤다. https://standout.tistory.com/1132 MVC패턴 게시판 구현하기: 리스트페이지 DB연결 테스트를 완료했다면 본격적으로 게시판을 구현해보자. https://standout.tistory.com/1112 MyBatis: 간단히 DB 연결테스트하기 앞서 JDBC 드라이버와 template을 통해 DB연결을 테스트해봤다. https://standou standout.tistory.com 이번엔 불러낸 리스트에서 ajax검색기능을 추가해보자. 초기화버튼은 파라미터가 없는 list.do로 기본세팅했고 svg형식으로 집어넣어봤다. -이 아이콘 하나때문에 라이브러리를 연결하거나 이미지를 저장하고 싶지않았기 때문이다. - select박스와 검색버튼을 만들어놓자...
MVC패턴 게시판 구현하기: 삭제하기 앞서 게시물 상세정보를 띄워봤다. https://standout.tistory.com/1133 MVC패턴 게시판 구현하기: 상세페이지 앞서 리스트페이지를 구현해봤다. https://standout.tistory.com/1132 MVC패턴 게시판 구현하기: 리스트페이지 DB연결 테스트를 완료했다면 본격적으로 게시판을 구현해보자. https://standout.tistory.com/1112 MyBat standout.tistory.com 이번엔 삭제하기를 구현해보자. 상세페이지 수정처럼 id를 가져와 mapper에서 사용할것이다. 완료되면 list.do로 이동하기로 하자. // 삭제하기 ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ @RequestMapping(value..
MVC패턴 게시판 구현하기: 새글쓰기 앞서 상세페이지를 출력해봤다. https://standout.tistory.com/1133 MVC패턴 게시판 구현하기: 상세페이지 앞서 리스트페이지를 구현해봤다. https://standout.tistory.com/1132 MVC패턴 게시판 구현하기: 리스트페이지 DB연결 테스트를 완료했다면 본격적으로 게시판을 구현해보자. https://standout.tistory.com/1112 MyBat standout.tistory.com 또 수정하기를 출력해봤는데 https://standout.tistory.com/1134 MVC패턴 게시판 구현하기: 수정하기 앞써 상세페이지를 띄워봤다. https://standout.tistory.com/1133 MVC패턴 게시판 구현하기: 상세페이지 앞서 리스트페이지를 구현..
MVC패턴 게시판 구현하기: 수정하기 앞써 상세페이지를 띄워봤다. https://standout.tistory.com/1133 MVC패턴 게시판 구현하기: 상세페이지 앞서 리스트페이지를 구현해봤다. https://standout.tistory.com/1132 MVC패턴 게시판 구현하기: 리스트페이지 DB연결 테스트를 완료했다면 본격적으로 게시판을 구현해보자. https://standout.tistory.com/1112 MyBat standout.tistory.com 우선 해당 jsp에 목록으로 돌아가는 버튼과 수정하기 버튼을 추가해보자. 수정할떄는 ID값을 파라미터로 가져가 해당하는 필드값을 수정할 것이다. 목록 수정 우선 상세보기 페이지와 같이 수정페이지에서 데이터 먼저 표시해보자. 사실 각 form을 활성화만 시켜주면 되니 boardse..
MVC패턴 게시판 구현하기: 상세페이지 앞서 리스트페이지를 구현해봤다. https://standout.tistory.com/1132 MVC패턴 게시판 구현하기: 리스트페이지 DB연결 테스트를 완료했다면 본격적으로 게시판을 구현해보자. https://standout.tistory.com/1112 MyBatis: 간단히 DB 연결테스트하기 앞서 JDBC 드라이버와 template을 통해 DB연결을 테스트해봤다. https://standou standout.tistory.com 이제 각 리스트의 id값을 이용해 상세페이지로 보내보자. onclick 속성을 추가해보자. ${item.id} ${item.title} ${item.writeDate} ${item.count} 상세페이지로 이동완료. sub.do는 이 id값에 해당하는 값을 모두 가져와야한다..
MVC패턴 게시판 구현하기: 리스트페이지 DB연결 테스트를 완료했다면 본격적으로 게시판을 구현해보자. https://standout.tistory.com/1112 MyBatis: 간단히 DB 연결테스트하기 앞서 JDBC 드라이버와 template을 통해 DB연결을 테스트해봤다. https://standout.tistory.com/1109 standout.tistory.com select * from Board에서 가져온 list데이터들을 dao는 BoardVO형의 list로 받아 return하고 controller는 이를 addobject하여 view로 전달한다. // 리스트 ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ @RequestMapping(value = { "/", "/board/list.do" ..
Dynamic web project Spring MVC패턴: MVC패턴으로 화면에 값 띄우기 앞서 우선 controller를 이용해 화면을 띄워봤었다. https://standout.tistory.com/1108 Dynamic web project Spring MVC패턴: Controller로 화면띄우기 프로젝트를 생성한뒤, pom.xml를 통해 spring프레임워크를 주입했다면 본격적으로 화면을 띠워보자. *아직이라면 아래 게시물을 참고해 수행한다. + Eclipse를 아직설치하지않았다면 이 게시물을 참 standout.tistory.com MyBatis 연결테스트 또한 완료했으니 MVC패턴을 완성시켜보자. https://standout.tistory.com/1112 MyBatis: 간단히 DB 연결테스트하기 앞서 JDBC 드라이버와 template을 통해 DB연결을 테스트해봤다. https:..
MyBatis: 간단히 DB 연결테스트하기 앞서 JDBC 드라이버와 template을 통해 DB연결을 테스트해봤다. https://standout.tistory.com/1109
JdbcTemplate: 간단히 DB 연결테스트하기 앞서 전통적인 방법인 JDBC 드라이버로 간단히 DB연결 테스트를 해봤다. https://standout.tistory.com/1109
Dynamic web project Spring MVC패턴: Controller로 화면띄우기 프로젝트를 생성한뒤, pom.xml를 통해 spring프레임워크를 주입했다면 본격적으로 화면을 띠워보자.*아직이라면 아래 게시물을 참고해 수행한다.+ Eclipse를 아직설치하지않았다면 이 게시물을 참고한다.https://standout.tistory.com/1085 전자정부프레임워크 설치: 가장쉬운방법 + 게시판띄우기앞서 전장부프레임워크를 설치할때 다운후 - jdk연결 및 tomcat을 연결하여 게시판을 띄웠었다. https://standout.tistory.com/1071 전자정부프레임워크 egov 게시판 hsql → Oracle DB바꾸기 우선 전자정부프레standout.tistory.com https://standout.tistory.com/1094 JAVA Dynamic Web Project 만..
Annotation - @Builder 객체를 생성할때 메서드 체인을 통해 각 필드의 값을 설정할 수 있다. builder() 메서드를 사용해 빌더객체를 얻어 메서드 체인을 통해 값을 설정해 build()를 호출해 최종객체를 생성한다. import lombok.Builder; @Builder public class Person { private String name; private int age; private String address; private String phoneNumber; } // 사용 예시 Person person = Person.builder() .name("John") .age(30) .address("123 Main St") .phoneNumber("555-1234") .build(); 필드순서를 신경쓰지않고 명시적으로..
Annotation - @NoArgsConstructor @NoArgsConstructor 매개변수가 없는 기본생성자를 자동으로 추가한다. import lombok.NoArgsConstructor; @NoArgsConstructor public class Person { private String name; private int age; // Getters and Setters } https://standout.tistory.com/492 Annotation - @EqualsAndHashCode @EqualsAndHashCode equals() 및 hashCode() 메서드를 생성 import lombok.EqualsAndHashCode; @EqualsAndHashCode public class Person { private String name; privat..
Spring MyBatis와 MyBatis 의 차이 MyBatis란 DAO 객체와 SQL문을 Mapping해주는 Persistence Framework 쉽게 sql문과 다른 언어가 한 파일에 섞여있지 않도록 따로 분리해 관리하는 것. Spring MyBatis는 Spring 프레임워크와 MyBatis를 결합한 프레임워크 코드로 직접 확인해보자. 기존 MyBatis는 아래와 같이 SqlSession, SqlSessionFactory, SqlSessionFacrotyBuilder를 연동해야 한다. import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryB..
Spring Framework vs Spring Boot 차이 앞서 Spring이 무엇인지 알아봤다. https://standout.tistory.com/123 Spring이란? Spring Spring Framework 스프링프레임워크라고도 불린다. 자바 웹 애플리케이션을 생성하기위한 오픈소스, 경량 프레임워크이면서 경량 컨테이너 https://spring.io/ Spring | Home Cloud Your code, any cloud—we’ve standout.tistory.com 또한 Spring Boot의 구조에 대해서도 알아봤는데, https://standout.tistory.com/458 Spring Boot 구조 src/main/java: 자바소스 src/main/resources: xml이나 프로퍼티파일 static: html같은 정적 웹리소스 tem..
Spring 버전별 특징 Spring 2.x XML 네임스페이스, AspectJ지원 https://standout.tistory.com/619 XML 네임스페이스 XML 네임스페이스 데이터를 구분하기 위한 방법 동일한 이름을 갖는 요소/속성을 서로 다은 이름으로 구분할 수 있다. XML in a Nutshell O'Reilly XML in a Nutshell Pearson XML in a Nutshell O'Reilly XML in a Nutshell Pe standout.tistory.com https://standout.tistory.com/617 AspectJ란? AspectJ 자바언어에 측면 지향 프로그래밍(Aspect-Oriented Programming, AOP)기능을 추가한 프레임워크 로깅, 트랜잭션 관리, 보안 등..
RestTemplate이란? RestTemplate RestTemplate는 RESTful 웹 서비스를 호출하기 위한 자바에서 제공하는 클래스 RestTemplate restTemplate = new RestTemplate(); String url = "https://jsonplaceholder.typicode.com/todos/1"; Todo todo = restTemplate.getForObject(url, Todo.class); https://standout.tistory.com/620 RESTful 방식이란? RESTful Representational State Transfer RESTful은 웹 서비스 아키텍처의 한 형태 웹 기술을 이용해 자원을 이름(URI)으로 식별하고 HTTP 메서드를 이용해 해당 자원을 조작하는 스..
Annotation - @RestController @RestController @Controller 어노테이션과 @ResponseBody 어노테이션을 합쳐 놓은 것 컨트롤러 클래스 내의 모든 메서드가 @ResponseBody 어노테이션을 생략하고 반환 RESTful 웹 서비스에서 JSON, XML과 같은 데이터 타입을 반환하고자 할 때 유용하게 사용 @Controller public class UserController { @Autowired private UserRepository userRepository; @GetMapping("/users/{id}") @ResponseBody public User getUser(@PathVariable Long id) { User user = userRepository.findById(id).orElseThrow..
Annotation - @RequestBody @ResponseBody @RequestBody와 @ResponseBody HTTP 요청 및 응답 처리를 담당하는 어노테이션 @RequestBody POST, PUT, PATCH 메서드와 함께 사용 HTTP 요청 본문(body)에 담긴 데이터를 자바 객체로 변환해주는 어노테이션 @PostMapping("/users") public User createUser(@RequestBody User user) { // 요청 본문에서 받아온 User 객체를 이용해 새로운 사용자 생성 로직 수행 return userRepository.save(user); } @ResponseBody 컨트롤러에서 데이터를 반환할 때 사용 메서드의 반환값을 HTTP 응답 본문으로 전송 @Controller public class UserController { ..
Annotation - @ResponseEntity @ResponseEntity HTTP 응답 처리를 담당하는 클래스 @ResponseBody와 비슷한 역할 + HTTP 상태 코드, 응답 헤더설정, 반환데이터의 타입을 지정 @GetMapping("/users/{id}") public ResponseEntity getUser(@PathVariable Long id) { // 요청된 id를 이용해 데이터베이스에서 해당 사용자 정보를 조회 User user = userRepository.findById(id).orElseThrow(() -> new UserNotFoundException(id)); // 응답 본문과 HTTP 상태 코드, 응답 헤더를 설정하여 ResponseEntity 객체 생성 후 반환 HttpHeaders headers = new HttpHe..
Annotation - @RequiredArgsConstructor @RequiredArgsConstructor final이나 @NonNull인 필드 값만 파라미터로 받는 생성자를 추가 import lombok.RequiredArgsConstructor; @RequiredArgsConstructor public class Person { private final String name; private final int age; private String address; } public class Main { public static void main(String[] args) { Person person1 = new Person("John", 30); } } https://standout.tistory.com/176 상수, final 상수, 대문자로 표시하는것이 관례 do..
Annotation - @NonNull @NonNull 해당 필드가 null 값을 가질 수 없도록 설정 메소드에서 @NonNull 어노테이션을 사용하여 매개변수가 null이면 예외를 발생시킬 수 있다. import lombok.NonNull; public class Person { private String name; @NonNull private int age; public Person(String name, @NonNull int age) { this.name = name; this.age = age; } public void setName(String name) { this.name = name; } public void setAge(@NonNull int age) { this.age = age; } } https://standout.t..
Annotation - @Data @Data @Getter @Setter @EqualsAndHashCode @AllArgsConstructor을 포함한 Lombok에서 제공하는 필드와 관련된 모든 코드를 생성 import lombok.Data; @Data public class Person { private String name; private int age; private String address; } https://standout.tistory.com/491 Annotation - @Getter @Setter @ToString lombok에서 getter, setter, tostring의 역할을 대신하여 코드의 길이를 줄여준다. import lombok.Getter; import lombok.Setter; import lombok...
Annotation - @AllArgsConstructor @AllArgsConstructor 클래스 내의 모든 필드를 매개변수로 받는 생성자를 자동으로 생성 import lombok.AllArgsConstructor; @AllArgsConstructor public class Person { private String name; private int age; private String address; } public class Main { public static void main(String[] args) { Person person1 = new Person("John", 30, "Seoul"); } }
Annotation - @EqualsAndHashCode @EqualsAndHashCode equals() 및 hashCode() 메서드를 생성 import lombok.EqualsAndHashCode; @EqualsAndHashCode public class Person { private String name; private int age; private String address; } https://standout.tistory.com/191 true인지 false인지, equals() equals() true인지 false인지 출력해 확인할 수 있다.String str = "yes"; System.out.println(str.equals("yes")); standout.tistory.com https://standout.tistory.com/178 주소값..