簡體   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