<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    我的漫漫程序之旅

    專注于JavaWeb開發
    隨筆 - 39, 文章 - 310, 評論 - 411, 引用 - 0
    數據加載中……

    [原創]J2ME/J2EE實現用戶登錄交互

    實現功能:
    用手機客戶端進行登錄服務器,然后返回消息進行交互.

    服務器代碼:
    LoginServlet:
    package com;

    import java.io.ByteArrayOutputStream;
    import java.io.DataOutputStream;
    import java.io.IOException;
    import java.io.OutputStream;

    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    /*******************************************************************************
     * 
     * 
    @author zdw
     * 
     
    */

    @SuppressWarnings(
    "serial")
    public class LoginServlet extends HttpServlet
    {

        
    public void doGet(HttpServletRequest request, HttpServletResponse response)
                
    throws ServletException, IOException
        
    {
            
    this.doPost(request, response);
        }


        
    public void doPost(HttpServletRequest request, HttpServletResponse response)
                
    throws ServletException, IOException
        
    {
            
    // 得到客戶端傳入的數據(用戶名和密碼)
            String username = request.getParameter("username");
            String password 
    = request.getParameter("password");
            
    // 構建輸出流
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            DataOutputStream dos 
    = new DataOutputStream(baos);
            
    // 邏輯操作(這里寫你的邏輯判斷)
            if ("zdw".equals(username) && "admin".equals(password))
            
    {
                
    // 響應數據
                dos.writeUTF("true");
            }
     else
            
    {
                
    // 響應數據
                dos.writeUTF("false");
            }

            
    //
            byte[] data = baos.toByteArray();
            
    // 設置服務器響應參數
            response.setStatus(HttpServletResponse.SC_OK);
            response.setContentLength(data.length);
            response.setContentType(
    "application/octet-stream");
            OutputStream os 
    = response.getOutputStream();
            os.write(data);
            os.close();
        }


    }


    手機客戶端代碼:
    LoginForm:
    package com;

    import java.io.DataInputStream;
    import java.io.IOException;
    import java.io.OutputStream;

    import javax.microedition.io.Connector;
    import javax.microedition.io.HttpConnection;
    import javax.microedition.lcdui.Alert;
    import javax.microedition.lcdui.AlertType;
    import javax.microedition.lcdui.Command;
    import javax.microedition.lcdui.CommandListener;
    import javax.microedition.lcdui.Display;
    import javax.microedition.lcdui.Displayable;
    import javax.microedition.lcdui.Form;
    import javax.microedition.lcdui.TextField;
    import javax.microedition.midlet.MIDlet;
    import javax.microedition.midlet.MIDletStateChangeException;

    /**
     * 用Http方式與服務器交互
     * 
     * 
    @author zdw
     * 
     
    */

    public class LoginForm extends MIDlet implements CommandListener
    {
        
    private Form form = null;
        
    private Display display = Display.getDisplay(this);;
        
    private Command login = null;
        
    private Command exit = null;
        
    private TextField username = null;
        
    private TextField password = null;
        
    private Alert alert = null;
        
    private Alert error = null;

        
    public LoginForm()
        
    {
            form 
    = new Form("用戶登錄");
            display.setCurrent(form);
            login 
    = new Command("登錄", Command.SCREEN, 1);
            exit 
    = new Command("退出", Command.EXIT, 1);
            form.addCommand(login);
            form.addCommand(exit);

            username 
    = new TextField("用戶名"""20, TextField.ANY);
            password 
    = new TextField("密碼"""20, TextField.PASSWORD);

            form.append(username);
            form.append(password);
            form.setCommandListener(
    this);
        }


        
    public void initAlertOK()
        
    {
            alert 
    = new Alert("提示""登錄成功!!\r\n您的用戶名為:" + username.getString()
                    
    + "\r\n密碼為:" + password.getString(), null, AlertType.INFO);
            alert.setTimeout(Alert.FOREVER);
            display.setCurrent(alert);
        }


        
    public void initAlertError()
        
    {
            error 
    = new Alert("提示""登錄失敗,用戶名或密碼錯誤"null, AlertType.ERROR);
            display.setCurrent(error);
        }


        
    protected void startApp() throws MIDletStateChangeException
        
    {

        }


        
    /**
         * 事件處理
         
    */

        
    public void commandAction(Command cmd, Displayable dis)
        
    {
            
    // 點擊退出按鈕事件
            if (cmd.getCommandType() == Command.EXIT)
            
    {
                System.out.println(
    "exit");
                
    this.notifyDestroyed();
            }

            
    if (cmd == login)
            
    {
                
    // 必須開啟獨立線程來處理Http請求,否則會造成死鎖
                new Thread(new Runnable()
                
    {
                    
    public void run()
                    
    {
                        
    try
                        
    {
                            inTurnServer();
                        }
     catch (Exception e)
                        
    {
                            e.printStackTrace();
                        }

                    }

                }
    ).start();

            }

        }


        
    /***************************************************************************
         * 與服務器交互相關代碼
         
    */

        
    public void inTurnServer()
        
    {
            
    try
            
    {
                
    // 服務器請求地址
                String url = "http://localhost:8888/LoginWeb/LoginServlet";
                
    // 用戶輸入的用戶名
                String username = this.username.getString();
                
    // 用戶輸入的密碼
                String password = this.password.getString();
                
    // 用url建立一個Http連接(安全的)
                HttpConnection conn = (HttpConnection) Connector.open(url);
                
    // 設置請求類型為POST
                conn.setRequestMethod(HttpConnection.POST);
                
    // 設置一般的請求屬性
                conn.setRequestProperty("Content-Type",
                        
    "application/x-www-form-urlencoded");
                conn.setRequestProperty(
    "User-Agent",
                        
    "Profile/MIDP-1.0 Configuration/CLDC-1.0");
                conn.setRequestProperty(
    "Content-Language""en-US");
                conn.setRequestProperty(
    "Accept""application/octet-stream");
                conn.setRequestProperty(
    "Connection""close");

                
    // 要發送的數據
                String formData = "username=" + username + "&password=" + password;
                
    // 轉換顯字節流
                byte[] data = formData.getBytes();
                
    // 設置寫入流的長度
                conn.setRequestProperty("Content-Length", Integer
                        .toString(data.length));
                OutputStream os 
    = conn.openOutputStream();
                os.write(data);
                os.close();
                
    // 得到Http響應代碼
                int rc = conn.getResponseCode();
                
    // 正常響應
                if (rc == HttpConnection.HTTP_OK)
                
    {
                    
    // 構建輸入流
                    DataInputStream dism = new DataInputStream(conn
                            .openInputStream());
                    
    // 讀取服務器返回的字節流
                    String result = dism.readUTF();
                    dism.close();
                    
    // 判斷
                    if (result.equals("true"))
                    
    {
                        
    // 顯示登錄成功
                        this.initAlertOK();
                    }

                    
    if (result.equals("false"))
                    
    {
                        
    // 顯示登錄失敗
                        this.initAlertError();
                        
    // 將輸入框置空
                        this.username.delete(0this.username.getString().length());
                        
    this.password.delete(0this.password.getString().length());
                    }

                }

            }
     catch (IOException e)
            
    {
                e.printStackTrace();
            }

        }


        
    protected void destroyApp(boolean arg0) throws MIDletStateChangeException
        
    {

        }


        
    protected void pauseApp()
        
    {

        }


    }


    源碼下載:點此下載

    注意此工程為MyEclipse工程,您需要安裝wtk和tomcat才能正常運行此程序.
    登錄圖:

    posted on 2008-06-23 17:41 々上善若水々 閱讀(3428) 評論(9)  編輯  收藏

    評論

    # re: [原創]J2ME/J2EE實現用戶登錄交互[未登錄]  回復  更多評論   

    麻雀雖小,五臟俱全.

    收藏.
    2008-06-23 17:57 |

    # re: [原創]J2ME/J2EE實現用戶登錄交互  回復  更多評論   

    用手機客戶端進行登錄服務器,這個功能真是我工作中要學習的,謝謝。
    2008-06-23 21:58 | DVD比價

    # re: [原創]J2ME/J2EE實現用戶登錄交互  回復  更多評論   

    謝謝不錯的案例
    2008-06-24 07:40 | Java_do

    # re: [原創]J2ME/J2EE實現用戶登錄交互[未登錄]  回復  更多評論   

    在某些情況下username和password可能還需要encoding一下才行
    2008-06-24 09:46 | Gary

    # re: [原創]J2ME/J2EE實現用戶登錄交互[未登錄]  回復  更多評論   

    學習,還有些細節方面的沒看懂!
    2008-06-25 18:54 | 石頭

    # re: [原創]J2ME/J2EE實現用戶登錄交互  回復  更多評論   

    不錯,學習了.
    線程創建那裡,不錯.
    2008-08-14 13:53 | mooring

    # re: [原創]J2ME/J2EE實現用戶登錄交互  回復  更多評論   

    網上關于這方面的內容還真少。謝。
    2008-11-03 17:55 | log

    # re: [原創]J2ME/J2EE實現用戶登錄交互  回復  更多評論   

    看了這個 想在畢業設計中加入 手機客戶端 挺酷的 能不能給一些這方面的資料呀 我的郵箱522315678@qq.com
    2009-03-24 13:29 | 爽哦

    # re: [原創]J2ME/J2EE實現用戶登錄交互  回復  更多評論   

    不錯!感謝樓主你的分享!
    2011-11-15 19:21 | tianyake

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲国产成人高清在线观看| 亚洲偷自拍另类图片二区| 亚洲AV午夜福利精品一区二区| 亚洲AV人人澡人人爽人人夜夜| 亚洲三级中文字幕| 日韩大片免费观看视频播放| 最刺激黄a大片免费网站| 亚洲欧洲一区二区三区| 亚洲五月丁香综合视频| a毛片久久免费观看| 99久久免费中文字幕精品| 又粗又硬免费毛片| 亚洲AV综合色区无码二区偷拍| 麻豆最新国产剧情AV原创免费| 国内精品久久久久久久亚洲| 亚洲欧美国产国产综合一区| 91精品国产免费久久国语蜜臀| 久久精品国产亚洲AV香蕉| 成人A毛片免费观看网站| 国产免费直播在线观看视频| 亚洲乱码日产精品BD在线观看| 99精品视频在线观看免费| 无码专区—VA亚洲V天堂| 国产精品色拉拉免费看| 亚洲av无码成人黄网站在线观看| 免费无码毛片一区二区APP| 亚洲国产最大av| 波多野结衣视频在线免费观看| 91视频免费网站| 亚洲精品午夜在线观看| 久久一本岛在免费线观看2020| 亚洲熟女乱综合一区二区| 爱情岛论坛免费视频| 日本二区免费一片黄2019| 亚洲人成电影网站免费| 亚洲视频在线一区二区| 国产免费不卡视频| 阿v免费在线观看| 日韩亚洲Av人人夜夜澡人人爽| 免费观看一级毛片| 亚洲精品成a人在线观看☆|