Java基础101 Struts2下的 jquery+ajax+struts 技术实现异步刷新功能

1、效果图示

横线上方的部分不动(没有刷新),下方实现刷新(异步刷新)

2、实现步骤

jquery+ajax+struts技术实现异步刷新功能的步骤:
    1、需要用到 jquery+ajax+struts 那么需要用几个包:(commons-logging-1.0.4.jar、freemarker-2.3.13.jar、ognl-2.6.11.jar、struts2-core-2.1.6.jar、xwork-2.1.2.jar、commons-fileupload-1.2.1.jar)
                  说明:  需要的包  六个基本包外加  json-lib.jar,struts2-json-plugin.jar,ezmorph.jar 这三个包
    
    2、加入 jquery.js ,调用 jquery里面的 ajax方法,$.get()、$.post()、$.getJSON();
    
    3、Action中 写 JSONObject
                          先将所有的值存入map中 ,然后将map集合转换为json对象
         JSONObject jo = JSONObject.fromObject(map);
    
    4、struts.xml中  设置result 的type=json  并且指定输入的 数据名称
        <result name="success" type="json">  
            <param name="root">outinfo</param>   
        </result>

3、相关代码

页面端(index.jsp)

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"   pageEncoding="UTF-8"%>
 2 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 3 <html>
 4     <head>
 5         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 6
 7           <script type="text/javascript" src="js/jquery.js" ></script>
 8
 9           <script type="text/javascript">
10               $( function() {
11                 //使用 Ajax 的方式 判断登录
12                 $("#btn_login").click( function() {
13                     var url = ‘ajaxLogin.action‘;
14                     //alert("===");
15                     //获取表单值,并以json的数据形式保存到params中
16                     var params = {
17                         loginName:$("#loginName").val(),
18                         password:$("#password").val(),
19                     };
20
21                     /* //使用$.post方式          $.post(url,params,function(data){data},‘json‘);
22                     $.post(
23                         url,  //服务器要接受的url
24                         params,  //传递的参数
25                         function cbf(data){ //服务器返回后执行的函数 参数 data保存的就是服务器发送到客户端的数据
26                             //alert(data);
27                             //eval里面的字符串以JavaScript的方式执行     //比如:eval(‘alert(‘你好!‘)‘);
28                             var member = eval("("+data+")");    //包数据解析为json 格式
29                             $(‘#result‘).html("欢迎您:  "+member.name+" -密码:"+member.pwd);
30                         },
31                         ‘json‘  //数据传递的类型  json
32                     );
33                     */
34
35                      //上面注释掉的部分,和下面三行代码的效果是一样的
36                      $.getJSON(url,params,function(data){
37                            var member = eval("("+data+")");
38                            $("#result").html("欢迎您哟:"+member.name+" -密码:"+member.pwd);
39                        });
40                 });
41             });
42         </script>
43   </head>
44
45   <body>
46        <span>用户名:</span>
47        <input type="text" id="loginName" name="loginName">
48        <br />
49
50        <span>密&nbsp;&nbsp;&nbsp;码:</span>
51        <input type="password" name="password" id="password">
52        <br />
53
54        <input type="button" id="btn_login" value="登录" />
55
56        <br />
57        <hr/>
58        <p>
59           这里显示ajax信息(即:异步刷新显示出下方的信息):
60           <br /><br />
61           <span id="result"></span>
62        </p>
63   </body>
64 </html>

struts.xml 配置文件

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
 3 <struts>
 4  <package name="ajax" extends="json-default">
 5         <action name="ajaxLogin" class="com.shore.ajax.ation.AjaxLoginAction">
 6             <!-- 返回类型为json 在sjon-default中定义 -->
 7             <result name="success" type="json">
 8                 <!-- root表示返回对象的层级为根部 root的值对应要返回的值的属性 -->
 9                 <!-- 这里的outInfo值即是 对应action中的 outInfo -->
10                 <param  name="root">outinfo</param>  <!-- 输出到页面的信息,JavaScript函数中的data参数接收此值 -->
11             </result>
12         </action>
13     </package>
14 </struts>  

Action层下的 AjaxLoginAction 类

 1 package com.shore.ajax.ation;
 2
 3 import java.util.HashMap;
 4 import java.util.Map;
 5
 6 import net.sf.json.JSONObject;
 7
 8 import com.opensymphony.xwork2.ActionSupport;
 9
10 /**
11  * @author DSHORE/2019-8-1
12  *
13  */
14 public class AjaxLoginAction extends ActionSupport {
15     // 用户Ajax返回数据
16     private String outinfo;  //输出信息
17
18     // struts的属性驱动模式,自动填充页面的属性到这里  (注入)
19     private String loginName;
20     private String password;
21
22     @Override
23     public String execute() {
24         // 用一个Map做例子
25         Map<String, String> map = new HashMap<String, String>();
26         // 为map添加一条数据,记录一下页面传过来loginName
27         map.put("name", this.loginName);
28         map.put("pwd", this.password);
29         // 将要返回的map对象进行json处理
30         JSONObject jo = JSONObject.fromObject(map);
31
32         // 调用json对象的toString方法转换为字符串然后赋值给outInfo
33         this.outinfo = jo.toString();
34         //测试一下outInfo的结果
35         System.out.println(this.outinfo);
36
37         return SUCCESS;
38     }
39
40     public String getOutinfo() {
41         return outinfo;
42     }
43     public void setOutinfo(String outinfo) {
44         this.outinfo = outinfo;
45     }
46
47     public String getLoginName() {
48         return loginName;
49     }
50     public void setLoginName(String loginName) {
51         this.loginName = loginName;
52     }
53
54     public String getPassword() {
55         return password;
56     }
57     public void setPassword(String password) {
58         this.password = password;
59     }
60 }

web.xml 配置文件

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app version="2.5"
 3     xmlns="http://java.sun.com/xml/ns/javaee"
 4     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 5     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
 6     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
 7   <welcome-file-list>
 8     <welcome-file>index.jsp</welcome-file>
 9   </welcome-file-list>
10
11   <filter>
12       <filter-name>struts2</filter-name>
13       <filter-class>
14           org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
15       </filter-class>
16   </filter>
17
18   <filter-mapping>
19       <filter-name>struts2</filter-name>
20       <url-pattern>/*</url-pattern>
21   </filter-mapping>
22 </web-app>

实例效果图


原创作者:DSHORE

作者主页:http://www.cnblogs.com/dshore123/

原文出自:https://www.cnblogs.com/dshore123/p/11284860.html

欢迎转载,转载务必说明出处。(如果本文对您有帮助,可以点击一下右下角的 推荐,或评论,谢谢!

原文地址:https://www.cnblogs.com/dshore123/p/11284860.html

时间: 2024-10-06 11:14:16

Java基础101 Struts2下的 jquery+ajax+struts 技术实现异步刷新功能的相关文章

28道java基础面试题-下

28道java基础面试题-下15.Java语言如何进行异常处理,关键字:throws.throw.try.catch.finally分别如何使用?答:Java通过面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良好的接口.在Java中,每个异常都是一个对象,它是Throwable类或其子类的实例.当一个方法出现异常后便抛出一个异常对象,该对象中包含有异常信息,调用这个对象的方法可以捕获到这个异常并可以对其进行处理.Java的异常处理是通过5个关键词来实现的:try.catch.th

jQuery+AJAX+Struts实现无刷新分页

jQuery+AJAX+Struts实现无刷新分页 说明: 1.需要jQuery插件js文件: 2.使用myeclipse添加struts能力: 从前从客户端页面向服务器发送Ajax请求,需要在js中先创建XMLHttpRequest对象,对象创建好以后使用OPEN('GET/POST',URL,同步/异步)设置提交方式,URL地址,使用同步还是异步方式.然后使用send(data)向服务器发送数据,同时使用onreadystatechange来绑定回调函数.如果是使用GET方式提交数据,那么就

让浏览器支持 jquery ajax load 前进、后退 功能

BEGIN; 一般在做 ajax load 的时候,很多人都不会考虑到需要浏览器支持前进后退功能,因为大部分人都不知道可以实现. 最近遇到这个问题,经过一小段研究,发现github已经有现成的开源工具使用,主要实现原理是利用html的锚点,即<a href="#xxx">,详情可查看https://github.com/balupton/jquery-history/tree/master 主要demo代码如下: html <ul> <li><

java基础 - linux环境下编辑简易JAVA程序

在LINUX下 编辑编译 乘法表 打印出来 (JAVA基础练习) [[email protected] chengxu]# vi test.java public class test{         public static void main (String args[]){ for(int i=0;i<10;i++){ for(int j =1;j<=i;j++){                                 System.out.print(j+"*&

Java基础知识【下】( 转载)

http://blog.csdn.net/silentbalanceyh/article/details/4608360 (最终还是决定重新写一份Java基础相关的内容,原来因为在写这一个章节的时候没有考虑到会坚持往后边写,这次应该是更新该内容.而且很讨厌写基础的东西,内容比较琐碎,而且整理起来总会很多,有可能会打散成两个章节,但是我不保证,有可能一个章节就写完了,所以有时候希望基础的很多内容还是读者自己去看看,我基本保证把基础的内容全部都写出来,见谅.这一个章节写了过后我会把前边那个关于基础类

java基础 第一章下(java格式,基本类型,运算符)

一.java基本格式 public class demo1{    //类名要和文件名相同 public static void main(String[] args){     // 每次换行,要四个空格缩进 System.out.println("hello world");  //输出hello world //语句的结束以分号结束 } } 二.基本数据类型 整型: 1.byte:字节型   8位   -128~127之间. 2.short:短整型  16位  -32768~32

java基础(jdbc下)

1.批处理 如果插入2000条记录,但现在使用sql缓存区,一次发送多条sql到数据库服务器执行.这种做法就叫     做批处理. jdbc的批处理: Statement批处理: voidaddBatch(String sql)  添加sql到缓存区(暂时不发送) int[]executeBatch() 执行批处理命令. 发送所有缓存区的sql voidclearBatch()  清空sql缓存区 private static void testStatementBatch() { Connec

JAVA基础 String包装类下 .replace方法的使用以及char和字符序列的使用场景

ptLink0.setText(arbu.getPtLink().replace("&","&")); // 如果像 '&','&' 这样替换是不行的,因为 '' 是给char用的,要替换字符序列的话,需要用 "" .replace连用用来替换多个char字符或者字符序列(String): // 在读取的时候,解析器会自动将其转换回"&","<","&

php+JQuery+Ajax简单实现页面异步刷新

页面显示如下: JQueryAjax.html中的代码如下(用的较为简单的$.post) <html> <head> <meta charset="UTF-8"> <title>JQueryAjax+PHP</title> <script type="text/javascript" src="https://code.jquery.com/jquery-3.0.0.min.js"