您好,登錄后才能下訂單哦!
小編給大家分享一下jQuery中ajax請求struts action實現異步刷新的示例分析,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
第一步:導入相關jar包,本樣例需導入struts相關jar包,json-lib.jar,gson-2.1.jar可以任意選擇,但是這里需要都導入,因為為了做測試,兩種jar包的轉換方式都用到了。
第二步:配置web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" 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_3_0.xsd"> <display-name></display-name> <!-- 聲明Struts2的前端控制器 --> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- 聲明Spring的ContextListener,負責上下文一加載立即創建BeanFactory --> <context-param> <!-- 若applicationContext.xml沒有放在WEB-INF下或者不叫這個名字,必需聲明此參數 --> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param> </web-app>
第三步:新建struts.xml,默認admin/下跳轉到/WEB-INF/index.jsp
<?xml version="1.0" encoding="UTF-8" ?> <!-- <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> --> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://www.yxccc.com/news/"> <struts> <package name="bg" namespace="/" extends="struts-default"> <default-action-ref name="index"/> <!-- =================基礎跳轉====================== --> <action name="index"> <result>/WEB-INF/index.jsp</result> </action> </package> </struts>
第四步:編寫AjaxRequestAction.java文件,這里做了兩種請求,一種是直接請求到字符串,另一種是請求到一組數組格式的數據,但該數據必須要轉換成JSON支持的數組,具體如下
package com.fengqi.action; import java.io.IOException; import java.util.ArrayList; import java.util.List; import javax.servlet.http.HttpServletResponse; import net.sf.json.JSONArray; import org.apache.struts2.ServletActionContext; import com.google.gson.Gson; import com.opensymphony.xwork2.ActionSupport; /** * 創建時間:2014-10-24,ajax請求的action樣例 */ public class AjaxRequestAction extends ActionSupport{ private String sex; @Override public String execute() throws Exception { return super.execute(); } /** * ajax請求,以json格式的字符串響應請求 */ public void ajaxString(){ System.out.println(sex); //獲取相應Response HttpServletResponse response = ServletActionContext.getResponse(); //設置編碼方式 response.setCharacterEncoding("UTF-8"); try { if(sex.equals("nan")){ response.getWriter().write("我是男的"); }else if(sex.equals("nv")){ response.getWriter().write("我是女的"); }else{ response.getWriter().write("男女都不是"); } //將數據寫到頁面中 } catch (IOException e) { e.printStackTrace(); } } /** * ajax請求,以list的形式響應請求,主要這里的list并不是Util的List,而是經過轉換成指出json格式的List */ public void ajaxList(){ List<Object> list = new ArrayList<Object>(); list.add("張三"); list.add("李四"); //第一種方法:利用json-lib包中的JSONArray將List轉換成JSONArray各式。 JSONArray jsonArray = JSONArray.fromObject(list); //第二周方法:利用goole的json包將List轉換成Json對象。 Gson gson = new Gson(); String gsonList = gson.toJson(list); //獲取相應Response HttpServletResponse response = ServletActionContext.getResponse(); //設置編碼方式 response.setCharacterEncoding("UTF-8"); try { //將數據寫到頁面中 response.getWriter().println(jsonArray); } catch (IOException e) { e.printStackTrace(); } } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } }
第五步:在將struts.xml文件更新下,配置AjaxRequestAction.java的訪問路徑添加如下代碼
<package name="ajax" namespace="/ajax" extends="struts-default"> <!-- =================ajax請求跳轉====================== --> <action name="ajax_*" class="com.fengqi.action.AjaxRequestAction" method="ajax{1}"> </action> </package>
最后struts.xml的完整文件是
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://www.yxccc.com"> <struts> <package name="bg" namespace="/admin" extends="struts-default"> <default-action-ref name="index"/> <!-- =================基礎跳轉====================== --> <action name="index"> <result>/WEB-INF/index.jsp</result> </action> </package> <package name="ajax" namespace="/ajax" extends="struts-default"> <!-- =================ajax請求跳轉====================== --> <action name="ajax_*" class="com.fengqi.action.AjaxRequestAction" method="ajax{1}"> </action> </package> </struts>
第六步:編寫index.jsp文件,這里做了兩種請求,一種是直接請求到字符串,另一種是請求到一組數組格式的數據,但該數據必須要轉換成JSON支持的數組,具體如下
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>" rel="external nofollow" > <title>ajax異步刷新樣例測試</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <link href="http://www.yxccc.com/css/css.css" rel="stylesheet" type="text/css" /> <script src="js/jquery-2.1.1.min.js"></script> <script type="text/javascript"> $(document).ready(function() { $("#hh2").click(function(){ $.ajax({ url:"ajax/ajax_String",//請求url data:{sex:$("#txt1").val()}, success:function(data){//請求返回的數據 $("div").html(data);//將數據打印到頁面的div中 } }); }); $("#hh3").click(function() { $.ajax({ url: "ajax/ajax_List",//請求url http://www.yxccc.com //cache: false, type: "POST", //請求頭,這里是post datatype: 'json', //請求數據各式,這里是json格式 success: function(data,status){ data = $.parseJSON(data); //將字符串格式的數據轉換成json對象 //這里將option元素移除是考慮到如果在頁面不刷新的情況下多次請求,會產生數據累加,不符合業務需求,因此需先刪除在增加元素。 $("option").remove(); $("select").append("<option>請選擇</option>");//在select元素下添加option子元素。 $(data).each(function(i){ //遍歷請求相應的data數據 $("select").append("<option>"+data[i]+"</option>"); }) } }); }); }); </script> </head> <body> <br> <h3 align="center">這里是ajax請求Demo,該實例是請求Struts中的action</h3> <br> <button id="hh2">請求返回常規字符串</button> <button id="hh3">請求返回JSON格式的List</button><br><br> <div>這里是div元素</div><br> 請選擇性別:<select id="txt1" name="sex"> <option>請選擇</option> <option value="nan">男</option> <option value="nv">女</option> </select><br><br> <select> <option>select選擇</option> </select> </body> </html>
這樣一個簡單的ajax請求就已經完成了。
看完了這篇文章,相信你對“jQuery中ajax請求struts action實現異步刷新的示例分析”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。