java - 实现 Servlet,用于识别请求者并发送浏览器的动态 html 或仅发送移动/桌面应用程序的信息

标签 java google-app-engine servlets jdo multiplatform

我试图以一种方式思考,我可以使用相同的方法从 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/

相关文章:

java - ClientBundle 不加载 ImageResource

google-app-engine - 下载旧版本的 Google App Engine SDK

java - 如何使用 HttpClient 将 XML 文件作为请求传递给我的 Servlet 之一?

java - 为什么 HttpServletRequest 会截断 # 字符上的 url 输入?

java - Servlet 中的线程

java - Android开发中的Button和Androidx.appcompat.widget.AppCompatButton有什么区别?

google-app-engine - 用于 App Engine 网址提取的 Compute Engine 防火墙

java - 如何将键列表与实体关联

Java JPA (EclipseLink) 如何在保留实际实体之前接收下一个 GeneratedValue?

java - 向 TextView 和低速应用程序插入 49.000 个字符