实例介绍
【实例简介】
实现的功能:通过Android客户端访问web服务器,实现一个登录功能,判断用户输入的用户名与密码是否与数据库的一致。
使用技术:服务端:Struts2 javabean servlet(struts2的)
客户端:Android 4.0.2
数据库:MySQL
数据传输:Json
使用说明:
1、利用MySQL新建数据库,建数据表:usermsg,有两个属性:username、password,字段类型为varchar;
2、将数据库名、用户名、密码,依次写入文件GetConn.java(位于\json-struts-android-mysql代码文件\服务端\JsonWeb\src\com\dongzi\db)的"connection=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/此处填DB名","DB帐号","DB密码");"
3、如果表名和属性不按第一步建,则要改UserDaoImp.java(位于\json-struts-android-mysql代码文件\服务端\JsonWeb\src\com\dongdbimp)的"PreparedStatement ps=conn.prepareStatement("select * from usermsg where username=? and password=?");"
4、利用MyEclipse导入工程(JsoWeb),步骤大概是file\import
5、利用带有Android SDK的Eclipse导入JsonAndroid,该版本为Google API 16.
【实例截图】
【核心代码】
package com.example.jsonandroid; import java.io.IOException; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.util.EntityUtils; import org.json.JSONException; import org.json.JSONObject; import android.app.Activity; import android.app.AlertDialog; import android.app.AlertDialog.Builder; import android.content.DialogInterface; import android.os.Bundle; import android.os.StrictMode; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; public class MainActivity extends Activity { /** Called when the activity is first created. */ //模拟器自己把自己当成localhost了,服务器应该为10.0.2.2 private static String url="http://10.0.2.2:8080/JsonWeb/login.action?"; private final String url_constant="http://10.0.2.2:8080/JsonWeb/login.action?"; private EditText txUserName; private EditText txPassword; private Button btnLogin; @Override public void onCreate(Bundle savedInstanceState) { ///在Android2.2以后必须添加以下代码 //本应用采用的Android4.0 //设置线程的策略 StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder() .detectDiskReads() .detectDiskWrites() .detectNetwork() // or .detectAll() for all detectable problems .penaltyLog() .build()); //设置虚拟机的策略 StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder() .detectLeakedSqlLiteObjects() //.detectLeakedClosableObjects() .penaltyLog() .penaltyDeath() .build()); super.onCreate(savedInstanceState); //设置页面布局 setContentView(R.layout.main); //设置初始化视图 initView(); //设置事件监听器方法 setListener(); } /** * 创建初始化视图的方法 */ private void initView() { btnLogin=(Button)findViewById(R.id.btnLogin); txUserName=(EditText)findViewById(R.id.UserName); txPassword=(EditText)findViewById(R.id.textPasswd); } /** * 设置事件的监听器的方法 */ private void setListener() { btnLogin.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String userName=txUserName.getText().toString(); Log.v("userName = ", userName); String password=txPassword.getText().toString(); Log.v("passwd = ",password); loginRemoteService(userName,password); } }); } /** * 获取Struts2 Http 登录的请求信息 * @param userName * @param password */ public void loginRemoteService(String userName,String password){ String result=null; try { //创建一个HttpClient对象 HttpClient httpclient = new DefaultHttpClient(); //远程登录URL //下面这句是原有的 //processURL=processURL "userName=" userName "&password=" password; url= url_constant "userName=" userName "&password=" password; Log.d("远程URL", url); //创建HttpGet对象 HttpGet request=new HttpGet(url); //请求信息类型MIME每种响应类型的输出(普通文本、html 和 XML,json)。允许的响应类型应当匹配资源类中生成的 MIME 类型 //资源类生成的 MIME 类型应当匹配一种可接受的 MIME 类型。如果生成的 MIME 类型和可接受的 MIME 类型不 匹配,那么将 //生成 com.sun.jersey.api.client.UniformInterfaceException。例如,将可接受的 MIME 类型设置为 text/xml,而将 //生成的 MIME 类型设置为 application/xml。将生成 UniformInterfaceException。 request.addHeader("Accept","text/json"); //获取响应的结果 HttpResponse response =httpclient.execute(request); //获取HttpEntity HttpEntity entity=response.getEntity(); //获取响应的结果信息 String json =EntityUtils.toString(entity,"UTF-8"); //JSON的解析过程 if(json!=null){ JSONObject jsonObject=new JSONObject(json); result=jsonObject.get("message").toString(); } if(result==null){ json="登录失败请重新登录"; } //创建提示框提醒是否登录成功 AlertDialog.Builder builder=new Builder(MainActivity.this); builder.setTitle("提示") .setMessage(result) .setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }).create().show(); } catch (ClientProtocolException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
标签: 注册登录
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论