对今天遇到的问题,解决的没解决的做个总结
ssm这一套组合也算是入门一丢丢了。开始继续跟着实战项目走(网上找的视频课程),总结每天学到的知识,记录下遇到的问题。
后台管理项目已经敲完了,基本之前学过的都用到了,今天开始到前台系统的搭建。
用SpringMvc搭建rest服务,刚接触认识太少,网上看了几篇关于rest帖子,看完还是有点糊涂,慢慢来吧
关于rest的一点点认识:先写一下以后回来改 1.一条url指定一条资源,一条url就单指定一条资源,而不添加其他语句来作对资源的描述和操作
2.对url乱用,各种条件糅合在一起,各种请求方式使用意义不明确。rest将复杂且包含多种意义的难懂url做按规则匹配优化:get、post、put、delete。和读增改删做相应匹配。
这个rest服务让前台系统通过这个服务层系统做资源交互,和数据库打交道的事由这个rest服务层(和后台管理系统)来做,并且可以为多个前台展示系统提供服务,不限于浏览器端
个人感觉写这个服务层和之前根据前台代码写后台管理系统最大区别在于做RequestMapping资源映射,之前是根据前台请求路径来配置资源映射,而这个rest服务层是比较任性,我想定义啥样定义啥样,爱用不用。打个比方,原来是被出差,让你去哪干啥,你就得去哪干啥。那现在呢,挺直腰杆做主人,不提供上门服务,别人想要干什么必须亲自上门找
返回json乱码解决方法
方法一produces参数中设置字符集@RequestMapping(value="/itemcat/list",produces=MediaType.APPLICATION_JSON_VALUE+";charset=utf-8")
方法二
@RequestMapping("/itemcat/list")
@ResponseBody
//Spring MVC 4.1 以後
//定義接口愛用不用
public Object getItemCatList(String callback)
{
CatResult catResult=itemCatService.getItemCatList();
MappingJacksonValue mappingJacksonValue=new MappingJacksonValue(catResult);
mappingJacksonValue.setJsonpFunction(callback);
return mappingJacksonValue;
}
jsonp
Js不能跨域获取数据,但js跨域请求js脚本是可以的。将数据封装成js语句(数据作为参数),让跨域请求得到这个脚本,并且执行间接实现跨区请求数据
跨域请求中传递给前台系统服务层的重要参数是方法名(),服务层也依据这个方法名构建返回脚本,给前台展示页面作为回调函数
理解可能有误。
伪静态资源,不是蒙用户的是蒙搜索引擎的(搜索引擎喜欢静态资源)
<servlet-mapping>
<servlet-name>taotao-portal</servlet-name>
<!-- 伪静态化 -->
<url-pattern>*.html</url-pattern>
</servlet-mapping>
比如http://localhost:8082/index.html 这个链接最后将得到的仍然是index.jsp