java异步方式实现登录

本文实例为大家分享了java异步登录的具体代码,供大家参考,具体内容如下

1.LoginServletAjax.java  

package com.scce.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import net.sf.json.JSONObject;

import com.scce.dao.AdminUserDao;
import com.scce.pojo.AdminUser;

public class LoginServletAjax extends HttpServlet {

  @Override
  protected void service(HttpServletRequest request,
      HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
    request.setCharacterEncoding("utf-8");
    response.setContentType("text/html;charset=utf-8");
    String method = request.getMethod();
    if (method.equals("POST")) {
      doLoginAjax(request, response);
    } else if (method.equals("GET")) {

    }

  }

  public void doLoginAjax(HttpServletRequest request,
      HttpServletResponse response) throws ServletException, IOException {
     PrintWriter out = response.getWriter();

    // 用户名
    String username = request.getParameter("username");
    // 密码
    String password = request.getParameter("password");
    String msg = "";
    AdminUserDao adminUserDao = new AdminUserDao();
    AdminUser adminUser = adminUserDao.queryUser(username, password);
    if (adminUser != null) {

        msg="登录成功!";
      String jsonObj=   JSONObject.fromObject(adminUser).toString();
      out.print("{\"Msg\":\""+msg+"\",\"rows\":"+jsonObj+"}");
      System.out.println("{\"Msg\":\""+msg+"\",\"rows\":"+jsonObj+"}");

    } else {
      msg="用户名或者密码不正确!";
      out.print("{\"Msg\":\""+msg+"\"}");
    }

    out.flush();
    out.close();

  }

}

2.test2.html

<!DOCTYPE html>
<html>
  <head>
    <title>chapter3-test2</title>

    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="this is my page">
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">

    <link rel="stylesheet" href="../UI/themes/icon.css" type="text/css"></link>

    <link rel="stylesheet" href="../UI/themes/default/easyui.css"
      type="text/css"></link>

    <!-- <script type="text/javascript" src="../js/jquery-1.8.2.min.js"></script> -->
    <script type="text/javascript" src="../UI/jquery.min.js"></script>
    <script type="text/javascript" src="../UI/jquery.easyui.min.js"></script>

    <script type="text/javascript" src="../UI/locale/easyui-lang-zh_CN.js"></script>

    <script type="text/javascript">
  //string number boolean null object undefined function
  $(function() {
    $("#LoginAdd").dialog({
      title : "用户登录",
      collapsible : 'true',
      width : 300,
      height : 200,
      buttons : [ {
        text : '登录',
        iconCls : 'icon-add',
        handler : function() {
          console.info("用户登录!");
          ajaxFrm();//ajax提交表单的函数
        }
      } ]
    });

  });
  function ajaxFrm() {
    //------------------------注释的是ajax提交方法----------------------------
    var LoginList = $("#LoginList");

    $.ajax({
      url : '../LoginServletAjax?tag=test',//相对路径访问
      type : 'POST', //提交请求的方式
      data : $('#form1').serialize()+'&names=liuqin&age=26',//将表单参数序列化,发送到服务器的数据(提交额外的参数)
      dataType : 'json', //预期服务器返回的数据类型-json object
      success : function(data) {//请求成功后将调用此方法var data = {"Msg":"登录成功","rows":{"username":"admin",...}}
        console.info(data);//调试代码
        $.messager.alert("提示", data.Msg);
        LoginList.html("");//清空数据
        if (data.rows) {
          var stra = LoginList.html() + "用户名:" + data.rows.username
              + "--密码:" + data.rows.password + "<br/>";
          LoginList.html(stra);
        }
      },
      error : function(error) { //请求失败时将调用此方法
        console.info(error);

      }
    });

     /*var LoginList = $("#LoginList");
     $("#form1").form("submit", {
       url: "../LoginServletAjax?tag=test",
       onSubmit: function (param) { //提交额外的参数
         param.name="liuqin";
       param.age=27;
         var username = $("#username").val();
         var password = $("#password").val();
         if (username.length == 0 || password.length == 0) {
           $.messager.alert('警告', '请输入用户名和密码');
           return false;
         }
         return true;
       },
       success: function (data) {
         //var data = eval('(' + data + ')');
         var data = $.parseJSON(data);//服务器端返回json字符串转成json对象-js object
         console.info(data);
         $.messager.alert("提示", data.Msg);
         LoginList.html("");//清空数据
          if (data.rows) {
            var stra = LoginList.html() + "用户名:" + data.rows.username
                + "--密码:" + data.rows.password + "<br/>";
            LoginList.html(stra);
          }
       }
     });*/

  }
</script>
  </head>

  <body>

    <div id="LoginAdd">
      <form id="form1" method="post">
        <table style="width: 100%;">
          <tr>
            <td>
              用户名:
            </td>
            <td>
              <input id="username" name="username"
                class="easyui-validatebox textbox">
            </td>
          </tr>
          <tr>
            <td>
              密码:
            </td>
            <td>
              <input id="password" name="password"
                class="easyui-validatebox textbox" type="password">
            </td>
          </tr>
        </table>
      </form>
    </div>
    <div id="LoginList">
      用户信息加载中......
    </div>

    <video width="320" height="240" controls="controls"
      src="../video/B4934A0C53FC55703BFE3F6843E66166.mp4" type="video/mp4">
      Your browser does not support the video tag.
    </video>

  </body>
</html>

以上就是本文的全部内容,希望对大家学习java程序设计有所帮助。

(0)

相关推荐

  • Java多线程实现异步调用的方法

    在JAVA平台,实现异步调用的角色有如下三个角色:调用者 提货单   真实数据 一个调用者在调用耗时操作,不能立即返回数据时,先返回一个提货单.然后在过一断时间后凭提货单来获取真正的数据. 去蛋糕店买蛋糕,不需要等蛋糕做出来(假设现做要很长时间),只需要领个提货单就可以了(去干别的事情),等到蛋糕做好了,再拿提货单取蛋糕就可以了. public class Main { public static void main(String[] args) { System.out.println("ma

  • JAVA实现异步调用实例代码

    在JAVA平台,实现异步调用的角色有如下三个角色: 调用者 取货凭证   真实数据 一个调用者在调用耗时操作,不能立即返回数据时,先返回一个取货凭证.然后在过一断时间后凭取货凭证来获取真正的数据. 在调用一个方法的时候,程序会进入被调用方法体内,执行完这个被调用方法后,才返回执行下一条语句.怎么做到像ajax异步请求一样,发送请求后,没等请求响应就执行下一条语句呢?对于java的异步请求,找了许多教材都没有找到,如thinking in java.core java2 ......等等.受多线程

  • java实现HttpClient异步请求资源的方法

    本文实例讲述了java实现HttpClient异步请求资源的方法.分享给大家供大家参考.具体实现方法如下: package demo; import java.util.concurrent.CountDownLatch; import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.nio.client.DefaultHttpAsyn

  • 使用Jquery+Ajax+Json如何实现分页显示附JAVA+JQuery实现异步分页

    先给大家展示下运行效果图:  1.后台action产生json数据. List blackList = blackService.getBlackInfoList(mobileNum, gatewayid, startDate, endDate); int totalRows = blackList.size(); StringBuffer sb = new StringBuffer(); sb.append("{\"totalCount\":\""+to

  • Java多线程之异步Future机制的原理和实现

    项目中经常有些任务需要异步(提交到线程池中)去执行,而主线程往往需要知道异步执行产生的结果,这时我们要怎么做呢?用runnable是无法实现的,我们需要用callable看下面的代码: import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurren

  • java异步上传图片示例

    复制代码 代码如下: final File imageFile = new File(getCacheDir().getPath() + "/img/" + p.image); image.setVisibility(View.GONE); view.findViewById(R.id.imageLoading).setVisibility(View.VISIBLE); (new AsyncTask<Void, Void, Bitmap>() {     @Override

  • 简述Java异步上传文件的三种方式

    本文为大家分享了三种Java异步上传文件方式,供大家参考,具体内容如下 用第三方控件,如Flash,ActiveX等浏览器插件上传. 使用隐藏的iframe模拟异步上传. 使用XMLHttpRequest2来实现异步上传. 第一种使用浏览器插件上传,需要一定的底层编码功底,在这里我就不讲了,以免误人子弟,提出这点大家可以自行百度. 第二种使用隐藏的iframe模拟异步上传.为什么在这里说的是模拟呢?因为我们其实是将返回结果放在了一个隐藏的iframe中,所以才没有使当前页面跳转,感觉就像是异步操

  • java发送短信系列之同步、异步发送短信

    本篇本章是发送短信的第一部分, 说一下同步/异步发送短信的代码, 以后几篇我们稍微完善一下功能, 添加发送频率的限制和日发送次数的限制. 发送短信的方法可能不少, 我们的方法是使用服务商提供的服务. 一般来说, 这些服务都是和语言无关的, 这里我们使用java写示例程序. 1.发送短信的接口 根据自己的情况选择服务商. 2.开发文档 从开发文档中我们可以看到. 可以直接使用http请求也可以使用WebService请求发送短信. 由于DEMO文件夹下的java和jsp文件夹中的代码都是使用htt

  • Jquery+ajax+JAVA(servlet)实现下拉菜单异步取值

    首先来看工程结构图: 项目所需要的包,如下所示: JSP代码: <%@ page language="java" import="java.util.*" pageEncoding="GBK"%> <% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServe

  • 浅谈java中异步多线程超时导致的服务异常

    在项目中为了提高大并发量时的性能稳定性,经常会使用到线程池来做多线程异步操作,多线程有2种,一种是实现runnable接口,这种没有返回值,一种是实现Callable接口,这种有返回值. 当其中一个线程超时的时候,理论上应该不 影响其他线程的执行结果,但是在项目中出现的问题表明一个线程阻塞,其他线程返回的接口都为空.其实是个很简单的问题,但是由于第一次碰到,还是想了一些时间的.很简单,就是因为阻塞的那个线 程没有释放,并发量一大,线程池数量就满了,所以其他线程都处于等待状态. 附上一段自己写的调

随机推荐