通过url访问web----android 代码学习

13 篇文章 0 订阅

这是一个实现在客户端登陆的例子 代码来源http://www.oschina.net/code/snippet_203635_8869

内容包含:HttpURLConnection,Alertdialog对话框,mvc设计,url传递参数




服务器端代码:

package com.edu.qufu.dinner.servlet;
 
import java.io.IOException;
import java.io.PrintWriter;
 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
public class LoginServlet extends HttpServlet{
      protected void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,
      IOException{
          String username = request.getParameter("username");//从request中获得名字we“username”的数据
          String password = request.getParameter("password");//从request中获取名字为“password”的数据
          System.out.println(username+":"+password);
          response.setContentType("text/html");         //设置响应数据的属性,类型
          response.setCharacterEncoding("utf-8");       //设置响应数据的属性,编码方式
          PrintWriter out = response.getWriter();      //http://www.cnblogs.com/xiaoqv/archive/2012/05/14/2500725.html
          String msg = null;
          if(username != null && username.equals("antkingwei") && password != null && password.equals("123")){
           //<span style="color:#FF0000;">为什么要判断username与password为空?只判断username是antkingwei,password是123不就行了吗?</span>
                 msg="登录成功";
          }
          else {
              msg = "登录失败";
          }
          out.print(msg);                        //http://www.cnblogs.com/xiaoqv/archive/2012/05/14/2500725.html  向客户端或浏览器写msg
          out.flush();
          out.close();
           
      }
      protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{
          doGet(request,response);
      }
}



我这菜鸟了解一下servlet,看一些文件的结构

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <display-name></display-name>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
    <servlet>
  <servlet-name>FoodServlet</servlet-name>
  <servlet-class>com.edu.qufu.dinner.servlet.FoodServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  <servlet-name>FoodServlet</servlet-name>
  <url-pattern>/FoodServlet</url-pattern>
  </servlet-mapping>
    <servlet>
  <servlet-name>LoginServlet</servlet-name>
  <servlet-class>com.edu.qufu.dinner.servlet.LoginServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  <servlet-name>LoginServlet</servlet-name>
  <url-pattern>/LoginServlet</url-pattern>
  </servlet-mapping>
</web-app>


android客户端代码

package com.android.antking.http.url.connection;
 
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
 
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
 
public class LoginActivity extends Activity {
    //声明用到的组件
    private Button login,cancel;
    private EditText userName,userPassword;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        //事例画所有控件
        login = (Button)this.findViewById(R.id.yes);
        cancel = (Button)this.findViewById(R.id.no);
        userName = (EditText)this.findViewById(R.id.username);
        userPassword = (EditText)this.findViewById(R.id.userpassword);
        //给按钮添加监听事件
          //----------------------------------------------------------------------------------------------
         login.setOnClickListener(onClickListenr);//要注册监听器 
        cancel.setOnClickListener(onClickListenr);
         
    }
    /**
     * 按钮监听类,处理按钮事件
     */
    private View.OnClickListener onClickListenr = new View.OnClickListener() {
         
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            if(v.getId()==R.id.yes){
                String nameString = userName.getText().toString();
                String password = userPassword.getText().toString();
                login(nameString,password);
            }
            if(v.getId()==R.id.no){
                LoginActivity.this.finish();
            }
        }
    };
         //---------------------------------------------------------------------------------------------------------------
      /**
     * 自定义一个消息提示窗口
     * @param msg
     */
    private void showDialog(String msg){
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setMessage(msg).setCancelable(false).setPositiveButton("确定",  //对话框内容msg,没有取消按钮,有确定按钮,确定按钮文字为“确定”
                new DialogInterface.OnClickListener() {
                     
                    @Override
                    public void onClick(DialogInterface dialog, int id) {
                        // TODO Auto-generated method stub
                         
                    }
                });
        AlertDialog alert = builder.create();   //这里才是创建一个对话框对象
        alert.show();
    }
    private void login(String username,String password){
        //要访问的HttpServlet
        String urlStr="http://192.168.1.100:8080/DinnerClick/LoginServlet?";     //<span style="color:#FF0000;">Url中路径与数据的结构?如何解析路径中的数据?</span>
        //要传递的数据
        String query = "username="+username+"&password="+password;
        urlStr+=query;
        try{
        URL url =new URL(urlStr);
        //获得连接
        HttpURLConnection conn = (HttpURLConnection)url.openConnection();
        if(true){
            //获得输入流
            InputStream in = conn.getInputStream();  //从服务器端得到数据
            //创建一个缓冲字节数
            byte[] buffer = new byte[in.available()];    
            //在输入流中读取数据并存放到缓冲字节数组中
            in.read(buffer);
            //将字节转换成字符串
            String msg = new String(buffer);
            showDialog(msg);        //数据库中的msg
            in.close();//关闭数据流
        }
        else{
            //否则就关闭连接
            conn.disconnect();
            showDialog("连接失败");
        }
        }catch(Exception e){
            showDialog(e.getMessage());
        }
    }
}


看到这里也许也可以对mvc模式有一点了解

客户端发送请求(一个特定的路经或者jsp)————》servlet中有该jsp对应的方法————》调用对应的方法


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值