繁体   English   中英

Android使用现有Web应用程序中的Java Servlet

[英]Android using java servlets from an existing web application

我有一个现有的并且正在运行的Java Web应用程序。 我想使此应用程序在android上原生,并打算继续使用相同的servlet。

我上一次做与服务器通信的android应用程序时,将这样的内容放置在servlet中:

PrintWriter out = response.getWriter(); 
out.print("pass"); 

在android java类中,我会这样做:

String response = null;
    try {
        response = CustomHttpClient.executeHttpPost(
        "http://10.0.2.2/ProjectName/" + "LoginServlet",postParameters);
        String res = response.toString();
                    if(res.equals("pass")
                    {
                        /**do the things i want**/
                    }
               }
               catch(Exception e)
               {
                   e.printStackTrace();
               }

我的Web应用程序中的servlet使用HttpSession并具有如下的调度方法:

HttpSession session = request.getSession();
session.setAttribute("user",user);

和这个:

dispatch(request, response, "/login.jsp");

我将PrintWriter添加到了我的Web应用程序使用的现有servlet失败。 并且此错误是在logcat上产生的:

07-12 08:59:46.344: E/jdwp(487): >>> comparing 'jsp' to 'ers'
07-12 08:59:46.454: E/jdwp(487): >>> comparing 'jsp' to 'nfo'
07-12 08:59:46.524: E/jdwp(487): >>> comparing 'jsp' to 'o$1'
07-12 08:59:46.534: E/jdwp(487): >>> comparing 'jsp' to 'nfo'
07-12 08:59:46.534: E/jdwp(487): >>> comparing 'jsp' to 'o$1'
07-12 08:59:46.594: E/jdwp(487): >>> comparing 'jsp' to 'Key'
07-12 08:59:46.934: E/jdwp(487): >>> comparing 'jsp' to 'ver'
07-12 08:59:47.044: E/jdwp(487): >>> comparing 'jsp' to 'ile'
07-12 08:59:47.334: E/jdwp(487): >>> comparing 'jsp' to 'gin'
07-12 08:59:47.334: E/jdwp(487): >>> comparing 'jsp' to 'nfo'
07-12 08:59:47.354: E/jdwp(487): >>> comparing 'jsp' to 'ame'  
07-12 08:59:47.404: E/jdwp(487): >>> comparing 'jsp' to 'ger'
07-12 08:59:47.404: E/jdwp(487): >>> comparing 'jsp' to 'eme'
07-12 08:59:47.504: E/jdwp(487): >>> comparing 'jsp' to 'ams'

并进行比较。

问题:我是否缺少某些内容,还是应该只创建新的servlet? (我真的希望它不是第二个选择)

编辑

我发现错误是由调度方法产生的,该方法将响应更改为jsp文件而不是文本字符串,并且注释掉调度方法使我可以使用android成功登录服务器。

但是,我想保留调度方法和PrintWriter,以便android应用程序和web应用程序都可以使用相同的单个servlet登录。 无论如何我能做到吗?

经过研究,这个问题的答案似乎是否定的。 无法为Web应用程序和android应用程序使用相同的servlet。 无论两个servlet的内容是否95%相同,都必须创建一个新的servlet。

我目前知道几种可以通过android登录的方法:

1)使用上述out.print方法。 创建PrintWriter对象,并使用该对象执行out.print,并通过android java类中的response.toString()。equals(“ expectedString”)进行检查。

2)cookie,我以为可以用,但是没有,派遣方法仍然受阻。 关于cookie,我仍然很模糊,但是显然您可以将用户信息保留在cookie中,以便在整个应用程序使用过程中对用户进行身份验证。

如果以上任何内容有误,请随时添加答案或纠正我。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM