时间:2014-12-09 来源:

SpringMVC简单构造restful,并返回json【编程语言】

文章要要点:

 

如果有第二个参数div+css+js切图, 那第二个参数只能是map的

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 @RequestMapping(value={"/info/{pid}",method=RequestMethod.GET)     public ModelAndView getProductInfo(@PathVariable String pid,HttpServletResponse response) throws Exception {               Map<String,Object>();                       Product pro = new Product();           pro.setPid(pid);           map.put("name", pro);                       ModelAndView mav=new ModelAndView("products/list",map);                       return mav;               }  

好,div+css+js切图做个测试 JSP代码:

快速搭建构造restful的StringMvc

web.xml配置

? 1 2 3 4 5 6 7  <!-- 启动注解驱动的Spring MVC功能承接网站前端,注册请求url和注解POJO类方法的映射-->    <mvc:annotation-driven />    <!-- 启动包扫描功能,承接网站前端以便注册带有@Controller、@Service、@repository、@Component等注解的类成为spring的bean -->    <context:component-scan base-package="com.dsp" />          <!-- 对模型视图名称的解析psd切图html,在请求时模型视图名称添加前后缀 -->    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/WEB-INF/jsp/" p:suffix=".jsp" /> applicationContext.xml暂时没写东西

    可以保证每个请求都会创建一个新的实例,承接网页制作  还有几个参数: session  request

? 1 2 3 4 5 6 7 8 9 10 11 12 <%@ page language="java" contentType="text/html; charset=UTF-8"     pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title> 你好</title> </head> <body> ${name } </body> </html> 地址栏输入 http://localhost:8080/RestFulMvc/api/products/list

    @Scope("session")的意思就是web外包,只要用户不退出,web外包实例就一直存在网页切图制作,

 

method: 请求的method类型 GET POST PUT DELETE等

value: 就是映射的实际地址,网页切图制作这个上面有说过div+css+js切图, 有几个比较感兴趣的

   2. 带参数的 /info/{proId}          访问地址类似 http://localhost:8080/项目名/api/products/info/0001

GET, PUT ,"pname":"23123"}} 如果想要的结果为

让我们看下面这段代码

JAR包

暂时先介绍两个属性 value和method

如果不用@PathVariable接收大括号里的值,也可以用bean来接收:

快速搭建构造restful的StringMvc

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 <servlet>     <servlet-name>spring</servlet-name>     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>     <!-- 可以自定义servlet.xml配置文件的位置和名称,div切图排版默认为WEB-INF目录下网页切图制作,如spring-servlet.xml-->     <init-param>         <param-name>contextConfigLocation</param-name>         <param-value>classpath:config/spring-servlet.xml</param-value><!-- 现定义为src下config包里(个人习惯) -->     </init-param>     <load-on-startup>1</load-on-startup>    </servlet>      <servlet-mapping>      <servlet-name>spring</servlet-name>      <url-pattern>/api/*</url-pattern>  </servlet-mapping>     <!-- Spring配置 -->  <listener>      <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  </listener>     <!-- 指定Spring Bean的配置文件所在目录.默认配置在WEB-INF目录下 -->  <context-param>      <param-name>contextConfigLocation</param-name>      <param-value>classpath:config/applicationContext-*.xml</param-value>  </context-param> spring-servlet.xml配置

测试: 输入地址 :  http://localhost:8080/RestFulMvc/api/products/info/00001.json

 

具体可以参考我参考的文章 http://blog.sina.com.cn/s/blog_72827fb10101pl9i.html

list.jsp新增form表单如下

测试结果为

? 1 2 3 4 5 6 7 8 @RequestMapping(value="/info/{pid}/{pname}", HttpServletRequest request, pro.getPid()+"___"+pro.getPname());       return "products/list";               } 访问地址: http://localhost:8080/RestFulMvc/api/products/info/00001/23123

接收参数可以在参数前加 @@RequestBody

? 1 2 3 4 5 6 7 8 @RequestMapping(value="/info/{proId}", HttpServletRequest request, proId);                       return "products/list";               } @PathVariable注解获取的就是大括号里的值

 

得到的结果为

  l

该配置的配置完了网页切图制作, 只需要用对象接就可以了

 

第一个参数是返回的地址div+css+js切图,和以往一样,div+css+js切图  第二个参数以后承接网站前端, 是传给前台的值 .

测试 : 输入地址 http://localhost:8080/RestFulMvc/api/products/info/00001

得到的结果为 :

最后 如果是nodejs  ajax提交的数据,承接网站前端以application/json格式提交时psd切图html,method=RequestMethod.POST)     public String insertProduct(Product pro,HttpServletResponse response) throws Exception {             request.setAttribute("name", POST , DELETE的各种调用

@RequestMapping :是一个用来处理请求地址映射的注解承接网站前端,可用于类或方法上.用于类上,承接网站前端表示类中的所有响应请求的方法都是   以该地址作为父路径. 比如现在访问getProducts方法的地址就是 :

{"pro":{"pid":"00001","name":"00001"}  

如果写完一个方法web外包, 可同时手机端需要调接口怎么办网页切图制作, 如果前台的一层皮换成了以nodejs为服务的框架调用怎么办

 

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29  <!-- ContentNegotiatingViewResolver视图解析器,网页切图制作利用他就可以配置多种返回值 -->  <bean  class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">               <!-- 这里是否忽略掉accept header,默认就是false -->    <property name="ignoreAcceptHeader" value="true" />            <!-- 如果所有的mediaType都没匹配上,div+css+js切图就会使用defaultContentType -->    <property name="defaultContentType" value="text/html" />            <property name="mediaTypes">         <map>           <entry key="json" value="application/json" />            <entry key="xml" value="application/xml" />           </map>        </property>      <!-- 默认使用MappingJacksonJsonView生成jsonview-->   <property name="defaultViews">         <list>           <bean  class="org.springframework.web.servlet.view.json.MappingJacksonJsonView">                  <property  name="extractValueFromSingleKeyModel" value="true" />            </bean>               <bean  class="org.springframework.web.servlet.view.xml.MarshallingView">              <property name="marshaller">                 <bean  class="org.springframework.oxm.xstream.XStreamMarshaller" />               </property>             </bean>            </list>          </property>     </bean>  

可以每个需求再写一个方法返回JSON, 可下面这个可以同一资源,页面div重构多种返回

    request : 就是作用域换成了request

 

   1. 正常的 /list                          访问地址类似 http://localhost:8080/项目名/api/products/list

public ModelAndView getProductInfo(@RequestBody Product pro, HttpServletRequest request .....

这样同一个地址,手机div+css只要在后面加 .json  mediaTypes就可以把http://localhost:8080/RestFulMvc/api/products/info/00001/23123.json 的 .json映射到application/json

刚才写的是第一种GET,既可以返回对象给JSP, 也可以返回JSON

后台代码

值得注意的是,div页面 如果不加 <property  name="extractValueFromSingleKeyModel" value="true" />

得到结果

它可以把json转换为对象里的属性

@Controller : 不多做解释 , 标注它为Controller

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 package com.dsp.action; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @Scope("prototype")//单列模式 @Controller @RequestMapping("/products") public class TestController{     /**   * 测试方法,div+css+js切图HelloWord   * @param request   * @param response   * @return   * @throws Exception   */  @RequestMapping(value="/list",HttpServletResponse response) throws Exception {             request.setAttribute("name",顾名思义web外包,method=RequestMethod.GET)

也可以第二个参数为建网页切图制作, 第三个参数为值的方式传给前台,网页切图制作  具体大家可以new一个ModelAndView看看它提供的构造方法

   http://localhost:8080/项目名/上面web.xml配置(api)/products/list

spring-servlet.xml加入如下配置

{"pid":"00001","pname":"23123"} 则不要前面的对象名称包在外面时,网页重构报价 请加上它

执行成功.

 

首现搭建一个简单的restfulMvc框架承接网站前端,  并上配置文件,承接网站前端 后期会增加带JSON返回值的配置

public String getProductInfo(Product pro,HttpServletResponse response)...

点击次数:16124
作者:
web前端行业资讯
Web new NewsList
Postgres10开发者新特性 ,,2017年12月28日阿里巴巴、狗尾草、苏大联合论文:基于对抗学习的众包标注用于中文命名实体识别 ,,2017年12月28日柯洁的2017:20岁,与AI斗与人类斗,其乐无穷 ,,2017年12月28日如果机器人拥有痛觉,这个世界会有哪些不一样? ,,2017年12月28日苹果经典电脑Lisa源代码修复完成将于2018年开源 ,,2017年12月28日腾讯浏览指数发布年终榜单2017年人们都关注哪些AI话题? ,,2017年12月28日除了发现开普勒90,NASA还靠AI做了什么? ,,2017年12月28日柯洁宣布:明年4月,将再次与围棋AI交锋 ,,2017年12月28日百度无人车美国首秀CES将发布Apollo2.0 ,,2017年12月28日这四种技术发展趋势将在2018年改变世界 ,,2017年12月28日2017:谷歌DeepMind团队的年度回顾 ,,2017年12月28日封杀这个公式,AI智商将为零 ,,2017年12月28日微软AI高管:要让所有人、所有机构都用上人工智能 ,,2017年12月28日为什么Linux桌面年一直未到来 ,,2017年12月28日AppleLisa操作系统将开源 ,,2017年12月28日2018年9大技术趋势预测 ,,2017年12月28日谷歌研究院发布NIMA:能评价图像有多美,还能让图像变得更美 ,,2017年12月28日苹果为2019年iPhone开发大容量电池新技术 ,,2017年12月28日谷歌发布Tacotron2:能更简单地训练AI学习演讲 ,,2017年12月21日TensorFlow漏洞爆发背后:关于AI安全我们的傻与天真 ,,2017年12月21日Android端Edge浏览器新版发布:常规性能优化和BUG修复 ,,2017年12月21日三星开发出全球最小的DRAM芯片技术领先优势扩大 ,,2017年12月21日腾讯绝艺AI下一步将学习AlphaGozero自对弈训练 ,,2017年12月21日Facebook社交VR应用Spaces扩大覆盖面:入驻HTCVive ,,2017年12月21日设计图曝光:三星双屏折叠手机原来是这样的 ,,2017年12月21日微信支付和支付宝已成为世界移动支付的"老师" ,,2017年12月21日新专利表明FaceID未来有望装备在iPad、MacBook和iMac等设备 ,,2017年12月21日首批九个建议加入EE4J的项目 ,,2017年12月21日这就是SurfacePhone?微软可折叠手机概念图曝光 ,,2017年12月21日继“Angel”开源后,腾讯又开放TDinsight机器学习平台 ,,2017年12月21日Swift:Extension和Protocol 【编程语言】2015年07月27日单例模式之懒汉模式普通版【Web前端】2014年11月12日一个女大学生的代码学习之路(三)--我的170天考研梦 【编程语言】2015年01月07日HDU-1231-最大连续子序列(Java+DP动态规划) 【编程语言】2015年04月02日计算机视觉CV之CMT跟踪算法分析四 【综合】2015年08月27日JavaScriptDOM编程艺术(第2版)读书笔记(JavaScript的最佳实践)2014年01月29日公司一个月(总结) 【综合】2015年04月29日java面试宝典学习笔记(二) 【编程语言】2016年07月15日php开发安卓服务器之使用创建动态缓存【综合】2014年12月17日让网络发现自己!【云计算】2015年06月03日Android:自定义PopupMenu的样式(显示图标设置RadioButton图标) 【移动开发】2015年03月18日打造极致MaterialDesign动画风格Button 【数据库】2015年01月09日验证码的现在与未来 ,,2016年06月23日php设计模式之工厂模式2014年01月29日编程基本功之数组交叉合并【综合】2015年05月20日小工具:androidlogpkg 【移动开发】2014年11月26日经验总结36--C#匿名(事件,对象...) 【编程语言】2014年11月04日ASMClassReaderfailedtoparseclassfile-probablyduetoanewJavaclassfileversionthatisn 【编程语言】2015年04月01日js判断文件是否存在【编程语言】2015年03月30日POJ2891StrangeWaytoExpressIntegers【一元线性同余方程组】2015年02月25日常见HTTP状态 【架构设计】2015年01月26日UVA 1377Rulerbfs+状压搜索【编程语言】2015年01月24日利用OracleDDL触发器实现DDL监控 【编程语言】2015年08月07日hdu2089数位dp 【移动开发】2015年07月15日ruby杂项2014年01月29日使用Email的身份验证(OpenID)、电子支付,及Email的链接处理 【编程语言】2015年07月22日ZOJ3349——SpecialSubsequence 【编程语言】2014年12月10日hihoCoder#1143:骨牌覆盖问题·一 【架构设计】2015年06月11日1.27王子和公主UVa10635 【编程语言】2015年05月25日SharePoint2010BCS-概述 【云计算】2014年12月23日
我们保证
We guarantee
> psd效果文件手工切图,保证图片效果最好体积最小利于传输
> 100%手写的HTML(DIV+CSS)编码,绝对符合W3C标准
> 代码精简、css沉余量小、搜索引擎扫描迅速,网页打开快捷
> 应用Css Sprite能够减少HTTP请求数,提高网页性能
> 跨浏览器兼容(IE6、7、8、9,Firefox火狐,Chrome谷歌)