RESTful Web 服务是一个基于 HTTP 协议的架构风格,它使用了一组定义明确的方法和动作来操作网络上的资源。Java Jersey 是一个用于构建 RESTful Web 服务的开源框架,它提供了一套简单的 API,可以帮助开发者快速创建和部署 RESTful Web 服务。
本教程将使用 Java Jersey 构建一个简单的银行系统案例,展示如何使用该框架创建和管理 RESTful Web 服务。
创建一个名为 "bank" 的数据库,并执行以下 SQL 命令来创建 "accounts" 表:
CREATE TABLE accounts (id int AUTO_INCREMENT,name VARCHAR(255) NOT NULL,balance DECIMAL(10, 2) NOT NULL,PRIMARY KEY (id));
创建一个名为 Account.java 的实体类来表示数据库中的账户:
import javax.persistence.;@Entity@Table(name = "accounts")public class Account {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Integer id;@Column(name = "name", nullable = false)private String name;@Column(name = "balance", nullable = false)private Double balance;// 省略 getter 和 setter 方法}
创建一个名为 AccountDao.java 的 DAO 接口来定义对数据库的操作:
import java.util.List;public interface AccountDao {List findAll();Account findById(Integer id);void create(Account account);void update(Account account);void delete(Integer id);}
创建一个名为 AccountDaoImpl.java 的类来实现 AccountDao 接口:
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import java.util.List;public class AccountDaoImpl implements AccountDao {@PersistenceContextprivate EntityManager entityManager;@Overridepublic List findAll() {return entityManager.createQuery("SELECT a FROM Account a", Account.class).getResultList();}@Overridepublic Account findById(Integer id) {return entityManager.find(Account.class, id);}@Overridepublic void create(Account account) {entityManager.persist(account);}@Overridepublic void update(Account account) {entityManager.merge(account);}@Overridepublic void delete(Integer id) {Account account = entityManager.find(Account.class, id);entityManager.remove(account);}}
创建一个名为 AccountService.java 的类来定义 RESTful Web 服务端点:
import javax.inject.Inject;
import javax.ws.rs.;
import javax.ws.rs.core.MediaType;@Path("/accounts")public class AccountService {@Injectprivate AccountDao accountDao;@GET@Produces(MediaType.APPLICATION_JSON)
public List getAllAccounts() {return accountDao.findAll();}@GET@Path("/{id}")@Produces(MediaType.APPLICATION_JSON)public Account getAccountById(@PathParam("id") Integer id) {return accountDao.findById(id);}@POST@Consumes(MediaType.APPLICATION_JSON)public void createAccount(Account account) {accountDao.create(account);}@PUT@Path("/{id}")@Consumes(MediaType.APPLICATION_JSON)public void updateAccount(@PathParam("id") Integer id, Account account) {account.setId(id);accountDao.update(account);}@DELETE@Path("/{id}")public void deleteAccount(@PathParam("id") Integer id) {accountDao.delete(id);}}
在 web.xml 文件中配置 Jersey servlet:
jersey-servlet org.glassfish.jersey.servlet.ServletContainer jersey.config.server.provider.packages com.example.jersey.bank.system.resource 1 jersey-servlet /api/
启动应用程序并在浏览器中打开。您应该会看到所有账户的 JSON 表示。
通过本教程,您已经了解了如何使用 Java Jersey构建一个简单的 RESTful 银行系统,包括创建实体类、实现 DAO 接口、定义 RESTful Web 服务端点以及进行配置。这个案例可以作为您构建更复杂的 RESTful Web 服务的起点。
本文地址:https://www.qianwe.com/article/2fad22b677ea55c675b5.html