Android客户端向服务器端传值——登录实现(一)
来源:互联网 发布:河北快3遗漏数据一定牛 编辑:程序博客网 时间:2024/05/14 20:36
根据实习科目需求,先完成Android客户端的登录功能。
要实现登录必然涉及到客户端与服务器端的交互,即客户端需要将用户输入的账号和密码传给服务器端,服务器端连接数据库对其进行验证。
细化问题,先研究一下客户端向服务器端传值的方法。。
新建一个web工程,建一个Servlet如下:
- 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代码:
- 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(); } }}
具体实现的工具类:
- 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 blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.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的字符串。利用该字符串连接服务器,传送相关值。
- 实习日志(12):Android客户端向服务器端传值——登录实现(一)
- Android客户端向服务器端传值——登录实现(一)
- Android客户端向服务器端传值——登录实现(一)
- Android客户端向服务器端传值——登录实现(一)
- Android客户端向服务器端传值——登录实现(一)
- 实习日志(13):服务器端向Android客户端传值——登录实现(二)
- 服务器端向Android客户端传值——登录实现(二)
- 服务器端向Android客户端传值——登录实现(二)
- 服务器端向Android客户端传值——登录实现(二)
- Android网络编程之——Android登录系统模块的实现(客户端+服务器端Servlet+MySQL)
- uploadify 3.2实现客户端向服务器端传值
- Android 客户端与服务器端进行数据交互(一、登录服务器端)
- Android 客户端与服务器端进行数据交互(一、登录服务器端)
- Android Java Web实现登录注册(一)——客户端
- java Socket简单聊天实现 —— 实现服务器端向客户端广播内容
- Android项目之无线点餐(2)--用户登录的客户端和服务器端实现
- Android中从服务器端向客户端传数据[json]
- Java Web服务器向Android客户端返回数据(服务器端)
- 人生千姿百味,人人都只能活一回。有坐享其成的福气,就不会体验挑战人生的荣耀,每个人各有各的活法,各有不同的悲喜哀乐。
- 说CSS Hack 和向后兼容
- js 计算人的年龄
- Aho-Corasick automation,AC 自动机
- servlet监听总结
- Android客户端向服务器端传值——登录实现(一)
- 监控Oracle数据库
- Configure,Makefile.am, Makefile.in, Makefile文件之间关系
- ROM、PROM、EPROM、EEPROM、FLASH-ROM芯片的区别
- SVN(Subversion ) 备份/还原 操作
- 驱动调试前期准备工作
- tomcat JNDI配置数据源
- android中EditText编辑状态切换问题
- NEFU要崛起——第4场