struts2、jQuery实现Ajax简单实例
1.搭建struts2环境
(1)引入jar包
--struts2基本jar包
commons-fileupload-1.2.1.jar
commons-io-1.4.jar
commons-logging-api-1.1.jar
freemarker-2.3.13.jar
ognl-2.6.11.jar
struts2-core-2.1.6.jar
xwork-2.1.2.jar
--struts2返回json格式使用jar包
xwork-core-2.2.1.jar
struts2-json-plugin-2.1.8.1.jar
(2)修改添加struts2相关配置
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <filter> <!-- 定义核心Filter的名字 --> <filter-name>struts2</filter-name> <!-- 定义核心Filter的实现类 --> <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> </filter> <filter-mapping> <!-- FilterDispatcher用来初始化Struts 2并且处理所有的Web请求 --> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
src目录下新建struts.xml配置文件
(LoginAction用于测试、JqueryAction用于Ajax的使用)
<?xml version="1.0" encoding="GBK"?> <!-- 指定Struts 2配置文件的DTD信息 --> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <!-- struts是Struts 2配置文件的根元素 --> <struts> <!-- Struts 2的Action必须放在指定的包空间下定义 --> <package name="xx" extends="struts-default"> <action name="Login" class="action.LoginAction"> <!-- 定义处理结果和资源之间映射关系。 --> <result name="error">/error.jsp</result> <result name="success">/welcome.jsp</result> </action> </package> <!-- Ajax方式返回json格式数据到页面 --> <package name="json" extends="json-default"> <action name="jquery" class="action.JqueryAction" method="jquery"> <result type="json"> <param name="root">result</param> </result> </action> </package> </struts>
(3)Ajax数据初始化Action
package action; import java.io.IOException; import java.util.ArrayList; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport; public class JqueryAction extends ActionSupport { /** * serialVersionUID */ private static final long serialVersionUID = 1147435491635259488L; /** * 用于记录返回结果 */ private String result; /** * Ajax测试类 * @return * @throws IOException */ public String jquery() throws IOException { //获取用户输入值 String num=getRequest().getParameter("num"); List<Test> testUser = new ArrayList<Test> (); int numtemp; //判断用户输入是否是数字 if (isNumeric(num)) { numtemp = Integer.valueOf(num); } else { numtemp = 0; } //Test类,自定义(定义属性:username、password;提供get、set方法) //模拟数据初始化 for (int i = 0; i < numtemp; i++) { Test t = new Test(); String username = "user" + i; String pssword = "pass" + i; t.setUsername(username); t.setPassword(pssword); testUser.add(t); } StringBuffer sb = new StringBuffer(); sb.append("["); for (int i = 0; i < testUser.size(); i++) { Test temp = testUser.get(i); if (testUser.size() -1 > i) { sb.append("{\"username\":\""+temp.getUsername()+"\",\"password\":\""+temp.getPassword()+"\"},"); } else { sb.append("{\"username\":\""+temp.getUsername()+"\",\"password\":\""+temp.getPassword()+"\"}"); } } sb.append("]"); this.result=sb.toString(); return SUCCESS; } public static boolean isNumeric(String str) { if (null == str || "".equals(str)) { return false; } for (int i = str.length();--i>=0;) { if (!Character.isDigit(str.charAt(i))) { return false; } } return true; } /** * 必须经过struts初始化才能使用 * 获取 HttpServletRequest * @return HttpServletRequest */ public static HttpServletRequest getRequest() { return ServletActionContext.getRequest(); } /** * 必须经过struts初始化才能使用 * 获取HttpServletResponse * @return HttpServletResponse */ public static HttpServletResponse getResponse() { return ServletActionContext.getResponse(); } public String getResult() { return result; } public void setResult(String result) { this.result = result; } }
(4)jsp
需要导入jquery-1.4.4.min.js
<%@ page language="java" contentType="text/html; charset=gbk" pageEncoding="gbk"%> <%@ taglib prefix="s" uri="/struts-tags"%> <%@ page import="java.util.*" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gbk"> <script type="text/javascript" src="/Ajax/js/jquery-1.4.4.min.js"></script> <title>Ajax</title> </head> <body> <script type="text/javascript"> function checkSubmit() { var bol = true; var num = $.trim($("#num").val()); /** success : 当请求成功时调用的函数。 这个函数会得到一个参数:从服务器返回的数据。当请求成功时调用函数,即status==200。 complete : 当请求完成时调用的函数。 这个函数会得到两个参数:XMLHttpRequest对象和一个描述请求成功的类型的字符串。 当请求完成时调用函数,即status==404、403、302...。 **/ $.ajax({ url:'jquery.action', data:{num:num}, complete:function(xmlHttpRequest) { }, success:function(data){ //var jsonStr='[{"id":1,"name":"name1"},{"id":2,"name":"name2"},{"id":3,"name":"name3"},{"id":4,"name":"name4"},{"id":5,"name":"name5"}]'; var uslist=eval("("+data+")"); var divtemp = ""; for(var i = 0; i < uslist.length; i++) { divtemp += "<br>"+uslist[i].username+"<br>"; } $("#msgDIVID").show(); $("#msgDIVID").html(divtemp); }, error:function() { alert('你妹的!竟然出错了!'); } }); } </script> <form name="myform1" action=""> <table> <tr> <td>num:</td> <td><input type="text" id="num" onkeyup="checkSubmit()"></td> <td><div id="userDivId" style="border: 0px solid red;width:200px;height:10px;color: red"></div></td> </tr> </table> <Br> <!-- 显示登陆信息的div层. --> <div id="msgDIVID" style="border:0px solid blue;color: blue;width:400px;height:30;font-weight: bold;font-size: 20px"></div> </form> </body> </html>
(5)测试
访问 自己工程的地方
http://localhost:8080/Ajax/jquery/jquery.jsp
在输入框输入数字,即可看到Ajax效果
(6)扩展
[1] json中特殊符号处理
相关推荐
hgzhang 2020-05-06
白净垃圾桶 2020-05-04
playis 2020-04-18
郭大路路 2020-04-16
lenchio 2020-04-08
yixiaoqi00 2020-04-08
melonjj 2020-01-05
mmywcoco 2019-12-28
wangruiling 2014-06-13
yaoyao0 2014-06-01
YangHuiLiang 2014-05-20
方志朋 2019-12-22
xcguoyu 2014-01-18
方志朋 2015-04-30
殷龙飞 2014-06-24
zmysna 2016-12-16
89264255 2011-04-23
wuddny的blog 2014-12-04