首页 > 语言 > JavaScript > 正文

jQuery ajax请求struts action实现异步刷新

2024-05-06 15:18:23
字体:
来源:转载
供稿:网友

这个样例是用JQuery ajax和struts来做的一个小样例,在这个样例中采用两种方式将java Util中的list转换成支json的格式,第一种是用json-lib.jar这个jar包来转换,第二种是采用goole的gson-2.1.jar来转换,大家可以根据需要导入相应的jar包,在这里为了做测试将两种jar包都导入了。下面开始进入正题

第一步:导入相关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; } }            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选