首先是客户端

通过输入用户名+密码实现登录

点击登录后向服务器发送http请求 服务器收到请求后验证用户名密码是否与mysql数据库上的相应字段是否一致

然后返回json数据 客户端获取响应的结果 然后提醒是否登录成功

MainActivity代码:

public class MainActivity extends Activity {
    /** Called when the activity is first created. */
 //服务器应该为本地ip
 private static  String url="http://172.20.210.68:8080/CheLianWangServer/login.action?";
 private final String url_constant="http://172.20.210.68:8080/CheLianWangServer/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("login").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();
}
    }
    
}

AndroidManifest.xml中要配置android.permission.INTERNET权限


服务器端

使用springmvc的注解方式解析客户端传来的URL 拿到用户名和密码

如果用户名和密码与mysql数据库上的相应字段一致 则返回json数据给客户端提醒登陆成功

模型层:

private String username;
private String password;

public User(String username, String password) {
super();


this.username = username;
this.password = password;
//this.sex = sex;
//this.age = age;
//this.photo = photo;
}
public User() {
super();
// TODO Auto-generated constructor stub
}


public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}

db层:

public class GetConn {
public Connection getConnection(){
Connection connection = null;
try {
Class.forName("com.mysql.jdbc.Driver");
connection = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/usermsg","root",null);
} catch (Exception e) {
// TODO: handle exception
}

return connection;
}

public void closeConn(Connection connection){

try {
connection.close();
} catch (Exception e) {
// TODO: handle exception
}


}

dbimp:

public boolean Login(String username,String password){
boolean b = false;
GetConn getConn = new GetConn();
ResultSet rs = null;
Connection conn = getConn.getConnection();
try {
PreparedStatement ps = conn.prepareStatement("select * from usermsg where username=? and password=?");
ps.setString(1, username);
ps.setString(2, password);

rs = ps.executeQuery();
if(rs.next()){

b = true;
}else{

b = false;
}

} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return b;
}

Controller:

@Controller  
public class UserController {  

Map json;
byte[] jsonBytes;
@RequestMapping("/login.action")  // 请求url地址映射,类似Struts的action-mapping
public Object Login(HttpServletRequest request, HttpServletResponse response,ModelMap model){
try {
String username = request.getParameter("username");
String password = request.getParameter("password");

System.out.println("<<<<<<<<<<>>>>>>>>>>");
System.out.println("username = "+username+" password = "+password);

json = new HashMap();

UserDaoImp userDaoImp = new UserDaoImp();

boolean b = userDaoImp.Login(username, password);

if(b){
json.put("login", "登陆成功,欢迎光临!"+"尊敬的"+username+"阁下!");

}else{
json.put("login", "用户名或密码错误!");
}

jsonBytes = json.toString().getBytes("utf-8");
response.setContentLength(jsonBytes.length);

response.getOutputStream().write(jsonBytes);

response.getOutputStream().flush();
response.getOutputStream().close();
} catch (Exception e) {
e.printStackTrace();

}

return null;


}

    
}  





更多相关文章

  1. 解决“密钥库文件不存在: debug.keystore”
  2. android dalvik vm oo
  3. Android使用模板生成Word文档并查看
  4. Android(安卓)中对 aar 文件的使用攻略
  5. 【转】java 总结:泛型
  6. Android(安卓)Studio配置javah自动生成头文件
  7. Android(安卓)Studio 打包生成正式apk(XXX-release.apk)的两种方式
  8. Android(安卓)Davlik heap profiling
  9. Android(安卓)O Treble框架

随机推荐

  1. 如何把android项目部署到真实手机上测试
  2. 第三部分:Android 应用程序接口指南---第
  3. 研究显示 iOS 应用比 Android 应用更易崩
  4. android 时间控件概述
  5. Android与iOS的对决
  6. Android应用程序窗口View的创建过程
  7. 系统编译三方apk,out目录有这个apk,但刷机
  8. Android培训班(12)
  9. Android 4.4 以太网网络共享功能研究和实
  10. Android传感器编程实例开发——三轴数据