使用此脚本需要引入 jquery
servlet.jsp
脚本
const Servlet = {
getRequest: function () {
// 获取URL链接参数
let url = window.location.search;
let theRequest = {};
//获取url中含"?"符后的字串
if (url.indexOf("?") != -1) {
let str = url.substr(1);
let strs = str.split("&");
for (let i = 0; i < strs.length; i++) {
theRequest[strs[i].split("=")[0]] = strs[i].split("=")[1];
}
}
return theRequest;
}
, isSuccess: function (data) {
// Servlet 是否执行成功
let code;
if (typeof (data) == 'number') {
code = data;
} else if (typeof (data) == 'object') {
code = data.code;
} else {
return false;
}
return code >= 200 && code < 300;
}
, post: function (servletUrl, method, data, func) {
/* Servlet 格式进行 Ajax 请求
@servletUrl servlet 地址
@method 操作功能
@data 发送到数据
@func 执行时成功操作的方法
*/
if (typeof (data) == 'object') {
data['method'] = method;
} else {
data += "&method=" + method;
}
console.log("========== servlet.js ==========");
console.log("url=" + servletUrl);
console.log("method=" + method);
console.log("data{" + data + "}");
$.ajax({
url: servletUrl,
type: "POST",
data: data,
dataType: "json",
success: func,
});
}
}
服务端执行操作响应的 ajax 数据,ResponseUtil
工具类。
import com.alibaba.fastjson.JSON;
import lombok.Data;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;
public class ResponseUtil {
//============================================
// Success
//============================================
public static boolean isSuccess(int code) {
return (code >= 200 && code <= 300);
}
/**
* 执行成功,设置响应参数
*
* @param response
* @param data
*/
public static void success(HttpServletResponse response, Object... data) {
if (data.length == 0) {
System.out.println("data == 0");
success(response, 200);
} else if (data.length == 1) {
System.out.println("data == 1");
success(response, 200, "", data[0]);
} else {
System.out.println("data > 1");
/*
如果是多个参数,则data格式要为
key, value, key, value, key, value ...
*/
Map map = new HashMap();
for (int i = 0; i < data.length; i+=2) {
map.put(data[i].toString(), data[i + 1]);
}
success(response, 200, "", map);
}
}
public static void success(HttpServletResponse response, int code) {
success(response, code, "Response Success");
}
public static void success(HttpServletResponse response, String description) {
success(response, 200, description);
}
public static void success(HttpServletResponse response, int code, String description) {
success(response, code, description, null);
}
public static void success(HttpServletResponse response, int code, String description, Object data) {
both(response, code, description, data);
}
//============================================
// Fail
//============================================
public static boolean isFail(int code) {
return (code >= 500 && code <= 600);
}
public static void fail(HttpServletResponse response) {
fail(response, 500);
}
public static void fail(HttpServletResponse response, Object data) {
fail(response, 500, "", data);
}
public static void fail(HttpServletResponse response, int code) {
fail(response, code, "Response Fail");
}
public static void fail(HttpServletResponse response, String description) {
fail(response, 500, description);
}
public static void fail(HttpServletResponse response, int code, String description) {
fail(response, 500, description, null);
}
public static void fail(HttpServletResponse response, int code, String description, Object data) {
both(response, code, description, data);
}
//============================================
// Both
//============================================
/**
* 根据数量设置结果是成功还是失败
*/
public static void setResultByCount(HttpServletResponse response, int count) {
if (count > 0) {
ResponseUtil.success(response, "SUCCESS");
} else {
ResponseUtil.fail(response, "FAIL");
}
}
private static void both(HttpServletResponse response, int code, String description, Object data) {
PrintWriter writer = null;
try {
response.getWriter().write(JSON.toJSONString(new Result(code, description, data)));
} catch (IOException e) {
e.printStackTrace();
} finally {
if (writer != null) {
writer.close();
}
}
}
}
@Data
class Result {
private int code;
private String description = "";
private Object data;
public Result(int code) {
this.code = code;
}
public Result(int code, String description) {
this.code = code;
this.description = description;
}
public Result(int code, String description, Object data) {
this.code = code;
this.description = description;
this.data = data;
}
}
lombok 需要插件中搜索安装,然后代码里边需要再次导入。
Servlet 工具类。使用反射进行使用字符串方式调用里面的方法。
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class ServletUtil {
public static void invoke(HttpServlet servlet, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String method = request.getParameter("method");
System.out.println("method=" + method);
try {
if (method != null) {
servlet.getClass()
.getDeclaredMethod(method, HttpServletRequest.class, HttpServletResponse.class)
.invoke(servlet, request, response);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}