您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
15_案例_校验用户名是否存在(setContentType对于jquery ajax的get的影响及writeValue与writeValueAsString的区别)
发布时间:2022-10-01 16:22:53编辑:雪饮阅读()
情况1
当jquery的get方法没有指定header头时,则一般的是按响应头里面的ContentType来的,如果响应头中ContentType是包含“application/json”,则get方法第三个参数即回调方法里面接收到的data是服务端响应的json字符串转换为JavaScript的json对象,否则就是普通JavaScript字符串了。
情况2
之前我们向前端响应json数据时候是直接使用response.getWriter().write方法传入一个转换后的json字符串。
那么也可以使用objectMapper.writeValue方法传入第一个参数response.getWriter(),然后第二个参数就是待转换为json字符串的java对象。
实例
基于以上的两种情况则我们的servlet编写如:
package package3.servlet;
import com.fasterxml.jackson.databind.ObjectMapper;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
@WebServlet("/ServletTest")
public class ServletTest extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ObjectMapper objectMapper = new ObjectMapper();
ArrayList<Person> persons=new ArrayList<Person>();
Person legalPerson=new Person("布鲁斯韦恩",28);
persons.add(new Person("雪饮",24));
persons.add(legalPerson);
Company company1=new Company("韦恩企业",130000.00,persons,legalPerson,new Date());
ArrayList<Person> persons2=new ArrayList<Person>();
Person legalPerson2=new Person("kasumi",28);
persons.add(new Person("murphy pendleton",24));
persons.add(legalPerson2);
Company company2=new Company("雪饮网络科技",150000.00,persons2,legalPerson2,new Date());
HashMap<String,Company> hm=new HashMap<String,Company>();
hm.put("company1",company1);
hm.put("company2",company2);
String is_ajax=request.getParameter("is_ajax");
if(is_ajax.equals("is_ajax")){
response.setContentType("application/json;charset=utf-8");
}
else{
response.setContentType("text/html;charset=utf-8");
}
String write_mode=request.getParameter("write_mode");
if(write_mode.equals("write")){
response.getWriter().write(objectMapper.writeValueAsString(hm));
}
if(write_mode.equals("writeValue")){
objectMapper.writeValue(response.getWriter(),hm);
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
index.jsp如:
<%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2022/9/23
Time: 21:41
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
<script src="https://cdn.staticfile.org/jquery/2.0.3/jquery.min.js"></script>
<script>
function getRequest(is_ajax,write_mode){
var dir="<%=pageContext.getServletContext().getContextPath()%>";
$.get(dir+"/ServletTest",{is_ajax,write_mode},function(data){
console.log("data",data);
});
}
</script>
</head>
<body>
<button onclick="getRequest('is_ajax','write')">发起请求(is_ajax)</button>
<button onclick="getRequest('','write')">发起请求(非is_ajax)</button>
<button onclick="getRequest('','write')">发起请求(write)</button>
<button onclick="getRequest('','writeValue')">发起请求(writeValue)</button>
</body>
</html>
关键字词:setContentType,application/json,objectMapper.writeValue,response.getWriter().wri
相关文章
-
无相关信息