angular与SpringMVC项目 跨域请求

来源:互联网 发布:试点网络学校基础 编辑:程序博客网 时间:2024/04/29 20:10

一、springMVC后台操作:

1.注解:

@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)public @interface SetCORNResponseHeader {}
2.springMVC  point
public class ResponseHeaderAdvice implements AfterReturningAdvice {@Overridepublic void afterReturning(Object returnValue, Method method, Object[] args, Object target) throws Throwable {if (method.getAnnotationsByType(SetCORNResponseHeader.class).length>0) {for (Object arg : args) {if (arg instanceof HttpServletResponse) {((HttpServletResponse) arg).setHeader("Access-Control-Allow-Origin", "*");return;}}}}}

3.配置

<bean id="responseHeaderAdvice" class="com.bio.framework.util.spring.ResponseHeaderAdvice"/><aop:config ><aop:pointcut id="pointcutController"expression="execution (* com.bio..api.*Api.*(..))" /><aop:advisor advice-ref="responseHeaderAdvice" pointcut-ref="pointcutController" /></aop:config>

4.Controller使用

@ResponseBody@RequestMapping(value = "svcApplyShow", method = RequestMethod.POST, produces = "application/json")@SetCORNResponseHeaderpublic String[] svcApplyShow(HttpServletRequest request, HttpServletResponse response) throws IOException, InstantiationException, IllegalAccessException {List<SvcApply> list2 = convertToList(request, SvcApply.class);System.out.println(list2);String[] aaa = { "ni hao", "12", "你好" };return aaa;}@ResponseBody@RequestMapping(value = "svcApplyShowGet", method = RequestMethod.GET)@SetCORNResponseHeaderpublic String[] svcApplyShowGet(Integer applyId, HttpServletResponse response) {Map<String, Object> map = new HashMap<>();SvcApply svcApply = svcApplyManager.getById(applyId);map.put("svcApply", svcApply);if (ObjectUtils.isNotEmpty(svcApply.getFamilyId())) {LpsFamily lpsFamily = lpsFamilyManager.getById(33);map.put("lpsFamily", lpsFamily);}List<SvcProject> list = svcProjectManager.getAllObjects();String[] aaa = { "ni hao", "12", "你好" };return aaa;}public <T> T convertToClass(HttpServletRequest request, Class<T> c)throws InstantiationException, IllegalAccessException {Map map = request.getParameterMap();Set keys = map.keySet();T t = c.newInstance();for (Object key : keys) {JSONObject jsonObject = JSONObject.fromObject(key);t = (T) JSONObject.toBean(jsonObject, t.getClass());}return (T) t;}public <T> List<T> convertToList(HttpServletRequest request, Class<T> c)throws InstantiationException, IllegalAccessException {Map map = request.getParameterMap();Set keys = map.keySet();T t = c.newInstance();List<T> list=new ArrayList<T>();for (Object key : keys) {JSONArray jsonArray = JSONArray.fromObject(key);list = (List<T>) JSONArray.toCollection(jsonArray, t.getClass());}return list;}

二、angular跨域请求post

$http({          method: "post",          url: "XXX/svcApplyShow.do",          data: myBuilding,          headers: {            'Content-type': 'application/x-www-form-urlencoded;charset=utf-8'          }        });

三、restangular跨域请求

1.config配置

    //配置restangularProvider请求路径    RestangularProvider.setBaseUrl('XXX/app');    //设置后缀    RestangularProvider.setRequestSuffix('.do');    //post跨域请求配置    RestangularProvider.setDefaultHeaders({'Content-type': 'application/x-www-form-urlencoded;charset=utf-8'});

2.get请求

Restangular.one('svcApplyShowGet').get({applyId:1});

3.post请求

return Restangular.one('').post('svcApplyShow',{applyId:1,aaa:"12"});

四、转换类

package com.bio.web.fw.util;import java.util.ArrayList;import java.util.List;import java.util.Map;import java.util.Set;import javax.servlet.http.HttpServletRequest;import net.sf.json.JSONArray;import net.sf.json.JSONObject;public class ConvertUtil {private static Object getFirstObject(Set keys) {Object obj = new Object();for (Object key : keys) {obj = key;}return obj;}public static <T> T convertToClass(HttpServletRequest request, Class<T> c)throws InstantiationException, IllegalAccessException {Map map = request.getParameterMap();T t = c.newInstance();JSONObject jsonObject = JSONObject.fromObject(getFirstObject(map.keySet()));t = (T) JSONObject.toBean(jsonObject, t.getClass());return (T) t;}public static <T> List<T> convertToList(HttpServletRequest request, Class<T> c)throws InstantiationException, IllegalAccessException {Map map = request.getParameterMap();T t = c.newInstance();List<T> list = new ArrayList<T>();JSONArray jsonArray = JSONArray.fromObject(getFirstObject(map.keySet()));list = (List<T>) JSONArray.toCollection(jsonArray, t.getClass());return list;}public static Integer[] convertToIntegerArray(HttpServletRequest request)throws InstantiationException, IllegalAccessException {Map map = request.getParameterMap();JSONArray jsonArray = JSONArray.fromObject(getFirstObject(map.keySet()));Integer[] intarray = (Integer[]) JSONArray.toArray(jsonArray, Integer.class);return intarray;}public static String[] convertToStringArray(HttpServletRequest request)throws InstantiationException, IllegalAccessException {Map map = request.getParameterMap();JSONArray jsonArray = JSONArray.fromObject(getFirstObject(map.keySet()));String[] strarray = (String[]) JSONArray.toArray(jsonArray, String.class);return strarray;}}

五、另一种跨域配置IONIC跨域配置http://ionichina.com/topic/54f051698cbbaa7a56a49f98

在ionic.project中配置{  "name": "项目名称",  "app_id": "",  "gulpStartupTasks": [    "sass",    "watch"  ],  "watchPatterns": [    "www/**/*",    "!www/lib/**/*"  ]  ,  "proxies": [    {      "path": "/aa/bb/api",      "proxyUrl": "http://172.28.11.1:8088/aa/bb/api"    }  ]}RestangularProvider.setBaseUrl("http://localhost:8100/aa/bb/api");RestangularProvider.setRequestSuffix(".do");

1 0