码迷,mamicode.com
首页 > 数据库 > 详细

04.Http协议之GET请求与访问MySQL数据库

时间:2015-04-20 15:00:19      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:android应用   网络编程   

转载请标明出处:http://blog.csdn.net/u012637501
一、GET请求(2步)
1.修改实现客户端与服务器通信的LoginToSever.java文件
    注释"public String doPost(String name,String psd)  "方法(POST请求方法实体),实现一个"public String doGet(String name,String psd)"(GET方法实体)。
        ...........
  1. /*doGet方法 
  2.  * 作用:实现客户端向服务器发送GET请求*/  
  3. public String doGet(String name,String psd)  
  4. {  
  5.     HttpClient httpClient = new DefaultHttpClient();                       //客户端实例  
  6.     String urlStr=url+"?username="+name+"&psd="+psd;            //给UIL装载请求数据  
  7.     HttpGet getRequest=new HttpGet(urlStr);                                 //实例化HttpGet,代表Get请求  
  8.     try {  
  9.           
  10.         HttpResponse response = httpClient.execute(getRequest);//发送Get请求,并获取响应  
  11.         if(response.getStatusLine().getStatusCode() == HttpStatus.SC_OK)  
  12.         {  
  13.             HttpEntity entity=response.getEntity();                             //获取响应信息实体  
  14.             InputStream is= entity.getContent();                            //h.执行HttpEntity的getContent方法,获取对应的输入流  
  15.             BufferedReader br = new BufferedReader(new InputStreamReader(is));
  16.                                                                                                //i.读取输入流中的内容,并以字符串的形式返回        
  17.             String readLine = null;  
  18.             while((readLine = br.readLine()) != null )  
  19.             {  
  20.                     result=result+readLine;  
  21.             }  
  22.             is.close();  
  23.         }  
  24.         else  
  25.         {  
  26.             result="error";  
  27.         }  
  28.     }  
  29.     catch (IOException e)   
  30.     {  
  31.         System.out.println(e.getMessage());  
  32.     }  
  33.     return result;    
         .......................  
2.LoginActivity.java:客户端界面UI,在子线程中调用LoginToServer的doGet方法

  1. 创建一个子线程  
  2.                 new Thread(new Runnable(){  
  3.                     public void run() {  
  4.                         LoginToServer login = new LoginToServer();  
  5.                        String result=login.doGet(userName.getText().toString(), password.getText().toString());
  6.                    //     String result=login.doPost(userName.getText().toString(), password.getText().toString());  
  7.                           
  8.                         System.out.println(result); //调试:打印服务器返回的结果,测试是否通信成功      
  9.                           
  10.                         Message msg=new Message();  
  11.                         msg.obj=result; //将响应信息保存到obj中  
  12.                         myHandler.sendMessage(msg);  
  13.                     }             
  14.                 }).start();  

3.客户端与服务器通信测试
(1)启动Tomcat,打开MyEclipse中的Servlet应用;
(2)在Eclipse中启动客户端app,输入请求数据,测试客户端与服务器是否能通信;
    另外,如果客户端与服务器通信成功,Tomcat窗口也会显示客户端传送过来的数据。
技术分享技术分享

二、MySQL数据库使用
1.安装MySQL数据库
    MySQL是一个小型关系型数据库管理系统,MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。
2.创建服务器MySQL数据库
(1)CMD命令行启动:jiangdongguo>mysql -uroot -p
(2)创建服务器数据库
◆库名ServerDatabase:
    mysql> create database ServerDatabase;
    mysql> use ServerDatabase;
◆表名users:
    mysql> drop table if exists users;
    mysql> create table users(
           -> user_id int primary key auto_increment,
           -> user_name varchar(20) not null default ‘‘,
           -> user_psd varchar(20) not null default 0  )charset utf8;
技术分享
技术分享
◆向users表中插入数据
    mysql> insert into users(user_name,user_psd) values (‘jiang‘,‘111‘);
    mysql> insert into users(user_name,user_psd) values (‘dong‘,‘222‘);
    mysql> insert into users(user_name,user_psd) values (‘guo‘,‘333‘);
技术分享
技术分享
3.关联MySQL数据库到Java Web应用(Servlet项目)
(1)添加数据库jar包到Servlet项目
    添加数据库相应的jar包,即连接数据库的驱动(mysql-connecttor-java-3.1.11-bin.java)到Java Web应用(Servlet项目)下放在WebRoot\WEB-INF\lib文件夹下; 
技术分享  技术分享
(2)添加一个数据库工具类DBUtil.java到Servlet项目
◆加载驱动:Class.forName(“com.mysql.jdbc.Driver”);//加载驱动  
◆获取数据库连接  
    String url = “jdbc:mysql://localhost:3306/数据库名";      
    conn = DriverManager.getConnection(url, “Mysql用户名”,”Mysql密码”);  
◆捕获异常处理;     
◆添加解析SQL语句,与数据库交互模块 (PrepareStatement、ResultSet)
MyEclipse......src\....\DBUtil.java
  1. package com.jiangdongguo.login;  
  2. import java.sql.Connection;  
  3. import java.sql.DriverManager;  
  4. import java.sql.SQLException;  
  5. import com.mysql.jdbc.PreparedStatement;  
  6. import com.mysql.jdbc.ResultSet;  
  7. /*访问数据库工具类:获取数据库链接*/  
  8. public class DBUtil {  
  9.     private String dbName = "ServerDatabase";   //数据库名  
  10.     private String url="jdbc:mysql://localhost:3306/"+dbName;//url  
  11.     private String user="root";                 //MySQL数据库账户名  
  12.     private String psd="111111";                //账户密码  
  13.       
  14.     private PreparedStatement ps;   //jdbc编程  
  15.     private ResultSet result;  
  16.       
  17.     //获取数据库链接的方法getConn()  
  18.     private Connection conn;                      
  19.     public Connection getConn()  
  20.     {         
  21.         try {  
  22.             Class.forName("com.mysql.jdbc.Driver");         //加载数据库驱动  
  23.             conn=DriverManager.getConnection(url,user,psd); //获取数据库链接,传入参数:数据库名称、账户名、密码  
  24.         } catch (Exception e) {  
  25.             e.printStackTrace();  
  26.         }  
  27.         return conn;      
  28.     }  
  29.       
  30.     //查询数据库业务逻辑  
  31.     public boolean checkUser(String sql,String[] args)  
  32.     {  
  33.         boolean flag=false;  
  34.         conn=getConn();     //获得数据库链接  
  35.         try {  
  36.             ps=(PreparedStatement) conn.prepareStatement(sql);  
  37.             if(args!=null)  //对sql语句每个占位符赋值  
  38.             {  
  39.                 for(int i=0;i<args.length;i++)  
  40.                     ps.setString(i+1, args[i]);  
  41.                 result=(ResultSet) ps.executeQuery();  
  42.                 if(result.next())  
  43.                 {  
  44.                     flag=true;  
  45.                 }  
  46.             }  
  47.         } catch (SQLException e) {  
  48.             e.printStackTrace();  
  49.         }         
  50.         return flag;          
  51.     }  
(3)编写相应的增删查改的SQL语句,执行操作获取结果  
MyEclipse......src\....\LoginServlet.java
  1. package com.jiangdongguo.login;  
  2. import java.io.IOException;  
  3. import java.io.PrintWriter;  
  4. import javax.servlet.ServletException;  
  5. import javax.servlet.http.HttpServlet;  
  6. import javax.servlet.http.HttpServletRequest;  
  7. import javax.servlet.http.HttpServletResponse;  
  8. public class LoginServlet extends HttpServlet {  
  9.     public void doGet(HttpServletRequest request, HttpServletResponse response)  
  10.             throws ServletException, IOException {  
  11.   
  12.         response.setContentType("text/html");           //设置返回类型为网页形式  
  13.         PrintWriter out = response.getWriter();         //输出  
  14.         String name = request.getParameter("username"); //获取请求传入的参数-用户名信息  
  15.         String psd = request.getParameter("psd");       //              -密码  
  16.         System.out.println("username="+name+"psd="+psd);  
  17.           
  18.         //使用MySql数据库  
  19.         DBUtil dbUtil = new DBUtil();  
  20.         boolean result=dbUtil.checkUser("select * from users where user_name=? and user_psd=?"new String[]{name,psd});  
  21.         out.print(result);  
  22. //      if("j".equals(name)&&"1".equals(psd))   //与服务器数据做对比,并返回响应信息  
  23. //      {  
  24. //          out.print(true);  
  25. //      }  
  26. //      else  
  27. //      {  
  28. //          out.print(false);  
  29. //      }  
  30.     }  
  31.   
  32.     public void doPost(HttpServletRequest request, HttpServletResponse response)  
  33.             throws ServletException, IOException {  
  34.         this.doGet(request, response);  
  35.     }    
  36. }
4.测试
(1)使用Tomcat测试Java web应用
    在浏览器输入"http://localhost:8080/login/LoginServlet?username=jiang&psd=111",web网页打印"true/false"信息,也可以查看Tomcat窗口,显示"username=jiang,psd=111",则说明Java Web连接MySql数据库成功。
技术分享
技术分享
(2)客户端测试Java web应用
    客户端传输数据分别为"username=jiang psd=111"、"username=dong psd=222"、"username=guo psd=333",若返回true则表示客户端访问服务器的MySql数据库成功,Tomcat窗口也会接收到客户端传输到服务器的数据。
技术分享
技术分享


04.Http协议之GET请求与访问MySQL数据库

标签:android应用   网络编程   

原文地址:http://blog.csdn.net/u012637501/article/details/45149425

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!