spring boot 自定义 HttpMessageConverter

package com.converter;

public class DemoObj {

	private Long id;
	
	private String name;
	
	public DemoObj() {
		// TODO Auto-generated constructor stub
	}

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public DemoObj(Long id, String name) {
		super();
		this.id = id;
		this.name = name;
	}
	
	
}
package com.converter;

import java.io.IOException;
import java.nio.charset.Charset;

import org.springframework.http.HttpInputMessage;
import org.springframework.http.HttpOutputMessage;
import org.springframework.http.MediaType;
import org.springframework.http.converter.AbstractHttpMessageConverter;
import org.springframework.http.converter.HttpMessageNotReadableException;
import org.springframework.http.converter.HttpMessageNotWritableException;
import org.springframework.util.StreamUtils;

public class MyMessageConverter extends AbstractHttpMessageConverter<DemoObj> {
	
	public MyMessageConverter() {
		super(new MediaType("application", "x-wisely", Charset.forName("UTF-8")));
	}

	@Override
	protected boolean supports(Class<?> clazz) {
		return DemoObj.class.isAssignableFrom(clazz);
	}

	@Override
	protected DemoObj readInternal(Class<? extends DemoObj> clazz, HttpInputMessage inputMessage)
			throws IOException, HttpMessageNotReadableException {
		String temp = StreamUtils.copyToString(inputMessage.getBody(), Charset.forName("UTF-8"));
		String tempArr[] = temp.split("-");
		return new DemoObj(new Long(tempArr[0]), tempArr[1]);
	}

	@Override
	protected void writeInternal(DemoObj t, HttpOutputMessage outputMessage)
			throws IOException, HttpMessageNotWritableException {
		String out = "hello: " + t.getId() + t.getName();
		outputMessage.getBody().write(out.getBytes());
	}

}
package com.converter;

import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestController {

	@RequestMapping("converter")
	public DemoObj converter(@RequestBody DemoObj obj) {
		return obj;
	}
}
package com;

import java.util.List;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

import com.converter.MyMessageConverter;
@EnableWebMvc
@Configuration
public class MyWebmvcConfig extends WebMvcConfigurerAdapter {

	@Override
	public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
		converters.add(converter());
	}
	
	@Bean
	public MyMessageConverter converter() {
		return new MyMessageConverter();
	}
}
package com.activiti.filter;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * filter过滤器,获取项目路径,设置ajax超时标识
 *
 * @author billJiang QQ:475572229
 */
@WebFilter(filterName = "authFilter", urlPatterns = "/*")
public class SystemFilter implements Filter {

    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException,
            ServletException {
        HttpServletRequest request = (HttpServletRequest) servletRequest;
        HttpServletResponse response = (HttpServletResponse) servletResponse;
        String orig = request.getHeader("origin");
        response.setHeader("Access-Control-Allow-Origin",orig);
        response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, " +
                "WG-App-Version, WG-Device-Id, WG-Network-Type, WG-Vendor, WG-OS-Type, WG-OS-Version, WG-Device-Model, WG-CPU, WG-Sid, WG-App-Id, WG-Token");
        response.setHeader("Access-Control-Allow-Methods", "POST, GET");
        response.setHeader("Access-Control-Allow-Credentials", "true");
        System.out.println(request.getRequestURL());
        filterChain.doFilter(request, servletResponse);
    }

    @Override
    public void destroy() {

    }

    @Override
    public void init(FilterConfig arg0) throws ServletException {

    }
}
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
	</head>
	<body>
		<div id="app"></div>

		<script src="https://cdn.bootcss.com/jquery/2.2.2/jquery.js"></script>
		<script src="https://cdn.bootcss.com/vue/2.6.10/vue.js"></script>
		<script src="ajax_rwq.js"></script>

		<script>
			$.ajax({
				type: 'post',
				//url: "http://localhost:8087" + url,
				url: "http://localhost:8090/converter",
				beforeSend: function() {
					console.log("beforeSend");
				},
				data: '1-tom',
				//dataType: "json",
				xhrFields: {
					withCredentials: false
				},
				crossDomain: true,
				async: true,
				contentType: 'application/x-wisely'
			})
				.done(data => {
					console.log(data);
				})
				.fail(error => {
					console.log("fail");
				});
			var vm = new Vue({
				el: "#app",
				data: {
					models: []
				},
				methods: {
					toHome: function(id) {
						location.href = "index.html";
					}
				},
				created: function() {}
			});
		</script>
	</body>
</html>
发布了476 篇原创文章 · 获赞 3 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_37769323/article/details/104717850