Kubet

  • Thabet
  • Dàn đề
  • Kubet
  • Lô Đề

Ví dụ CRUD đơn giản với Java RESTful Web Service

1- Mục tiêu của ví dụ

Trong tài liệu này tôi cung cấp cho bạn một ví dụ RESTful Web Service đơn giản với các chức năng Create + Read + Update + Delete (CRUD).

Các công nghệ tiên tiến được sử dụng :

  • Jersey RESTful API

  • JAXB

JAXB (Java Architecture for XML Binding): Là một Java API mã nguồn mở, nó chính thức được tích hợp vào Java tiêu chuẩn (JSE) từ phiên bản 1.6.
JAXB giúp chuyển đổi các đối tượng Java thành XML và ngược lại. Bạn có thể xem hướng dẫn về JAXB tại đây:

Bạn đang đọc: Ví dụ CRUD đơn giản với Java RESTful Web Service

  • Java Architecture for XML Binding (JAXB)

RESTful Web Service với Jersey sử dụng JAXB như là một XML-Binding mặc định để chuyển đổi các đối tượng Java thành XML và ngược lại.

Chuyển List thành XML

Trong RESTful Web Service với Jersey, MOXy chính là JSON-Binding mặc định, nó sử dụng để chuyển đổi một đối tượng Java thành JSON và ngược lại.

Các REST service sẽ quy đổi những Java Object thành JSON và ngược lại một cách tự động hóa, bạn không cần phải gắn bất kể một Annotation nào vào những lớp ” Mã Sản Phẩm ” .

2- Tạo Maven Project

Trên Eclipse chọn :

  • File/New/Other..




Đảm bảo rằng Project của bạn sử dụng Java >= 1.6, điều này là cần thiết bởi các thư viện JAXB được tích hợp sẵn vào Java từ phiên bản 1.6.

Project Properties/Project Facet:

3- Khai báo Maven & web.xml

Khai báo JERSEY servlet vào web.xml:

web.xml





    RESTful CRUD Example

    
        jerseyServlet
        com.sun.jersey.spi.container.servlet.ServletContainer
        
            com.sun.jersey.config.property.packages
            org.o7planning.restfulcrud
        
        1 
    
    
        jerseyServlet
        /rest/*
    



pom.xml



 
 
  4.0.0
  org.o7planning
  RESTfulCRUD
  war
  0.0.1-SNAPSHOT
  RESTfulCRUD Maven Webapp
  http://maven.apache.org

    

        
            junit
            junit
            3.8.1
            test
        



        
        
            javax.servlet
            javax.servlet-api
            3.1.0
            provided
        

        
        
            asm
            asm
            3.3.1
        

        
        
            com.sun.jersey
            jersey-bundle
            1.19.2
        

        
        
            org.json
            json
            20160810
        

        
        
            com.sun.jersey
            jersey-server
            1.19.2
        

        
        
            com.sun.jersey
            jersey-core
            1.19.2
        


        
        
            org.codehaus.jackson
            jackson-mapper-asl
            1.9.13
        


    

    
        RESTfulCRUD
        
            
                org.apache.tomcat.maven
                tomcat7-maven-plugin
                2.2
                
                    /RESTfulCRUD
                    8080
                
            

        
    



4- Web service classes


EmployeeDAO. java


package org.o7planning.restfulcrud.dao;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.o7planning.restfulcrud.model.Employee;

public class EmployeeDAO {

    private static final Map empMap = new HashMap();

    static {
        initEmps();
    }

    private static void initEmps() {
        Employee emp1 = new Employee("E01", "Smith", "Clerk");
        Employee emp2 = new Employee("E02", "Allen", "Salesman");
        Employee emp3 = new Employee("E03", "Jones", "Manager");

        empMap.put(emp1.getEmpNo(), emp1);
        empMap.put(emp2.getEmpNo(), emp2);
        empMap.put(emp3.getEmpNo(), emp3);
    }

    public static Employee getEmployee(String empNo) {
        return empMap.get(empNo);
    }

    public static Employee addEmployee(Employee emp) {
        empMap.put(emp.getEmpNo(), emp);
        return emp;
    }

    public static Employee updateEmployee(Employee emp) {
        empMap.put(emp.getEmpNo(), emp);
        return emp;
    }

    public static void deleteEmployee(String empNo) {
        empMap.remove(empNo);
    }

    public static List getAllEmployees() {
        Collection c = empMap.values();
        List list = new ArrayList();
        list.addAll(c);
        return list;
    }
    
    List list;

}

Employee. java


package org.o7planning.restfulcrud.model;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement(name = "employee")
@XmlAccessorType(XmlAccessType.FIELD)
public class Employee {

   private String empNo;
   private String empName;
   private String position;

 
   // Constructor mặc định này là bắt buộc nếu có thêm cấu tử khác.
   public Employee() {

   }

   public Employee(String empNo, String empName, String position) {
       this.empNo = empNo;
       this.empName = empName;
       this.position = position;
   }

   public String getEmpNo() {
       return empNo;
   }

   public void setEmpNo(String empNo) {
       this.empNo = empNo;
   }

   public String getEmpName() {
       return empName;
   }

   public void setEmpName(String empName) {
       this.empName = empName;
   }

   public String getPosition() {
       return position;
   }

   public void setPosition(String position) {
       this.position = position;
   }

}

EmployeeService là một RESTful web service, nó hỗ trợ cả hai định dạng XML và JSON.

EmployeeService.java

Xem thêm: [ Bandwidth ] Băng Thông Rộng Là Gì? Phân Biệt Giữa MBps và Mbps


package org.o7planning.restfulcrud.service;

import java.util.List;

import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

import org.o7planning.restfulcrud.dao.EmployeeDAO;
import org.o7planning.restfulcrud.model.Employee;

@Path("/employees")
public class EmployeeService {

    // URI:
    // /contextPath/servletPath/employees
    @GET
    @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
    public List getEmployees_JSON() {
        List listOfCountries = EmployeeDAO.getAllEmployees();
        return listOfCountries;
    }

    // URI:
    // /contextPath/servletPath/employees/{empNo}
    @GET
    @Path("/{empNo}")
    @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
    public Employee getEmployee(@PathParam("empNo") String empNo) {
        return EmployeeDAO.getEmployee(empNo);
    }

    // URI:
    // /contextPath/servletPath/employees
    @POST
    @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
    public Employee addEmployee(Employee emp) {
        return EmployeeDAO.addEmployee(emp);
    }

    // URI:
    // /contextPath/servletPath/employees
    @PUT
    @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
    public Employee updateEmployee(Employee emp) {
        return EmployeeDAO.updateEmployee(emp);
    }

    @DELETE
    @Path("/{empNo}")
    @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
    public void deleteEmployee(@PathParam("empNo") String empNo) {
        EmployeeDAO.deleteEmployee(empNo);
    }

}

 

Các URI tương quan tới CRUD ( Create, Read, Update, Delete ) gồm có :
Action
URI + Data (XML hoặc JSON)
Create
( @ POST )
/contextPath/servletPath/employees

{
“empNo”:”E05″,
“empName”:”Martin”,
“position”:”Salesman”
}


  E05
  Martin
  Salesman

 

Read
( @ GET )
/contextPath/servletPath/employees

/contextPath/servletPath/employees/{empNo}

Update
(@PUT)
/contextPath/servletPath/employees

{
“empNo”:”E01″,
“empName”:”Smith 2″,
“position”:”Cleck”
}


  E01
  Smith 2
  Clerk

 

Delete
( @ DELETE )
/contextPath/servletPath/employees/{empNo}

5- Cấu hình chạy ứng dụng





6- Test ứng dụng

Chạy URL sau trên trình duyệt:

Xem thêm: Chuyển đổi số là gì? Ý nghĩa của chuyển đổi số (Digital Transformation)


Bạn cần sử dụng Advanced RESTClient để có thể test các RESTful web service.

Xem thêm RESTClient & Advanced REST Client:

  • RESTClient công cụ gỡ rối cho RESTful Web Service

Ví dụ, thêm Employee sử dụng Advanced RESTClient.

Source: https://www.lesabeilles.biz
Category: Mạng Internet

Filed Under: Mạng Internet

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Giới Thiệu

Kubet là cái tên đang được quan tâm và nhắc đến nhiều nhất trong làng game đổi thưởng, game cá cược hiện nay, đặc biệt là các game thủ Việt Nam.

Chuyên Mục

  • Dàn đề
  • Du lịch
  • Lô Đề
  • Mạng Internet
  • Nhà Cái
  • Phong thủy

Bài viết mới

  • Nằm mơ rụng răng hàm dưới là điềm gì? Mơ răng rụng báo hiệu điều gì?
  • Nằm mơ thấy gãy răng chảy máu điềm báo gì? Đánh con gì?
  • Nằm mơ thấy gà đẻ trứng đánh con gì? Đánh số mấy dễ trúng?

Copyright 2021 © KUBET