惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Martin Fowler
Martin Fowler
Y
Y Combinator Blog
M
MIT News - Artificial intelligence
The Cloudflare Blog
WordPress大学
WordPress大学
H
Hackread – Cybersecurity News, Data Breaches, AI and More
博客园 - 司徒正美
小众软件
小众软件
Blog — PlanetScale
Blog — PlanetScale
雷峰网
雷峰网
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
J
Java Code Geeks
云风的 BLOG
云风的 BLOG
C
Check Point Blog
D
DataBreaches.Net
T
The Blog of Author Tim Ferriss
V
V2EX
F
Fortinet All Blogs
B
Blog
大猫的无限游戏
大猫的无限游戏
N
Netflix TechBlog - Medium
B
Blog RSS Feed
A
About on SuperTechFans
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC

热爱生活与梦想

迁移LeanCloud的Waline评论数据到TiDB/Neon 25年江浙地区暑假自驾游之感慨 使用阿里云灵码继续完成构建 SSL 证书管理器 亲手给儿子做的棒棒糖摩天轮六一礼物 使用腾讯云 CodeBuddy 构建 SSL 证书管理器 修复代码块默认高度相关缺陷 HugoNexT4.7.2 新功能和升级提示 改善代码块折叠和选中功能 支持Github风格的警告样式 新增音乐短代码功能支持 给文章添加摘要和过期提示功能 回顾24年的过去总结 修复Mathjax行内显示公式的问题 给Hugo文章增加阅读更多跳转的锚点定位功能 Win10隐匿的VPN设置和L2TP连接常见错误 Go语言中“糟糕”的日期时间格式化设计 DaoCloud道客提供的免费Docker镜像代理服务 感谢万能淘宝让自己吃到喜欢的美食 WSL运行时遇到未知异常错误无法使用 隐藏的换行符导致Base64加密解密失败 MySQL自带客户端直接免密登录操作 Linux系统中删除目录软链接的注意项 Java程序调用外网API时CA问题 如何不关机重启WSL2恢复虚拟服务 在Windows上安装Podman容器平台做虚拟化 记一次无法弹出移动硬盘的记录 为友情链接添加自动检测脚本 重新激活Github的2FA认证 Linux中使用tar压缩命令排除文件 继续小米手环的健康生活之旅
JQuery+Strusts1.x实现Ajax无刷新登录
凡梦星尘 · 2010-09-05 · via 热爱生活与梦想

在当今技术发展日益成熟,人们除了追求技术创新与发展外,更多也关注到了与用户交互的便利性方面上。当程序员还在为前后数据交互刷新问题困惑时,AJAX 问世了,它以方便快捷的优越性博得了广大程序员的追捧。经过几年的发展,它也渐渐成为我们开发中必不可少的一件利器,下面我就来讲个Struts1 + Ajax的登录示例。

所用的JS插件: JQuery1.3.2汉化版、JQuery.form2.43

下面我们先来看看页面中核心的JS代码:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

function submitForm()
 {
    // 用jquery.form插件实现对表单数据系列化
    var form = $("form[name=AdminLoginForm]");
    // 配置jquery.form中ajaxForm的参数
    // success 操作成功时的回调函数
    // resetForm 是否刷新表单
    // dataType 接收服务器返回数据的类型, 有script, xml, json等
    var options = {
        success: showResponse,
        resetForm: false,
        dataType: "script"
    };
    // ajax发送表单数据到服务器
    form.ajaxForm(options);
    return false;

}

//回调函数
function showResponse(responseText, statusText) {
    if (statusText == "success")
    {
        alert(responseText);

    }
    else
    {
        alert("由于通讯问题,请稍后再登录!");

    }

}

在上面的代码中我们可以发现通过JQuery和JQuery.form两款插件,我们只要短短的三行代码就可以实现与后台的数据交互。JQuery是一款功能很强大的JS插件,我个人也很喜欢,调用很方便,代码风格也不错。有空可以研究一下哦,呵呵……

下面继续来看看struts的action的代码:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39

public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
       // 输出的方式与编码格式
       response.setContentType("text/html; charset=utf-8");
       PrintWriter out = response.getWriter();
       // 获取表单数据
       AdminLoginForm adminLogin = (AdminLoginForm) form;
       // 获取服务器产生的验证码
       String validateCode = request.getSession().getAttribute("validateCode").toString();
       try {
          // 判断用户输入的验证码是否正确
          if (adminLogin.getVerifycode().equalsIgnoreCase(validateCode)) {
               // 用户名的状态
               boolean isUser = false;
               // 验证用户名是否存在
               if(!adminLogin.getUsername().equalsIgnoreCase("elkan")){
                       out.print("你输入的用户名不存在,请重新输入!");
                       return null;
                   }else{
                       isUser = true;
                   }
                // 验证密码是否正解
               if(adminLogin.getUserpswd().equalsIgnoreCase("lisenhui2010") && isUser){
                    out.print("登录成功!");
                }else{
                    out.print("密码错误,请重新输入!");
                    return null;
                }
            } else {
                out.print("验证码输入错误请重新输入!");
                return null;
            }
         } catch (Exception e) {
            out.print(e.toString());
        }
      return null;
 }

最后还有下面的struts-config.xml的配置文件:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12

<action-mappings>

   <action
       input="/webstage/adminLogin.jsp"
       name="AdminLoginForm"
       path="/AdminLogin"
       scope="request"
       type="com.elkan.struts.actions.AdminLogin"
       validate="false"/>

</action-mappings>

说了那么多,下面先来看看通上面的代码所实现的效果吧:

struts1-ajax-1

struts1-ajax-2

struts1-ajax-3

看到上面的效果,你是不是也想展示一下自己的身手呢,那就赶紧动手吧,相信有了上面的那些代码的提示做个DEMO应该不会很难吧,如果有什么问题的话可以留言给我。谢谢支持。