我试图以一种方式思考,我可以使用相同的方法从 JDO 数据库获取数据并将其打印到所有 3 个平台,但不同之处在于,如果它是浏览器请求,它将在动态网页生成器中打印。但我似乎想不出什么好的方法。
例如,如果浏览器请求发布帖子,它将转到打印动态页面+信息请求的代码。像这样
for (Texto e : results)
{
print = "<table width='100%' border='2' cellspacing='2' cellpadding='2'>"
+ "<tr><td colspan='2'>"
+ results.get(0).titulo
+ ";</td></tr><tr><td colspan='2'>"
+ results.get(0).texto
但是,如果其中一个应用程序要求发布帖子,它只会返回:
for (Texto e : results)
{
resp.getWriter().println("Titulo:"
+ results.get(0).titulo);
resp.getWriter().println("Nome:"
+ results.get(0).nome);
因为它不需要打印到动态网页并从这里获取信息。所以我希望它根据用户平台返回不同的内容。但使用相同的方法调用。
现在我有不同的链接来请求相同的信息,一个链接到网络,一个链接到应用程序(桌面和 Android)。但我正在考虑只为这三个链接提供一个链接。到目前为止我认为
1° 在登录 cookie 中获取有关正在执行请求的平台的信息,并通过两种不同类型在打印方法中执行 if 操作。
2° 或者只是发送一个始终包含该信息的参数并执行 if...等等...
但我认为这种方法确实很简单。
有人对此有任何困难吗?
最佳答案
它通常是通过检查“扩展”和/或请求的 Accept
header 来完成的。例如,对于 /person/profile.html
这样的 url,您将将此数据呈现为 HTML,或者如果 url 为 /person/profile
+ header Accept: application/json
,您将其呈现为 JSON。
您可以对两种方法使用相同的数据,但使用不同的序列化类型。如果您使用“Spring Web”或类似框架,则配置起来很容易。
关于java - 实现 Servlet,用于识别请求者并发送浏览器的动态 html 或仅发送移动/桌面应用程序的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6524942/