支持jsonP的Controller写法
支持jsonP的Controller写法
package com.taotao.sso.controller; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.converter.json.MappingJacksonValue;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody; import com.taotao.common.pojo.TaotaoResult;
import com.taotao.common.utils.ExceptionUtil;
import com.taotao.sso.service.UserService; @Controller
@RequestMapping("/user")
public class UserController { @Autowired
private UserService userService; /**校验用户名、电话、邮箱是否重复方法
* 接口文档:
* 请求方法 GET
URL http://sso.taotao.com/user/check/{param}/{type}
参数说明
格式如:zhangsan/ 1,其中zhangsan是校验的数据,type为类型,可选参数1、2、3分别代表username、phone、email 可选参数callback:如果有此参数表示此方法为jsonp请求,需要支持jsonp。
*/
@RequestMapping("/check/{param}/{type}")
@ResponseBody
public Object checkData(@PathVariable String param,@PathVariable Integer type,String callback){
//返回结果
TaotaoResult result = null;
//校验参数是否正确(注意:在Controller中校验即可,service中可以不校验了)
if (StringUtils.isEmpty(param)) {
result = TaotaoResult.build(400, "校验内容不能为空");
}
if (type==null) {
result = TaotaoResult.build(400, "校验内容参数不能为空");
}
if (1!=type && 2!=type && 3!=type) {
result = TaotaoResult.build(400, "校验内容类型错误");
}
//说明参数异常需要提前返回
if (result!=null) {
//判断是否需要支持jsonP
if (callback!=null) {
//需要将返回结果封装成支持jsonP的形式(注意:这种返回json支持的写法)
MappingJacksonValue mappingJacksonValue = new MappingJacksonValue(result);
mappingJacksonValue.setJsonpFunction(callback);
return mappingJacksonValue;
}else{
return result;
}
}
//因为是提供接口服务,所以要处理可能出现的逻辑上的异常
try {
//调用service执行正常的业务逻辑
result = userService.checkData(param, type);
} catch (Exception e) {
result = TaotaoResult.build(500, ExceptionUtil.getStackTrace(e));
}
//正常返回也需要判断是否需要jsonP
if (null!=callback) {
MappingJacksonValue mappingJacksonValue = new MappingJacksonValue(result);
mappingJacksonValue.setJsonpFunction(callback);
return mappingJacksonValue;
}else{
return result;
}
}
}
附 service(仅供参考异常处理位置):
package com.taotao.sso.service.impl; import java.util.List; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import com.taotao.common.pojo.TaotaoResult;
import com.taotao.mapper.TbUserMapper;
import com.taotao.pojo.TbUser;
import com.taotao.pojo.TbUserExample;
import com.taotao.pojo.TbUserExample.Criteria;
import com.taotao.sso.service.UserService;
/**
* 用户管理的service
* @author Administrator
*/
@Service
public class UserServiceImpl implements UserService { @Autowired
private TbUserMapper userMapper; //校验用户名、电话、邮箱 是否不重复
@Override
public TaotaoResult checkData(String content, Integer type) {
//创建查询对象
TbUserExample example = new TbUserExample();
Criteria criteria = example.createCriteria();
//封装查询条件
switch (type) {
case 1:
criteria.andUsernameEqualTo(content);
break;
case 2:
criteria.andPhoneEqualTo(content);
break;
case 3:
criteria.andEmailEqualTo(content);
break;
}
//因为在Controller层中调用此接口前就已经校验过 type的值一定为123中的一个,所以这里不用再次校验了
//执行查询
List<TbUser> list = userMapper.selectByExample(example);
if (list!=null && list.size()>0) {
return TaotaoResult.ok(false);
}
return TaotaoResult.ok(true);
}
}
支持jsonP的Controller写法的更多相关文章
- 通过扩展让ASP.NET Web API支持JSONP
同源策略(Same Origin Policy)的存在导致了"源"自A的脚本只能操作"同源"页面的DOM,"跨源"操作来源于B的页面将会被拒 ...
- (转)通过扩展让ASP.NET Web API支持JSONP
原文地址:http://www.cnblogs.com/artech/p/3460544.html 同源策略(Same Origin Policy)的存在导致了“源”自A的脚本只能操作“同源”页面的D ...
- 支持JSONP跨域的对象
支持JSONP跨域的对象 1:img 2:iframe 3:link 4:script 为什么,JSONP 最终选择是 script 实现呢?度娘来也! 平常我们进行JSONP请求数据,因为 json ...
- 通过扩展让ASP.NET Web API支持JSONP -摘自网络
同源策略(Same Origin Policy)的存在导致了“源”自A的脚本只能操作“同源”页面的DOM,“跨源”操作来源于B的页面将会被拒绝.同源策略以及跨域资源共享在大部分情况下针对的是Ajax请 ...
- SpringMVC中fastjson支持jsonp的实现
前边一篇文章主要说了下前端处理jsonp的方式,这篇主要介绍了后台接收和响应jsonp的一种方式 继承fastjson消息转换器类:com.alibaba.fastjson.support.sprin ...
- 使Asp.net WebApi支持JSONP和Cors跨域访问
1.服务端处理 同源策略(Same Origin Policy)的存在导致了“源”自A的脚本只能操作“同源”页面的DOM,“跨源”操作来源于B的页面将会被拒绝.同源策略以及跨域资源共享在大部分情况下针 ...
- java web支持jsonp跨域
jsonp跨域请求处理 Jsonp(JSON with Padding) 是 json的一种"使用模式",可以让网页从别的域名(网站)那获取资料,绕过同源策略(若地址里面的协议.域 ...
- ahjesus 让我的MVC web API支持JsonP跨域
无数被跨域请求爆出翔来的人 遇到请求成功却不能进入success 总是提示parsererror 参考一下两篇文章吧 参考文章http://www.asp.net/web-api/overview/s ...
- vscode 完全支持zeng code的写法
一.快速编写HTML代码 1. 初始化 HTML文档需要包含一些固定的标签,比如<html>.<head>.<body>等,现在你只需要1秒钟就可以输入这些标签. ...
随机推荐
- 码云配置webhooks自动触发拉取代码
webhooks的使用 码云和github的钩子叫webhooks 每次您 push 代码后,都会给远程 HTTP URL 发送一个 POST 请求 码云项目管理页面的webhooks设置: http ...
- HDU暑假多校第四场J-Let Sudoku Rotate
一.题意 Sudoku is a logic-based, combinatorial number-placement puzzle, which is popular around the wor ...
- git的关于测试的相关的内容
今天,我们来讲一下git的分支的一些内容,在以前的时候,我一直都以为,对于一个项目,这个时候,我们把这个项目叫做项目a项目,这个a项目有master,staging,以及我自己的分支xxx,当我想上测 ...
- JavaScript---设计模式之迭代器模式
迭代器模式提供一种方法顺序访问一个聚合对象中各个元素,而又不需要暴露该方法中的内部表示. jQuery中我们经常会用到一个each函数就是迭代器模式 作用 为遍历不同的集合结构提供一个统一的接口,从而 ...
- struts2官方 中文教程 系列七:消息资源文件
介绍 在本教程中,我们将探索使用Struts 2消息资源功能(也称为 resource bundles 资源绑定).消息资源提供了一种简单的方法,可以将文本放在一个视图页面中,通过应用程序,创建表单字 ...
- Hackerrank - [Algo] Matrix Rotation
https://www.hackerrank.com/challenges/matrix-rotation-algo 又是一道耗了两小时以上的题,做完了才想起来,这不就是几年前在POJ上做过的一个同类 ...
- ubuntu开启crontab日志
今天发现Ubuntu的/var/log下没有cron日志,用下面的命令即可开启: -default.conf cron.* /var/log/cron.log #将cron前 ...
- java 泛型类转型
public class NeedCasting { @SuppressWarnings("unchecked") public void f(String[] args)thro ...
- Python学习笔记(二)一一一字典总结
创建方式:1 直接创建 newDictonary={‘key’:'value',} 2 列表转字典(dict函数) 3 基本操作:len 返回总数 dictionary[k] 返回k对应的值 ...
- 2016弱校联盟十一专场10.3 We don't wanna work!
能把 not working now 写成 not working hard now 还查一晚上也是没谁了 我的做法是维护两个set 分别是前20% 和后80% #include<iostrea ...