Android客户端向服务器端传值——登录实现(一)
2012-12-04 14:35
465 查看
根据实习科目需求,先完成Android客户端的登录功能。
要实现登录必然涉及到客户端与服务器端的交互,即客户端需要将用户输入的账号和密码传给服务器端,服务器端连接数据库对其进行验证。
细化问题,先研究一下客户端向服务器端传值的方法。。
新建一个web工程,建一个Servlet如下:
[java]
view plaincopyprint?
public class UserServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public UserServlet() {
super();
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String userName=request.getParameter("userName");
String passWord=request.getParameter("passWord");
//在服务器端解决中文乱码问题
userName=NewString.getNewString(userName);
passWord=NewString.getNewString(passWord);
System.out.println("账号:"+userName);
System.out.println("密码:"+passWord);
}
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
}
客户端登录界面如下,布局比较简单。
Activity代码:
[java]
view plaincopyprint?
public class LoginActivity extends Activity { private EditText userName; private EditText passWord; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); userName=(EditText)this.findViewById(R.id.userName); passWord=(EditText)this.findViewById(R.id.passWord); } /** * 用户登录的方法 */ public void login(View v) { //取得用户输入的账号和密码 String name=userName.getText().toString(); String pass=passWord.getText().toString(); boolean result=UserService.check(name,pass); if(result) { Toast.makeText(getApplicationContext(),R.string.success,1).show(); }else { Toast.makeText(getApplicationContext(),R.string.fail,1).show(); } } }
具体实现的工具类:
[java]
view plaincopyprint?
public class UserService {
/**
* 验证用户登录是否合法
* 返回值:请求是否成功
*/
public static boolean check(String name, String pass) {
String path="http://135.32.89.17:8080/lss/UserServlet";
//将用户名和密码放入HashMap中
Map<String,String> params=new HashMap<String,String>();
params.put("userName", name);
params.put("passWord", pass);
try {
return sendGETRequest(path,params,"UTF-8");
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return false;
}
private static boolean sendGETRequest(String path,
Map<String, String> params,String encode) throws MalformedURLException, IOException {
StringBuilder url=new StringBuilder(path);
url.append("?");
for(Map.Entry<String, String> entry:params.entrySet())
{
url.append(entry.getKey()).append("=");
url.append(URLEncoder.encode(entry.getValue(),encode));
url.append("&");
}
//删掉最后一个&
url.deleteCharAt(url.length()-1);
HttpURLConnection conn=(HttpURLConnection)new URL(url.toString()).openConnection();
conn.setConnectTimeout(5000);
conn.setRequestMethod("GET");
if(conn.getResponseCode()==200)
{
return true;
}
return false;
}
}
运行结果:
服务器端接收内容:
总结:
客户端的工具类将用户输入的账号和密码放入HashMap当中,循环遍历取出HashMap中的键和值,构造出形如
http://www.xxx.xxx?key1=value1&key2=value2的字符串。利用该字符串连接服务器,传送相关值。
要实现登录必然涉及到客户端与服务器端的交互,即客户端需要将用户输入的账号和密码传给服务器端,服务器端连接数据库对其进行验证。
细化问题,先研究一下客户端向服务器端传值的方法。。
新建一个web工程,建一个Servlet如下:
[java]
view plaincopyprint?
public class UserServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public UserServlet() {
super();
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String userName=request.getParameter("userName");
String passWord=request.getParameter("passWord");
//在服务器端解决中文乱码问题
userName=NewString.getNewString(userName);
passWord=NewString.getNewString(passWord);
System.out.println("账号:"+userName);
System.out.println("密码:"+passWord);
}
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
}
public class UserServlet extends HttpServlet { private static final long serialVersionUID = 1L; public UserServlet() { super(); } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String userName=request.getParameter("userName"); String passWord=request.getParameter("passWord"); //在服务器端解决中文乱码问题 userName=NewString.getNewString(userName); passWord=NewString.getNewString(passWord); System.out.println("账号:"+userName); System.out.println("密码:"+passWord); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doGet(request, response); } }
客户端登录界面如下,布局比较简单。
Activity代码:
[java]
view plaincopyprint?
public class LoginActivity extends Activity { private EditText userName; private EditText passWord; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); userName=(EditText)this.findViewById(R.id.userName); passWord=(EditText)this.findViewById(R.id.passWord); } /** * 用户登录的方法 */ public void login(View v) { //取得用户输入的账号和密码 String name=userName.getText().toString(); String pass=passWord.getText().toString(); boolean result=UserService.check(name,pass); if(result) { Toast.makeText(getApplicationContext(),R.string.success,1).show(); }else { Toast.makeText(getApplicationContext(),R.string.fail,1).show(); } } }
public class LoginActivity extends Activity { private EditText userName; private EditText passWord; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); userName=(EditText)this.findViewById(R.id.userName); passWord=(EditText)this.findViewById(R.id.passWord); } /** * 用户登录的方法 */ public void login(View v) { //取得用户输入的账号和密码 String name=userName.getText().toString(); String pass=passWord.getText().toString(); boolean result=UserService.check(name,pass); if(result) { Toast.makeText(getApplicationContext(),R.string.success,1).show(); }else { Toast.makeText(getApplicationContext(),R.string.fail,1).show(); } } }
具体实现的工具类:
[java]
view plaincopyprint?
public class UserService {
/**
* 验证用户登录是否合法
* 返回值:请求是否成功
*/
public static boolean check(String name, String pass) {
String path="http://135.32.89.17:8080/lss/UserServlet";
//将用户名和密码放入HashMap中
Map<String,String> params=new HashMap<String,String>();
params.put("userName", name);
params.put("passWord", pass);
try {
return sendGETRequest(path,params,"UTF-8");
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return false;
}
private static boolean sendGETRequest(String path,
Map<String, String> params,String encode) throws MalformedURLException, IOException {
StringBuilder url=new StringBuilder(path);
url.append("?");
for(Map.Entry<String, String> entry:params.entrySet())
{
url.append(entry.getKey()).append("=");
url.append(URLEncoder.encode(entry.getValue(),encode));
url.append("&");
}
//删掉最后一个&
url.deleteCharAt(url.length()-1);
HttpURLConnection conn=(HttpURLConnection)new URL(url.toString()).openConnection();
conn.setConnectTimeout(5000);
conn.setRequestMethod("GET");
if(conn.getResponseCode()==200)
{
return true;
}
return false;
}
}
public class UserService { /** * 验证用户登录是否合法 * 返回值:请求是否成功 */ public static boolean check(String name, String pass) { String path="http://135.32.89.17:8080/lss/UserServlet"; //将用户名和密码放入HashMap中 Map<String,String> params=new HashMap<String,String>(); params.put("userName", name); params.put("passWord", pass); try { return sendGETRequest(path,params,"UTF-8"); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return false; } private static boolean sendGETRequest(String path, Map<String, String> params,String encode) throws MalformedURLException, IOException { StringBuilder url=new StringBuilder(path); url.append("?"); for(Map.Entry<String, String> entry:params.entrySet()) { url.append(entry.getKey()).append("="); url.append(URLEncoder.encode(entry.getValue(),encode)); url.append("&"); } //删掉最后一个& url.deleteCharAt(url.length()-1); HttpURLConnection conn=(HttpURLConnection)new URL(url.toString()).openConnection(); conn.setConnectTimeout(5000); conn.setRequestMethod("GET"); if(conn.getResponseCode()==200) { return true; } return false; } }
运行结果:
服务器端接收内容:
总结:
客户端的工具类将用户输入的账号和密码放入HashMap当中,循环遍历取出HashMap中的键和值,构造出形如
http://www.xxx.xxx?key1=value1&key2=value2的字符串。利用该字符串连接服务器,传送相关值。
相关文章推荐
- 服务器端向Android客户端传值——登录实现(二)
- Android客户端向服务器端传值——登录实现(一)
- 服务器端向Android客户端传值——登录实现(二)
- Android客户端向服务器端传值——登录实现(一)
- 实习日志(13):服务器端向Android客户端传值——登录实现(二)
- 服务器端向Android客户端传值——登录实现(二)
- 实习日志(12):Android客户端向服务器端传值——登录实现(一)
- Android客户端向服务器端传值——登录实现
- Android客户端向服务器端传值——登录实现(一)
- Android项目之无线点餐(2)--用户登录的客户端和服务器端实现
- Android网络编程之——Android登录系统模块的实现(客户端+服务器端Servlet+MySQL)
- Android客户端程序通过Web Service实现对服务器端数据库的查询
- Android客户端从服务器端获取json数据并解析的实现代码
- Android客户端post方式连接web(servlet)服务器实现简单登录
- Android客户端实现注册/登录详解(二)
- android客户端向服务器端验证登陆方法的实现1
- Mina长连接框架实现Android客户端与服务器端通信
- Android客户端利用OKhttp3,Jsoup实现登录教务官网,并获取成绩,课程表等
- android客户端 j2ee服务器端架构的聊天系统实现思路
- 图片、缓存-Android仿人人客户端(v5.7.1)——对从服务器端(网络)获取的图片进行本地双缓存处理(编码实现)-by小雨