zoukankan      html  css  js  c++  java
  • android客户端向服务器端验证登陆方法的实现2

    一、在上一篇文章中,我只是提到了其中一种方法来实现登陆

    大家可以参见:

    http://www.apkbus.com/android-45004-1-1.html      android获取web服务器端session并验证登陆

    http://blog.csdn.net/cainiao123hack/article/details/8255848   服务器端向Android客户端传值——登录实现

    http://zhidao.baidu.com/link?url=8g9EWhyUkUgUr1dh3_tEmmJgBcVLVVVJLtDrk_hJBm_-3n-SSBSItPdo1kjlC8MbeWyaK_fhgISCJbwGF4wQIa

    请问如何写一个java 服务器端的servlet,然后可以当客户端发出http请求的时候,可以接受请求,读取数据库

    二、一些代码的讲解:

        什么是servlet:一个小的,具有平台无关性,没有图形用户界面的java程序,他可以在很多方面扩充web服务的功能。

    HttpServlet 类  :

    参考文献:http://blog.csdn.net/jay198746/article/details/4489571   

    http://www.cnblogs.com/amboyna/archive/2007/09/18/897101.html    Java学习之Servlet-doGet()与doPost()

    提供了一个处理 HTTP 协议的框架。
    在这个类中的 service 方法支持例如 GET、POST 这样的标准的 HTTP 方法。这一支持
    过程是通过分配他们到适当的方法(例如 doGet、doPost)来实现的。

    doGet方法:被这个类的service方法调用,用来处理一个HTTP GET操作。这个操作允许客户端简单的从一个HTTP服务器获得资源。对这个方法的重载将自动支持HEAD方法。安全的方法。

    doPost方法:被service方法调用,用来处理一个HTTP POST操作。这个操作包含请求的数据体,servlet应该按照此行事。此操作可能是负面的操作。

    三、客户端与服务器端的数据传递

    相对于客户端的post与get方法,其都有数据传递,都在request于response当中。我们通过ServiceInputStream与ServiceOutputStream类来实现数据的共享。

    参考文献:    http://bbs.csdn.net/topics/370118463    servlet服务器端如何向客户端返回数据

                       1、客户端发出http请求,服务器端接受请求,进行响应,然后读取数据库。

                       2、在客户端:利用内置对象requst获取数据,并传至服务器端。

                        put 与 getparameter是一对  ; setAtribute与getAttibute是一对。

                       服务器端:我们除了用response返回数据外,也可以用request返回数据。将封装好的对象放到requets.session中,直接用它们的setAtributer  (“key”,"value");然后,在客户端:我们用request.getAttibute来获取数据。  

    int i=10;
    把数据放到Servlet请求的属性中
    request.setAttribute("i",i);
    转发到客户端
    request.getRequestdispatcher("url").forward(request,response);
    在转发到的页面用request.getAttribute(i)取出来..记得类型转换

                            在服务器端:利用内置对象response获取数据,并传至客户端。与之对应方法中的response。

                       eg: response.getOutStream();  PrintWrite pw = response.getPrintWrite();

                               pw.out(“你想要传到客户端的数据”);      

                                                    response这个对象就是用来响应的呀!
                                                    response.getOutputSteam().write("写数据");
                                                    response.flushBuffer()这样就可以发往数据到客户端了呀!

    当然,假如我们只想知道返回的标识,而不想要数据,那么我们通过标识码来判断

    服务器端代码:

    if (userlist != null) {
                resp.setStatus(200);
            } else {
                resp.sendError(345, "用户名密码不正确!");

    写在了resp当中。

    在客户端代码:

        httpClient.post("http://192.168.1.106:8080/login", param,
                    new BaseJsonHttpResponseHandler<Object>() {
    
                        @Override
                        public void onSuccess(int statusCode, Header[] headers,
                                String rawJsonResponse, Object response) {
                            Log.d(TAG, rawJsonResponse);
                            Intent intent = new Intent(LoginActivity.this,
                                    BMapApiDemoMain.class);
                            LoginActivity.this.startActivity(intent);
                            finish();
                        }

          根据我们传递过来的标识码的值(statusCode),就知道到底是进入到onSuccess还是onFailure方法中。然后,在这些方法中选择我们所要进行的操作。

          

    四、mybatis当中resultMap等的作用:

    参考文献:http://zhuyuehua.iteye.com/blog/1721715   

     <mapper  namespace="zhuxuekui.data.UserlistMapper">
            
            <resultMap id="userResultMap"  type="Userlist">
                <result property="username" column="username"></result>
                <result property="passward" column="passward"></result>
            </resultMap>        
            
            <select id="selectUserlist"  parameterType="Map"
                resultMap="userResultMap">
                select  * from userlist     
                where username = #{username}  and passward = #{passward}
            </select>      
        </mapper>

    <mapper></mapper>映射标签

    <resultMap id =”与类名相关的id名” type =”类名”/>  id 与下面的select中的resultMap一一对应,type后面是一个类名。通过id找到此类。

    下面全是 此类的一些属性名用<result property=””  column=””/>   最好是一一对应

    其中:property为你自己建立的类当中的属性,column是你自己建立的数据库当中的字段名。

    <select   id = “函数名”   xxxxxxxx    >

    paremeterType这个为selectUserlist函数的参数类型,假如只有一个参数,我们可以写string或int等。但假如有多个参数,需要封装在Map里面。

    <!-- 查询, 1.输入用map传入多个参数 2.<where>语句, 智能添加where和and关键字 3.输出直接映射对象 -->
    
        <select id="findAll" resultMap="navigations" parameterType="map" >
    
            select * from s_navigation
    
            <where>
    
                <if test="portletid != null">
    
                    portletid=#{portletid}
    
                </if>
    
                <if test="uuid != null">
    
                    and uuid=#{uuid}
    
                </if>
    
                <if test="uuid != null and portletid != null">
    
                    and isshow=1
    
                </if>
    
            </where>
    
        </select>

     

  • 相关阅读:
    Node 之http模块
    Node 之 模块加载原理与加载方式
    Node 之NPM介绍
    Node.js的特点
    ECMAScript 6 简介
    Node 之URL模块
    用户模块 之 根据条件查询用户
    用户模块 之 完成用户列表的分页显示
    用户模块 之 完成查询所有帖子、完成查询所有回复以及点赞
    用户模块 之 完成查询所有用户
  • 原文地址:https://www.cnblogs.com/zhuxuekui/p/3735640.html
Copyright © 2011-2022 走看看