发表于: 2017-08-04 20:35:21
2 979
今天完成的:
看了DB设计,只留一张标签表,公司和职位与改表关联,挺好的。
看了一部分接口。
收获:
1.JAVA中有三种WebService规范,分别是JAX-WS(JAX-RPC)、JAX-RS、JAXM&SAAJ。
WebService一般分为两种:
REST式WebService,基于HTTP协议;
RPC式WebService,基于SOAP协议,不过SOAP也是基于HTTP传输的。
SpringMVC里的restful是REST式的,但并没有严格遵守规范。
可参考:http://www.cnblogs.com/coprince/p/5732822.html
https://wenku.baidu.com/view/4ef16c0eed630b1c59eeb53b.html
2.dispatcherServlet的伪静态化映射
java静态化页面:常用的有三种
①、URLRewrite实现URL地址伪静态化。
②、JSPWrite重写实现JSP页面静态化。
③、采用过滤器Filter实现JSP页面静态化。
<servlet-mapping>
<servlet-name>taotao-portal</servlet-name>
<!--伪静态化,表现为静态页面html,实际上仍是动态处理。目的是针对seo搜索引擎优化。
搜索引擎爬取数据时更喜欢简单易读的页面,如静态页面。搜索时权重可能会提高-->
<url-pattern>*.html</url-pattern>
</servlet-mapping>
3.js跨域调用
ip相同,端口号不同也算跨域。js为了安全性禁止跨域访问数据,可以使用jsonp用js将数据包装起来传输。
①、在js中不能跨域请求数据,js可以跨域请求js片段。但不能跨域请求数据。
②、可以把数据包装成js片段。可以把数据使用js方法来包装,形成一条方法的调用语句。
③、可以使用ajax请求js片段,当js判断到达浏览器会被立即执行。
④、在浏览器端,先创建好回调方法,在回调方法中通过参数可以获得请求的数据。
4.json节点对象
//使用jackson包下的@jsonProperty注解将该属性的名称序列化为另外一个名称。
//反序列化的时候也有用,里面写上返回的json串对应的名字
@JsonProperty("u")
private String url;
一些层级复杂的如商品类目,有多重嵌套的父子关系。可以根据数据库关系映射为json节点对象,再转为json给前端。
5.组装json传给前端jsonp解析
@Controller
@RequestMapping("/item/cat")
public class ItemCatController {
@Autowired
private ItemCatService itemCatService;
//produce后面可以拼接参数,比如编码设置为application/json;charset="utf-8"
@RequestMapping(value = "/list", produces = MediaType.APPLICATION_JSON_VALUE + ";charset=utf-8")
@ResponseBody
public String getItemCatList(String callback) {
/**
*@Author hfismyangel@163.com
*@Description:两个作用:
* 1.分发参数
* 2.将json组装为js函数以支持jsonp。在前端js中通过jsonp解析以解决js跨域问题
*@Date: 21:37 2017/8/4
* @param callback
*/
ItemCatResult result = itemCatService.getItemCatList();
/*org.apache.commons.lang3包下的StringUtils方法的操作对象是String,是JDK提供的String类型操作方法的补充
isBlank可验证三种不合法字符串:null,""," "。
*/
if (StringUtils.isBlank(callback)) {
//需要把result转换成字符串
String json = JsonUtils.objectToJson(result);
return json;
}
//如果字符串不为空,需要支持jsonp调用
//需要把result转换成字符串
String json = JsonUtils.objectToJson(result);
return callback + "(" + json + ");";/* spring4.1以上支持了jsonp,使用MappingJacksonValue。
MappingJacksonValue mappingJacksonValue = new MappingJacksonValue(result);
mappingJacksonValue.setJsonpFunction(callback);
return mappingJacksonValue;
*/
}
}
遇到的问题:
暂无
明天的计划:
写接口
评论