我真的需要服务层吗?

我的Web应用程序是使用Spring MVC + Hibernate编写的。 我的模型是“客户”实体POJO。 我有一个DAO对象“CustomerDAO”,它的方法“saveCustomer(c)”包含与Hibernate交互的代码; 然后我创建了一个“ CustomerService with”saveCustomer(c)“方法,只需将客户对象传递给dao进行保存; 最后有“CustomerController”和customer.jsp,他们负责视图层,jsp的表单字段绑定到控制器端的Customer对象。 控制器调用该服务。 我看到很多应用程序遵循这个(最佳)实践,但我想知道为什么我需要一个服务层。 也许它对解耦目的很有用:我可以向控制器展示一个通用的外观并注入服务HibernateDAO,GaeDAO,MyDAO等等……但是我也可以在没有服务的情况下做到这一点:使用接口。 我也考虑过:validation。 我将在服务中进行客户validation,但是……在Spring控制器中进行validation会更加方便。 请帮我理解这个概念:)

使用PAHO订阅和读取MQTT消息

我正在使用paho来发送和接收mqtt消息。 到目前为止,发送消息没有问题,我通过使用mosquitto接收它们。 现在我想通过使用java客户端阅读消息,我注意到有关接收消息的文档较少。 我实现了MqttCallback接口,但我仍然无法弄清楚如何阅读我订阅的主题的消息。 这是我的源代码到目前为止,我可以使用mosquitto_sub阅读消息。 import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken; import org.eclipse.paho.client.mqttv3.MqttCallback; import org.eclipse.paho.client.mqttv3.MqttClient; import org.eclipse.paho.client.mqttv3.MqttException; import org.eclipse.paho.client.mqttv3.MqttMessage; public class PahoDemo implements MqttCallback { MqttClient client; MqttClient subClient; public PahoDemo() { } public static void main(String[] args) { new PahoDemo().doDemo(); } public void doDemo() { try { client = new MqttClient(“tcp://192.168.118.11:1883”, “Sending”); subClient = new MqttClient(“tcp://192.168.118.11:1883”, “Subscribing”); client.connect(); […]

尝试在java中使用Jackson时出现问题

我正在尝试使用Jackson将一些JSON数据转换为Java对象,这是一个精确的对象列表,但是我收到了这个错误: org.codehaus.jackson.map.JsonMappingException:无法从START_ARRAY标记反序列化entitylayer.Detail的实例 这是代码: ObjectMapper mapper = new ObjectMapper(); List lcd = (List) mapper.readValue(ld, Detail.class); ld是Json格式的列表,这是让我在jackson教程中融入的部分。 新文件(“user.json”)代表什么? 我假设那是我想要转换的json格式的字符串,这就是我使用ld的原因。 我希望你能帮助我

Javamultithreadingprimefaces引用赋值

我有一个缓存,我使用simeple HashMap实现。 喜欢 – HashMap cache = new HashMap(); 大多数时候使用此缓存从中读取值。 我有另一个方法重新加载缓存,在这个方法内部我基本上创建一个新的缓存,然后分配引用。 据我所知,对象引用的赋值是Java中的Atomic。 public class myClass { private HashMap cache = null; public void init() { refreshCache(); } // this method can be called occasionally to update the cache. public void refreshCache() { HashMap newcache = new HashMap(); // code to fill up the new cache […]

即使httpCon.setRequestMethod(“GET”),HttpURLConnection也会发送POST请求; 已设定

这是我的代码: String addr = “http://172.26.41.18:8080/domain/list”; URL url = new URL(addr); HttpURLConnection httpCon = (HttpURLConnection) url.openConnection(); httpCon.setDoOutput(true); httpCon.setDoInput(true); httpCon.setUseCaches(false); httpCon.setAllowUserInteraction(false); httpCon.setRequestMethod(“GET”); httpCon.addRequestProperty(“Authorization”, “Basic YWRtaW4fYFgjkl5463”); httpCon.connect(); OutputStreamWriter out = new OutputStreamWriter(httpCon.getOutputStream()); System.out.println(httpCon.getResponseCode()); System.out.println(httpCon.getResponseMessage()); out.close(); 我在回应中看到了什么: 500服务器错误 我打开我的httpCon var,以及我看到的内容: POST / rest / platform / domain / list HTTP / 1.1 为什么即使我使用了httpCon.setRequestMethod(“GET”);它也设置为POST httpCon.setRequestMethod(“GET”); 把它设置为GET?

java.io.StreamCorruptedException:类型代码无效:AC

我试图从文件中读取一些对象。 代码在第一次迭代时工作正常,在第二次迭代时,它产生StreamCorruptedException。 这是我的代码, private ArrayList cheques = null; ObjectInputStream ois = null; try { cheques = new ArrayList(4); ois = new ObjectInputStream(new FileInputStream(“src\\easycheque\\data\\Templates.dat”)); Object o = null; try { o = ois.readObject(); int i=1; while (o != null) { cheques.add((Cheque) o); System.out.println(i++); // prints the number of the iteration o = ois.readObject(); // exception occurs […]

为什么“实现Runnable”比“extends Thread”更受欢迎?

Java Thread本身实现了Java Runnable ! 并且根据Internet上的大多数专家, 实现Runnable比扩展Thread更受欢迎 ! 即使我们不能在Thread类的线程意义上使用Runnable ! 那么为什么我们更喜欢在扩展Thread上实现Runnable ,因为在这两种情况下都通过调用Thread实现的方法(即start()或run() )来声明实际线程,尽管在Thread情况下我们并没有真正“扩展”function通过仅覆盖run()方法的Thread ? 如果我听起来很混乱,我道歉……

JBoss AS 7 JMX控制台

我今天花了一些时间查看JBoss AS7 。 到目前为止我看到的东西给我留下了深刻印象,但我注意到好的’JMX-Console不再存在。 有谁知道为什么它被遗漏了? 我知道我可以通过JConsole,MC4J等进行连接,但有没有替代方案可以提供对已部署MBean的基于Web的访问?

如何在liferay中使用自动登录?

我想从我们的应用程序中自动登录我的用户。 我知道liferay有一个自动登录function,但我不知道如何使用它。 我在网上找不到很多有价值的信息。 我需要做些什么来使自动登录工作? 我想在用户点击链接时自动登录,无需输入姓名和密码。 名称和密码保存在我们的应用程序数据库中。

在哪里放置Spark Web Framework的静态文件?

尝试使用Spark Web框架提供静态文件时,我在哪里放置文件? 我无法在网上找到任何东西 – 我开始怀疑我对Eclipse和Java项目的类路径,相对路径等一无所知。 关于Spark中静态文件的这一段是指/public ,但我不知道它会在哪里。 使用Windows,Eclipse Luna和我的项目转换为使用Maven。 我已经尝试过在GitHub上查看代码了,但是我有点想要找到它。