码迷,mamicode.com
首页 > 移动开发 > 详细

android与javaee通信:登录界面超级简化版

时间:2016-04-16 22:56:33      阅读:266      评论:0      收藏:0      [点我收藏+]

标签:

今天完成了利用android和tomcat服务器完成了简单界面的通信。

主要就是用户输入id和密码,界面显示登录成功还是失败。

昨天完成代码后,尚未来得及调试,今天通过调试,发现了以下几点错误:

1.测试的时候忘了启动tomcat服务器(好吧这是一个很蠢的错误。。)

2.客户端设置的编码格式中的"UTF-8"写成了"UTF_8"(好吧我知道这也很蠢。。。)

3.传送数据的时候服务端返回的数据和客户端接收数据的格式不一致,导致了乱码。

4.试图在新开的用于访问网络的线程中更改客户端显示界面导致错误。

通过调试,成功的解决了这些问题,最后实现了简化登录。实现步骤大致如下:

1》在数据库中建立用户表(我只设置了id,password参数)

技术分享

2》在java ee中新建java类user

技术分享

3>在user中写出获取用户信息的方法以便在servlet中调用(部分代码)

public int findUser(int id,String password) throws ClassNotFoundException, SQLException{
//建立和数据库的链接,查找用户是否存在

Class.forName("com.mysql.jdbc.Driver");

//这里填入信息即可
String dbName = "";
String tableName = "r";
String user = "";
String mysql_password = "i";

String url = "jdbc:mysql://localhost:3306/" + dbName + "?user="
+user + "&password=" + mysql_password;

Connection conn = (Connection) DriverManager.getConnection(url);

//获取数据库数据,执行查询操作
Statement statement = (Statement) conn.createStatement();

String sql = "select * from " + tableName;

ResultSet rs = (ResultSet) statement.executeQuery(sql);

//存在状态量标志,1代表存在,0代表不存在
int exist = 0;

while(rs.next()){
int user_name = rs.getInt(1);
String user_password = rs.getString(2);
if(user_name == id && user_password.equals(password)){
exist = 1;
break;
}

}
return exist;
}

4》新建servlet文件,写入响应及回复代码(部分代码):

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
request.setCharacterEncoding("UTF-8");
response.setContentType("text/json;charset=UTF-8");
String reqMessage,respMessage;
BufferedReader br = new BufferedReader(new InputStreamReader(request.getInputStream(),"UTF-8"));
StringBuffer sb = new StringBuffer("");
String temp;
while((temp = br.readLine()) != null){
sb.append(temp);
}
br.close();

reqMessage = sb.toString();
JSONArray jsonArray = JSONArray.fromObject(reqMessage);
JSONObject data = (JSONObject)jsonArray.get(0);
int user_id = data.getInt("id");
String user_password = data.getString("password");
user u = new user();
int exist = 0;
try {
exist = u.findUser(user_id, user_password);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
PrintWriter pw = response.getWriter();
pw.write(exist+"");
pw.flush();
pw.close();

}

 

至此,服务端的代码就基本完成啦,然后就是客户端的代码了。

客户端的核心代码如下(部分代码):

HttpParams httpParams = new BasicHttpParams();
HttpClient hc = new DefaultHttpClient(httpParams);
String addr = "http://172.16.121.16:8080/xiangyue/loginServlet";
HttpPost hp = new HttpPost(addr);
System.out.println("连接成功!");
System.out.println(reqValue);
try {
hp.setEntity(new StringEntity(reqValue.toString(),"UTF-8"));
HttpResponse hr = hc.execute(hp);

if(hr.getStatusLine().getStatusCode() == 200){
returnValue = EntityUtils.toString(hr.getEntity(),"UTF-8");
System.out.println(returnValue);
if(returnValue.equals("1")){
// System.out.println("登录成功!");
// Toast.makeText(MainActivity.this,"登录成功!",Toast.LENGTH_LONG).show();
exist = 1;
}
else{
// System.out.println("此用户不存在!");
// Toast.makeText(MainActivity.this,"用户名或密码错误!",Toast.LENGTH_LONG).show();
exist = 0;
}
}else{
System.out.println("响应失败!");
}
} catch (UnsupportedEncodingException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} catch (ClientProtocolException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}

 

至此核心代码就完成了,稍微添加界面什么的就可以进行测试了(所需包需全部成功导入,环境配置完成)。如果有什么需要修改优化的地方,望大神指教~

 

android与javaee通信:登录界面超级简化版

标签:

原文地址:http://www.cnblogs.com/wangsihui1996/p/5399563.html

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