我是一名 Java 初学者,打算使用 java swing 制作一个小型通讯录客户端程序。
我的目标是实现 3 层架构。(客户端程序中没有sql查询)
最好的方法是什么?
我认为(Java EE)--(XML 或 JSON)--(MySQL)会是其中之一,但是对于初学者来说是不是太难了?:)
还能是什么?
感谢您阅读我的问题!
我是一名 Java 初学者,打算使用 java swing 制作一个小型通讯录客户端程序。
我的目标是实现 3 层架构。(客户端程序中没有sql查询)
最好的方法是什么?
我认为(Java EE)--(XML 或 JSON)--(MySQL)会是其中之一,但是对于初学者来说是不是太难了?:)
还能是什么?
感谢您阅读我的问题!
取决于 Java EE 的含义(J2EE 是 1999 年的老式术语 - 请去掉“2”。)
您可以使用 servlet 和 JSP 编写基于 Web 的地址簿。如果您想要一个关系数据库,您可以使用 JDBC,但也可以不用它。
您应该使您的数据访问层基于接口。这将使您在不影响客户端的情况下更改实现。
您的 UI 将是 JSP。您将拥有一个前端控制器 servlet,它将接受请求,弄清楚如何处理它们,并将响应发送到下一个视图。
Java EE包含许多可以使构建此类应用程序更容易的技术:
如果这听起来很多,看看你需要写多少代码:
package org.example;
import java.util.List;
import javax.ejb.*;
import javax.persistence.*;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
@Stateless
@LocalBean
@Path("/customers")
public class CustomerService {
@PersistenceContext(unitName="CustomerService",
type=PersistenceContextType.TRANSACTION)
EntityManager entityManager;
@POST
@Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public void create(Customer customer) {
entityManager.persist(customer);
}
@GET
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
@Path("{id}")
public Customer read(@PathParam("id") long id) {
return entityManager.find(Customer.class, id);
}
@PUT
@Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public void update(Customer customer) {
entityManager.merge(customer);
}
@DELETE
@Path("{id}")
public void delete(@PathParam("id") long id) {
Customer customer = read(id);
if(null != customer) {
entityManager.remove(customer);
}
}
@GET
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
@Path("findCustomersByCity/{city}")
public List<Customer> findCustomersByCity(@PathParam("city") String city) {
Query query = entityManager.createNamedQuery("findCustomersByCity");
query.setParameter("city", city);
return query.getResultList();
}
}
完整示例
您说您是 Java 初学者,IMO 困境的答案取决于您对其他语言(以及一般编程)的经验。Web 应用程序中有很多层,这意味着很多事情都可能出错,所以我认为最好从简单的东西开始,然后逐步进行。所以...我建议不要在您的第一个应用程序上对 XML、JSON、MVC 等感到厌烦。您仍然可以编写一个很棒的应用程序并通过保持它的技术含量较低来学习很多东西,例如使用使用 JavaBeans 的 JSP 页面并让 bean 处理 SQL 等。
您可以(并且应该)从那里继续使用 AJAX、MVC 架构等。