爪哇:在客户端和 servlet 之间传递消息的适当方法?
-
22-08-2019 - |
题
我的系统成功地将对象从客户端传递到 servlet。然而它很原始,因为它是为了迎合 Java 1.1 而构建的。它传递的消息对象由一个 int (代表大约七十种类型之一)和一个需要解析的令牌字符串组成(令牌可能包含一个列表、对象列表等)。不好!
所以,我希望将其重构为 Java 1.5。使用枚举而不是整数无疑是一种改进,但我不确定如何发送消息的其余部分。创建七十个不同的类来表示每种类型肯定不是正确的方法。
关于我应该如何重构这个的任何指示?
解决方案
无需创建不同的类来表示每种类型的消息。您可以使用所需的属性创建一个消息类。像这样的东西:
public class Message implements Serializable{
private Long id;
private String msgText;
//other necessary properties
public Message(){
this(0, "default message");
}
public Message(Long id, String msgText){
setId(id);
setMsgText(msgText);
//etc
}
//getters and setters
}
然后您可以根据需要创建对象。例如:
Message m1 = new Message(9, "The Eagle has landed");
//serialize m1 to server
Message m2 = new Message(27, "The Wren has landed");
//serialize m2 to the server
等等。
其他提示
您还可以使用以下方法将对象序列化为 XML 并再次返回对象 流媒体.
第一个问题:为什么你觉得需要做出改变?是否是因为当前系统不支持您计划添加的某些功能?还是只是为了打扫而进去打扫?如果是后者,我强烈建议让睡虫继续撒谎。
第二个问题:我假设这是一个小程序。您会计划使用不同的前端吗?或者将此服务器公开为通用服务?如果没有,那么我回到第一个问题。如果是,那么您几乎肯定希望避免特定于语言的序列化。
如果您计划将其公开为服务,那么遵循一些“标准”服务协议是一个好主意。REST 可能是最简单的 POST-ing XML 有效负载。您也可以使用 SOAP,但我一直认为这样做太过分了。
或者,您可以使用标准 URL 编码的 POST ...这应该比将所有内容都包装在 XML 中更容易实现。
不隶属于 StackOverflow