标签:android应用 网络编程
一、GET请求(2步)
1.修改实现客户端与服务器通信的LoginToSever.java文件
注释"public String doPost(String name,String psd) "方法(POST请求方法实体),实现一个"public String doGet(String name,String psd)"(GET方法实体)。
...........
- /*doGet方法
- * 作用:实现客户端向服务器发送GET请求*/
- public String doGet(String name,String psd)
- {
- HttpClient httpClient = new DefaultHttpClient(); //客户端实例
- String urlStr=url+"?username="+name+"&psd="+psd; //给UIL装载请求数据
- HttpGet getRequest=new HttpGet(urlStr); //实例化HttpGet,代表Get请求
- try {
-
- HttpResponse response = httpClient.execute(getRequest);//发送Get请求,并获取响应
- if(response.getStatusLine().getStatusCode() == HttpStatus.SC_OK)
- {
- HttpEntity entity=response.getEntity(); //获取响应信息实体
- InputStream is= entity.getContent(); //h.执行HttpEntity的getContent方法,获取对应的输入流
- BufferedReader br = new BufferedReader(new InputStreamReader(is));
-
//i.读取输入流中的内容,并以字符串的形式返回
- String readLine = null;
- while((readLine = br.readLine()) != null )
- {
- result=result+readLine;
- }
- is.close();
- }
- else
- {
- result="error";
- }
- }
- catch (IOException e)
- {
- System.out.println(e.getMessage());
- }
- return result;
- }
.......................
2.LoginActivity.java:客户端界面UI,在子线程中调用LoginToServer的doGet方法
- 创建一个子线程
- new Thread(new Runnable(){
- public void run() {
- LoginToServer login = new LoginToServer();
- String result=login.doGet(userName.getText().toString(), password.getText().toString());
- // String result=login.doPost(userName.getText().toString(), password.getText().toString());
-
- System.out.println(result); //调试:打印服务器返回的结果,测试是否通信成功
-
- Message msg=new Message();
- msg.obj=result; //将响应信息保存到obj中
- myHandler.sendMessage(msg);
- }
- }).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
- package com.jiangdongguo.login;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.SQLException;
- import com.mysql.jdbc.PreparedStatement;
- import com.mysql.jdbc.ResultSet;
- /*访问数据库工具类:获取数据库链接*/
- public class DBUtil {
- private String dbName = "ServerDatabase"; //数据库名
- private String url="jdbc:mysql://localhost:3306/"+dbName;//url
- private String user="root"; //MySQL数据库账户名
- private String psd="111111"; //账户密码
-
- private PreparedStatement ps; //jdbc编程
- private ResultSet result;
-
- //获取数据库链接的方法getConn()
- private Connection conn;
- public Connection getConn()
- {
- try {
- Class.forName("com.mysql.jdbc.Driver"); //加载数据库驱动
- conn=DriverManager.getConnection(url,user,psd); //获取数据库链接,传入参数:数据库名称、账户名、密码
- } catch (Exception e) {
- e.printStackTrace();
- }
- return conn;
- }
-
- //查询数据库业务逻辑
- public boolean checkUser(String sql,String[] args)
- {
- boolean flag=false;
- conn=getConn(); //获得数据库链接
- try {
- ps=(PreparedStatement) conn.prepareStatement(sql);
- if(args!=null) //对sql语句每个占位符赋值
- {
- for(int i=0;i<args.length;i++)
- ps.setString(i+1, args[i]);
- result=(ResultSet) ps.executeQuery();
- if(result.next())
- {
- flag=true;
- }
- }
- } catch (SQLException e) {
- e.printStackTrace();
- }
- return flag;
- }
- }
(3)编写相应的增删查改的SQL语句,执行操作获取结果;
MyEclipse......src\....\LoginServlet.java
- package com.jiangdongguo.login;
- 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 {
- public void doGet(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
-
- response.setContentType("text/html"); //设置返回类型为网页形式
- PrintWriter out = response.getWriter(); //输出
- String name = request.getParameter("username"); //获取请求传入的参数-用户名信息
- String psd = request.getParameter("psd"); // -密码
- System.out.println("username="+name+"psd="+psd);
-
- //使用MySql数据库
- DBUtil dbUtil = new DBUtil();
- boolean result=dbUtil.checkUser("select * from users where user_name=? and user_psd=?", new String[]{name,psd});
- out.print(result);
- // if("j".equals(name)&&"1".equals(psd)) //与服务器数据做对比,并返回响应信息
- // {
- // out.print(true);
- // }
- // else
- // {
- // out.print(false);
- // }
- }
-
- public void doPost(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- this.doGet(request, response);
- }
- }
4.测试
(1)使用Tomcat测试Java web应用
(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