我是Java初学者,我将使用java swing制作一个小型地址簿客户端程序。
我的目标是实现3层架构。 (客户端程序中没有sql查询)
最好的办法是什么?
我认为(Java EE) - (XML或JSON) - (MySQL)会是那个,但对初学者来说难道不是很难吗? :)
还有什么可以?
感谢您阅读我的问题!
答案 0 :(得分:1)
取决于您对Java EE的意思(J2EE是1999年份的术语 - 请删除“2”。)
您可以使用servlet和JSP编写基于Web的通讯簿。如果你想要一个关系数据库,你可以使用JDBC,但没有它就可以做到。
您应该使您的数据访问层基于接口。这样您就可以在不影响客户的情况下更改实施。
您的UI将是JSP。您将拥有一个前端控制器servlet,它将接受请求,找出如何处理它们,并将响应发送到下一个视图。
答案 1 :(得分:1)
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();
}
}
完整示例
答案 2 :(得分:0)
你说你是Java初学者,你的困境的答案IMO取决于你使用其他语言的经验(以及一般的编程)。 Web应用程序中有很多层,这意味着很多东西都可能出错,所以我认为最好先从简单的东西开始,然后按照自己的方式进行操作。所以...我建议不要在你的第一个应用程序中使用XML,JSON,MVC等。你仍然可以编写一个很棒的应用程序并通过保持一些低技术来学习很多东西,例如使用使用JavaBeans的JSP页面并让bean处理SQL等等。
您可以(并且应该)使用AJAX,MVC架构等继续前进。