ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 인텔리J 에서 스프링 MVC, 하이버네이트, JSON 사용하기
    JAVA 2014. 5. 12. 09:00
    반응형
    운영체제 : 맥 OSX 10.9.2
    인텔리J 버전 : IntelliJ IDEA Ultimate 13.1.1


    프로젝트 만들기
    Project Wizard에서 Spring MVC를 선택해서 새로운 프로젝트를 생성함.







    기본 프로젝트가 생성됨





    Project Structure → Artifacts 를 보면 아티팩트를 볼 수 있음. 
    아티팩트는 애플리케이션 서버에 배포하는 자원들의 구조를 정의하고 있음.







    실행환경 만들기

    톰캣 설치(터미널에서 명령 실행)
    tar zxvf apache-tomcat-7.0.53.tar.gz

    톰캣 실행 확인
    cd apache-tomcat-7.0.53
    bin/startup.sh

    브라우저에서 http://127.0.0.1:8080/로 접근

    톰캣 종료
    bin/shutdown.sh


    인텔리J에 톰캣추가 
    실행환경 설정창 띄우기
    [Run] → [Edit Configurations…] 



    Configure… 버튼을 눌러서 설치한 톰캣을 추가해줌.



    설정한 톰캣을 이용해서 실행할 애플리케이션 서버를 만듬
    창에서 “+" 버튼을 눌러서 추가해줌.




    생성한 애플리케이션 서버에서 [Deployment] 탭에서 “+” 아이콘을 이용해서 배포할 아티팩트를 추가해줌.
    아티팩트 추가후 화면



    Application Servers 도구 창에 톰캣이 추가된 것이 보임.



    서버를 실행하면 자동으로 브라우저가 뜨면서 애플리케이션이 배포된 결과를 볼 수 있음.




    JSON API를 만들기 위해서 Dependency 추가.
    pom.xml 파일의 <dependencies> 부분에 아래 내용 추가

    
       jstl
       jstl
       1.2
    
     
    
    org.springframework.data
       spring-data-jpa
       1.2.0.RELEASE
    
     
    
       org.hibernate.javax.persistence
       hibernate-jpa-2.0-api
       1.0.0.Final
    
     
    
       org.hibernate
       hibernate-entitymanager
       3.6.10.Final
    
     
    
       org.hsqldb
       hsqldb
       2.2.9
    
     
    
       org.json
       json
       20080701
    

    /src/main/resources/META-INF/persistence.xml 파일 만들기.
    JPA를 통해서 하이버네이트 엔티티를 초기화하기 위해서임.
    
    
        
            org.hibernate.ejb.HibernatePersistence
            
                
                
                
                
                
                
            
        
    
    
    인텔리J 가 자동으로 JPA가 필요하다는걸 알려줌. 링크를 한번 클리하면 자동 설정됨.




    JPA 어노테이션을 이용해서 user 엔티티에 대한 모델 클래스 정의하기.
    package com.springapp.mvc;
     
    import javax.persistence.*;
     
    @Entity(name = "account")
    public class User {
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        private Long id;
     
        @Basic
        private String firstName;
     
        @Basic
        private String lastName;
     
        @Basic
        private String email;
     
        public Long getId() {
            return id;
        }
     
        public void setId(Long id) {
            this.id = id;
        }
     
        public String getFirstName() {
            return firstName;
        }
     
        public void setFirstName(String name) {
            this.firstName = name;
        }
     
        public String getLastName() {
            return lastName;
        }
     
        public void setLastName(String lastName) {
            this.lastName = lastName;
        }
     
        public String getEmail() {
            return email;
        }
     
        public void setEmail(String email) {
            this.email = email;
        }
    }
    
    user 엔티티용 스프링 저장소 정의하기

    package com.springapp.mvc; import org.springframework.data.jpa.repository.JpaRepository; public interface UserRepository extends JpaRepository<User, Long>{

    }
    webapp/WEB-INF/mvc-dispatcher-servlet.xml 파일에 빈 등록
    
    
        
    
        
            
            
        
    
        
    
        
            
        
    
        
            
        
        
    
    
    
    
    
    컨트롤러 정의하기
    HelloController를 UserController로 변경하고 아래 코드내용으로 변경
    
    package com.springapp.mvc;
     
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.ModelMap;
    import org.springframework.validation.BindingResult;
    import org.springframework.web.bind.annotation.ModelAttribute;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
     
    @Controller
    public class UserController {
        @Autowired
        private UserRepository userRepository;
     
        @RequestMapping(value = "/", method = RequestMethod.GET)
        public String listUsers(ModelMap model) {
            model.addAttribute("user", new User());
            model.addAttribute("users", userRepository.findAll());
            return "users";
        }
     
        @RequestMapping(value = "/add", method = RequestMethod.POST)
        public String addUser(@ModelAttribute("user") User user, BindingResult result) {
     
            userRepository.save(user);
     
            return "redirect:/";
        }
     
        @RequestMapping("/delete/{userId}")
        public String deleteUser(@PathVariable("userId") Long userId) {
     
            userRepository.delete(userRepository.findOne(userId));
     
            return "redirect:/";
        }
    }
    
    
    뷰 정의하기
    hello.jsp를 users.jsp로 변경.
    아래내용으로 코드내용 변경함.
    <%@taglib uri="http://www.springframework.org/tags" prefix="spring" %>
    <%@taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
    <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
     
    
    
        
        Spring MVC Application
     
        
        
     
        
        
    
    

    Users

    First Name:
    Last Name:
    Email:

    Users

    Name Email  
    ${user.lastName}, ${user.firstName} ${user.email}

    애플리케이션 실행



    JSON API 추가하기.
    UserController에 코드 추가.
    //상단에 import 내용 추가.
    
    
    import org.springframework.web.bind.annotation.*;
    import org.json.JSONArray;
    import org.json.JSONException;
    import org.json.JSONObject;
    
    
    //클래스안에 메소드 추가
    @RequestMapping(value = "/api/users", method = RequestMethod.GET)
    public
    @ResponseBody
    String listUsersJson(ModelMap model) throws JSONException {
        JSONArray userArray = new JSONArray();
        for (User user : userRepository.findAll()) {
            JSONObject userJSON = new JSONObject();
            userJSON.put("id", user.getId());
            userJSON.put("firstName", user.getFirstName());
            userJSON.put("lastName", user.getLastName());
            userJSON.put("email", user.getEmail());
            userArray.put(userJSON);
        }
        return userArray.toString();
    }
    


    서버 재시작후 결과 확인




    참조 



    반응형

    'JAVA' 카테고리의 다른 글

    JAVA JSON 라이브러리 Jackson 사용법  (0) 2013.05.22
    간단한 자바 통계 프로그램.  (0) 2013.05.07

    댓글

Designed by Tistory.