一,前台js部分代码

/**

* bean参数格式:类全限定名.方法名  opt参数格式:键值对  handleResponse:会function类型参数包含一个参数data,为后台返回json数据

* 方法返回值不能为null; 返回数据类型为map {data:Object}

*/

function ajax(bean, opt, handleResponse) {

$.ajax({

url : window.location.href.split("/")[3]+"/ajax/ajax.action?bean="+bean+changeParamer(opt),

type : 'get',

processData : false,

//data : opt,

cache : false,

dataType : 'json',

error : function(XMLHttpRequest, textStatus, errorThrown) {

alert('请求出错:'+ XMLHttpRequest.status + "  " + textStatus + "  " + errorThrown)

},

success : handleResponse

});

}

/**

* 将ajax中的参数转化,否则后台不能去到数据(post方式提交没有测试是否可以)

*/

function changeParamer(opt){

var temp="";

for(var o in opt){

temp += "&" + o+"="+opt[o];

}

return temp;

}

二,后台java部分

/**

*servlet部分,没有包申明和导入

*/

@MultipartConfig

@WebServlet(name="/Ajax", urlPatterns = {"/Ajax"})

public class Ajax extends HttpServlet {

private static final long serialVersionUID = 1L;

protected void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

doPost(request, response);

}

protected void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

response.setContentType("text/html;charset=UTF-8");

request.setCharacterEncoding("UTF-8");

AjaxRequest ajaxRequest=new AjaxRequest(request,response);

ajaxRequest.manager();

}

}

public class AjaxRequest {

/**

* 处理Ajax请求

*/

HttpServletRequest request;

HttpServletResponse response;

public AjaxRequest(HttpServletRequest request, HttpServletResponse response){

this.request=request;

this.response=response;

}

/**

* 从请求中获取所有参数,以map的形式返回

* @return

*/

private MapgetParameterMap() {

Mapmap = request.getParameterMap();//获取请求路径中的所有参数,并返回Map值

Mapparams = new HashMap();

String[] keys = (String[]) map.keySet().toArray(new String[0]);//获取map中的键

for (String key : keys) {

if ("bean".equals(key))

continue;

String value = getValue(key);

params.put(key, value);

}

return params;

}

/**

* 从map中或去key所对应的值,以String形式返回对应值

* @param key 需要从map中获取值的key名称

* @return

*/

private String getValue(String key) {

String[] values = this.request.getParameterValues(key);

if ((values != null) && (values.length > 1)) {

StringBuilder sb = new StringBuilder();

for (int i = 0; i < values.length; ++i) {

if (i > 0)

sb.append(",");

sb.append(values[i]);

}

return sb.toString();

}

String value = this.request.getParameter(key);

return value;

}

/**

* 通过反射的方式,根据类名获取对象后调用对应的方法,并返回值

* @return

* @throws Exception

*/

public void manager() throws Exception{

String className=request.getParameter("managerName");

String methodName=request.getParameter("methodName");

//String map=request.getParameter("data");

Mapmap=getParameterMap();

Class> requestClass=null;

Object value=null;

ReadFile.getItemPath();//需修改为在tomcat启动时就初始化,不在调用getItemPath();方法

/*if(ReadFile.pathMap.isEmpty()){

System.err.println("请创建所需模块代码");

return;

}*/

String classPath=ReadFile.pathMap.get(className)+className;

requestClass=Class.forName(classPath);

Method method = requestClass.getMethod(methodName, Map.class);

//通过反射创建对象,通过对象执行类中的方法  manager和dao中的构造方法不同,限制只能调用manager???

Constructor> constructor = requestClass.getDeclaredConstructor(new Class[]{HttpServletRequest.class,HttpServletResponse.class});

Object object = constructor.newInstance(new Object[]{request,response});

value=method.invoke(object, map);

response.getWriter().print(value);

}

}

注:前台调用的后台方法参数类型必须为map类型(用了反射调用方法,参数类型设置为map),

ajax调用后台java方法,jquery ajax再次封装,前台调用后台java方法直接返回数据相关推荐

  1. java jquery ajax_[Java教程]jquery ajax 使用

    [Java教程]jquery ajax 使用 0 2015-01-09 11:00:12 异步刷新实现方式有多种,也可以借助JS的多种框架,下面是使用JQuery框架实现的AJAX 验证用户名是否存在 ...

  2. flask ajax 上传 图片,flask jQuery ajax 上传文件

    1.html 代码 注:1.html 部分主要是一个form表单,其中表单的enctype = "multipart/form-data" 必须要有. 2.由于我的页面背景颜色设置 ...

  3. Ajax设置超时时长,jquery ajax超时设置

    var ajaxTimeoutTest = $.ajax({ url:'',  //请求的URL timeout : 1000, //超时时间设置,单位毫秒 type : 'get',  //请求方式 ...

  4. 【Java】json与java对象转换,获得数据库自增主键,保存返回数据 (个人梳理)

    [Java]json与java对象转换,获得数据库自增主键,保存返回数据 (个人梳理) 模拟请求API 获得json数据,将json转换为java对象,再将java对象转换为list集合,再将list ...

  5. ajax调用ashx的方法,jquery.ajax请求aspx和ashx的异同 Jquery Ajax调用aspx页面方法

    1.jquery.ajax请求aspx 请求aspx的静态方法要注意一下问题: (1)aspx的后台方法必须静态,而且添加webmethod特性 (2)在ajax方法中contentType必须是&q ...

  6. ajax html页面传值乱码,jQuery Ajax传值到Servlet出现乱码问题的解决方法

    最近在学jquery ui,在做一个小功能的时候需要将前台的值获取到,通过Ajax传递给Servlet,然后再在返回数据结果,但是在Servlet接受参数的时候,通过后台打印,发现接受乱码,代码示例如 ...

  7. ajax,html,aspx,Net WebForm jQuery Ajax 传值到aspx后台

    1.在Net WebForm中,编写aspx文件,有时候想在后台编写类似WebAPI形式的方法.前台使用jQuery Ajax方式调用.[PS:jQuery ajax Get方式将直接走后台Page_ ...

  8. ajax带参数get,使用jQuery ajax方法传递GET参数

    我想使用jQuery ajax方法来处理表单.在我调用的php脚本(myScript.php)中,我想使用通过在PHP脚本中提交表单设置的GET值,但它没有正确传递.使用jQuery ajax方法传递 ...

  9. ajax返回报错html,Jquery AJAX POST调用返回200状态确定,但错误

    嗨我已经实现了一个Ajax POST请求来调用Web服务.它总是返回200行,但执行失败的事件我已经尝试了很多事情,但我没有得到我犯的错误.我在这里添加我的代码. Fiddler显示响应内容,但Aja ...

最新文章

  1. Socket编程(4)TCP粘包问题及解决方案
  2. SAP S/4 HANA与SAP Business Suite/R3(ECC)的区别
  3. html 移动端关于长按图片弹出保存问题
  4. 汉文博士 0.5.6 正式版发布
  5. android 信号强度变化,Android监听WIFI网络的变化并且获得当前信号强度
  6. nltk和python的关系_NLTK学习笔记(一):语言处理和Python
  7. sql 的 where 和 having 的区别和用法
  8. 一文读懂AlphaGo Zero算法
  9. trans系列是sci几区_怎么确定SCI论文期刊是几区的?
  10. Skipped,remains conflicted
  11. java8 collectors_java8的Collectors.reducing()
  12. 【JS】跨域问题读写cookie的解决办法
  13. tesla p4 linux驱动,Ubuntu 16.04. 装tesla p4 显卡驱动+cuda9.0+docker+nvidia-docker 详细方法,这里是服务器为主...
  14. 认识jQuery的Promise
  15. 幼儿园教师计算机运用论文,幼儿园教师论文//浅析信息技术带动教育教学的应用...
  16. Halcon例程分析8:投影变换矫正倾斜图像
  17. 学计算机加数模社团,数学建模社团简介
  18. Win8系统hiberfil.sys是什么文件?Win8系统hiberfil.sys怎么删除?
  19. python 读docx文件 报错 docx.opc.exceptions.PackageNotFoundError: Package not found at
  20. APB时钟计算串口波特率

热门文章

  1. Linux 命令(94)—— env 命令
  2. 打印1到最大的n位数
  3. replaceFirst、replaceAll、replace区别
  4. 深度增强学习--DDPG
  5. 【CF666E】Forensic Examination - 广义后缀自动机+线段树合并
  6. 理解一下策略模式,工厂模式
  7. 用ssh从ubuntu系统向ubuntu系统服务器发送文件
  8. Android项目增加混淆
  9. 函数加正则实现简单计算器
  10. 【Java】String,StringBuffer和StringBuilder区别