求河神电视剧资源河神,15~18集百度云资源,免费的来!

> 博客详情
边搭建边做一个笔记, 如果有可以改进的地方请大家不吝赐教
文章要要点:
快速搭建构造restful的StringMvc
GET, POST , PUT , DELETE的各种调用
同一资源&多种表述 (ContentNegotiatingViewResolver解析器),既可以返回对象给JSP, 也可以返回JSON
快速搭建构造restful的StringMvc
首现搭建一个简单的restfulMvc框架,& 并上配置文件, 后期会增加带JSON返回值的配置
web.xml配置
&&&&&servlet-name&spring&/servlet-name&
&&&&&servlet-class&org.springframework.web.servlet.DispatcherServlet&/servlet-class&
&&&&&!--&可以自定义servlet.xml配置文件的位置和名称,默认为WEB-INF目录下,名称为[&servlet-name&]-servlet.xml,如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配置
&&!&beans&xmlns="http://www.springframework.org/schema/beans"&&
&xmlns:context="http://www.springframework.org/schema/context"&&
&xmlns:p="http://www.springframework.org/schema/p"&&
&xmlns:mvc="http://www.springframework.org/schema/mvc"&&
&xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&&
&xsi:schemaLocation="http://www.springframework.org/schema/beans&&
&&&&&&http://www.springframework.org/schema/beans/spring-beans-3.0.xsd&&
&&&&&&http://www.springframework.org/schema/context&&
&&&&&&http://www.springframework.org/schema/context/spring-context.xsd&&
&&&&&&http://www.springframework.org/schema/mvc&&
&&&&&&http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"&&&
&&&&&&&&!--&启动注解驱动的Spring&MVC功能,注册请求url和注解POJO类方法的映射--&&&
&&&mvc:annotation-driven&/&&&
&&&!--&启动包扫描功能,以便注册带有@Controller、@Service、@repository、@Component等注解的类成为spring的bean&--&&&
&&&context:component-scan&base-package="com.esb"&/&&&
&&&!--&对模型视图名称的解析,在请求时模型视图名称添加前后缀&--&&&
&&&bean&class="org.springframework.web.servlet.view.InternalResourceViewResolver"&p:prefix="/WEB-INF/jsp/"&p:suffix=".jsp"&/&
applicationContext.xml暂时没写东西
该配置的配置完了,下面就是写第一个HelloWord
package&com.dsp.
import&javax.servlet.http.HttpServletR
import&javax.servlet.http.HttpServletR
import&org.springframework.context.annotation.S
import&org.springframework.stereotype.C
import&org.springframework.web.bind.annotation.RequestM
import&org.springframework.web.bind.annotation.RequestM
@Scope("prototype")
@Controller
@RequestMapping("/products")
public&class&TestController{
&&*&测试方法,HelloWord
&&*&@param&request
&&*&@param&response
&&*&@return
&&*&@throws&Exception
&@RequestMapping(value="/list",method=RequestMethod.GET)
&&&&public&String&getProducts(HttpServletRequest&request,HttpServletResponse&response)&throws&Exception&{
&&&&&&&&request.setAttribute("name",&"helloWord");
&&&&&&&&return&"products/list";
@Scope("##") : spring默认的Scope是单列模式(singleton),顾名思义,肯定是线程不安全的.& 而@Scope("prototype")
&&&&可以保证每个请求都会创建一个新的实例,& 还有几个参数: session& request
&&&&@Scope("session")的意思就是,只要用户不退出,实例就一直存在,
&&&&request : 就是作用域换成了request
@Controller : 不多做解释 , 标注它为Controller
@RequestMapping :是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是&& 以该地址作为父路径。 比如现在访问getProducts方法的地址就是 :
&&&项目名/上面web.xml配置(api)/products/list
暂时先介绍两个属性 value和method
具体可以参考我参考的文章
value: 就是映射的实际地址,这个上面有说过,& 而重要的是里面的值 , 有几个比较感兴趣的
&& 1. 正常的 /list&&&&&&&&&&&&&&&&&&&&&&&&& 访问地址类似 项目名/api/products/list
&& 2. 带参数的 /info/{proId}&&&&&&&&& 访问地址类似 项目名/api/products/info/0001
method: 请求的method类型 GET POST PUT DELETE等
好,做个测试 JSP代码:
&%@&page&language="java"&contentType="text/&charset=UTF-8"
&&&&pageEncoding="UTF-8"%&
&!DOCTYPE&html&PUBLIC&"-//W3C//DTD&HTML&4.01&Transitional//EN"&"http://www.w3.org/TR/html4/loose.dtd"&
&meta&http-equiv="Content-Type"&content="text/&charset=UTF-8"&
&title&&你好&/title&
地址栏输入
GET, POST , PUT , DELETE的各种调用
刚才写的是第一种GET, 第二种GET:
@RequestMapping(value="/info/{proId}",method=RequestMethod.GET)
&&&&public&String&getProductInfo(@PathVariable&String&proId,&HttpServletRequest&request,HttpServletResponse&response)&throws&Exception&{
&&&&&&&&&&request.setAttribute("name",&proId);
&&&&&&&&&&
&&&&&&&&&&return&"products/list";
@PathVariable注解获取的就是大括号里的值
测试 : 输入地址
测试结果为
如果不用@PathVariable接收大括号里的值,也可以用bean来接收:
public String getProductInfo(Product pro, HttpServletRequest request,HttpServletResponse response)...
而且也可以设置多个参数
@RequestMapping(value="/info/{pid}/{pname}",method=RequestMethod.GET)
让我们看下面这段代码
@RequestMapping(value="/info/{pid}/{pname}",method=RequestMethod.GET)
&&&&public&String&getProductInfo(Product&pro,&HttpServletRequest&request,HttpServletResponse&response)&throws&Exception&{
&&request.setAttribute("name",&pro.getPid()+"___"+pro.getPname());
&&return&"products/list";
得到的结果为 :
下面介绍POST的调用
list.jsp新增form表单如下
&&&&${name&}
&&&&&form&action="&%=basePath%&/api/products/info"&method="post"&
&&&&&&&&&&input&type="text"&name="pid"/&&
&&&&&&&&&&input&type="text"&name="pname"/&&
&&&&&&&&&&input&type="submit"/&
&&&&&/form&
@RequestMapping(value="/info",method=RequestMethod.POST)
&&&&public&String&insertProduct(Product&pro,&HttpServletRequest&request,HttpServletResponse&response)&throws&Exception&{
&&&&&&&&request.setAttribute("name",&pro.getPid()+"___"+pro.getPname());
&&&&&&&&return&"products/list";
form提交后结果为
正常的FORM提交 , 只需要用对象接就可以了
补上 PUT DELETE 就和表单不一样了, 因为表单只支持GET和POST
这时候就需要用到ajax,& 或者nodejs调用
贴上jsp代码
&script&type="text/javascript"&src='&%=basePath%&/public/js/jquery-2.1.0.min.js'&&/script&
&script&type="text/javascript"&
function&savepro(){
&var&saveData&=&{"pid":"aa"};&//发送给服务器的JSON
&&type&:&"PUT",
&&url&:&"/RestFulMvc/api/products/info.json",
&&data:JSON.stringify(saveData),
&&contentType:"application/json",&&//发送至服务器的类型
&&dataType&:&"json",&&&&&//预期服务器返回类型
&&success:&function(data){
&&&alert(data);
&&input&type="button"&value="保存"&onclick="savepro()"/&
@RequestMapping(value="/info",method=RequestMethod.PUT)
&&&&public&ModelAndView&updateProduct(@RequestBody&Product&pro,&HttpServletRequest&request,HttpServletResponse&response)&throws&Exception&{
&&Map&String,Object&&map1&=&new&HashMap&String,Object&();
&&map1.put("pid",&pro.getPid());
&&ModelAndView&mav=new&ModelAndView("products/list",map1);
和以往不一样的是, 后台接收参数的对象前面 加了个@RequestBody , 这个是用于把传来的JSON 转换成接收的对象, 如果是form提交就不需要了, 但如果前台用的是application/json类型传进来,就一定要加@RequestBody
得到的结果:
同一资源 多种表述
如果写完一个方法,返回request到JSP, 可同时手机端需要调接口怎么办, 如果前台的一层皮换成了以nodejs为服务的框架调用怎么办
可以每个需求再写一个方法返回JSON, 可下面这个可以同一资源,多种返回
spring-servlet.xml加入如下配置
&&!--&ContentNegotiatingViewResolver视图解析器,利用他就可以配置多种返回值&--&
&&bean&&class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver"&&&&
&&&&!--&这里是否忽略掉accept&header,默认就是false&--&
&&&&property&name="ignoreAcceptHeader"&value="true"&/&&&&
&&&&!--&如果所有的mediaType都没匹配上,就会使用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&&&
这样同一个地址,只要在后面加 .json& mediaTypes就可以把
的 .json映射到application/json
值得注意的是, 如果不加 &property& name="extractValueFromSingleKeyModel" value="true" /&
得出来的Product对象的JSON为
{"product":{"pid":"00001","pname":"23123"}}
如果想要的结果为
{"pid":"00001","pname":"23123"}
则不要前面的对象名称包在外面时, 请加上它
@RequestMapping(value={"/info/{pid}"},method=RequestMethod.GET)
&&&&public&ModelAndView&getProductInfo(@PathVariable&String&pid,&HttpServletRequest&request,HttpServletResponse&response)&throws&Exception&{
&&&&&&&&&&Map&String,Object&&map&=&new&HashMap&String,Object&();
&&&&&&&&&&
&&&&&&&&&&Product&pro&=&new&Product();
&&&&&&&&&&pro.setPid(pid);
&&&&&&&&&&map.put("name",&pid);
&&&&&&&&&&map.put("pro",&pro);
&&&&&&&&&&
&&&&&&&&&&ModelAndView&mav=new&ModelAndView("products/list",map);
&&&&&&&&&&
&&&&&&&&&&return&
测试: 输入地址 : &
得到的结果为
{"pro":{"pid":"00001","pname":null},"name":"00001"}
ModelAndView是springmvc自带的重定向方法
第一个参数是返回的地址,和以往一样,& 第二个参数以后, 是传给前台的值&.
如果有第二个参数, 没有第三个参数 , 那第二个参数只能是map的
也可以第二个参数为建, 第三个参数为值的方式传给前台,& 具体大家可以new一个ModelAndView看看它提供的构造方法
最后 如果是nodejs& ajax提交的数据,以application/json格式提交时,
接收参数可以在参数前加 @@RequestBody
public ModelAndView getProductInfo(@RequestBody Product pro, HttpServletRequest request .....
它可以把json转换为对象里的属性
人打赏支持
码字总数 2326
一会加上哈
Controller风格用rest就可以了
注释写错了..
代码下有介绍的 注释写错了不好意思哈
是类似于 list嵌套map map嵌套实体那种的吗 刚我试了下是可以的
我的对象也是null,你的问题解决了么?
支付宝支付
微信扫码支付
打赏金额: ¥
已支付成功
打赏金额: ¥
& 开源中国(OSChina.NET) |
开源中国社区(OSChina.net)是工信部
指定的官方社区springMVC4.0返回json数据的问题 - ITeye问答
我按照网上的方法在controller的方法体上配置了@ResponseBody,springmvc-servlet.xml中也配置了,如一下代码,最终成功返回。
class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"&
&property name="messageConverters"&
&ref bean="mappingJackson2HttpMessageConverter" /&
&/property&
&bean id="mappingJackson2HttpMessageConverter"
class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"&
&property name="supportedMediaTypes"&
&value&text/charset=UTF-8&/value&
&value&text/charset=UTF-8&/value&
&value&application/charset=UTF-8&/value&
&/property&
但是,我想使用spring中的RedirectAttributes attr来在重定向中传递参数,按照说明在springmvc-servlet.xml中添加了&mvc:annotation-driven /&,这个倒是能用了,但是json数据无法返回了,报了个异常
type Status report
description The resource identified by this request is only capable of generating responses with characteristics not acceptable according to the request "accept" headers.
不知道是哪出现了问题,请指教,不胜感激!!
问题补充:问题已经解决,查看相关资料发现注册&mvc:annotation-driven /&后,相当于自动装配了AnnotationMethodHandlerAdapter和DefaultAnnotationHandlerMapping两个bean,所以不能重复定义,而且spring3.2后,这两个方法已经过期推荐使用RequestMappingHandlerMapping和RequestMappingHandlerAdapter两个类,具体在哪个包,请自行查看!
目前还没有答案
已解决问题
未解决问题在本示例中,我们将向您展示如何将对象转换成json格式并通过spring mvc框架返回给用户。
使用技术及环境:
Spring 3.2.2.RELEASE
Jackson 1.9.10
Eclipse 3.6
PS:在spring 3 中,要输出json数据,只需要添加 库到你的classpath。
1、项目依赖
spring和jackson的依赖:
&project xmlns=&http://maven.apache.org/POM/4.0.0&
xmlns:xsi=&http://www.w3.org/2001/XMLSchema-instance&
xsi:schemaLocation=&http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd&&
&modelVersion&4.0.0&/modelVersion&
&groupId&mon&/groupId&
&artifactId&SpringMVC&/artifactId&
&packaging&war&/packaging&
&version&1.0-SNAPSHOT&/version&
&name&SpringMVC Json Webapp&/name&
&url&http://maven.apache.org&/url&
&properties&
&spring.version&3.2.2.RELEASE&/spring.version&
&jackson.version&1.9.10&/jackson.version&
&jdk.version&1.6&/jdk.version&
&/properties&
&dependencies&
&!-- Spring 3 dependencies --&
&dependency&
&groupId&org.springframework&/groupId&
&artifactId&spring-core&/artifactId&
&version&${spring.version}&/version&
&/dependency&
&dependency&
&groupId&org.springframework&/groupId&
&artifactId&spring-web&/artifactId&
&version&${spring.version}&/version&
&/dependency&
&dependency&
&groupId&org.springframework&/groupId&
&artifactId&spring-webmvc&/artifactId&
&version&${spring.version}&/version&
&/dependency&
&!-- Jackson JSON Mapper --&
&dependency&
&groupId&org.codehaus.jackson&/groupId&
&artifactId&jackson-mapper-asl&/artifactId&
&version&${jackson.version}&/version&
&/dependency&
&/dependencies&
&finalName&SpringMVC&/finalName&
&groupId&org.apache.maven.plugins&/groupId&
&artifactId&maven-eclipse-plugin&/artifactId&
&version&2.9&/version&
&configuration&
&downloadSources&true&/downloadSources&
&downloadJavadocs&false&/downloadJavadocs&
&wtpversion&2.0&/wtpversion&
&/configuration&
&groupId&org.apache.maven.plugins&/groupId&
&artifactId&maven-compiler-plugin&/artifactId&
&version&2.3.2&/version&
&configuration&
&source&${jdk.version}&/source&
&target&${jdk.version}&/target&
&/configuration&
&/plugins&
&/project&
一个简单的JavaBean,稍后将被转换成json格式输出。
public class Shop {
String staffName[];
//getter and setter methods
3、Controller
添加@ResponseBody到返回值,我们看到:
Jackson 包已经在项目的 classpath
mvc:annotation-driven注解已经启用
返回方法已经添加了@ResponseBody
spring会自动处理json的转换。
import org.springframework.stereotype.C
import org.springframework.web.bind.annotation.PathV
import org.springframework.web.bind.annotation.RequestM
import org.springframework.web.bind.annotation.RequestM
import org.springframework.web.bind.annotation.ResponseB
import mon.model.S
@Controller
@RequestMapping(&/kfc/brands&)
public class JSONController {
@RequestMapping(value=&{name}&, method = RequestMethod.GET)
public @ResponseBody Shop getShopInJSON(@PathVariable String name) {
Shop shop = new Shop();
shop.setName(name);
shop.setStaffName(new String[]{&mkyong1&, &mkyong2&});
4、mvc:annotation-driven
在你的spring配置文件中启用mvc:annotation-driven注解。
&beans xmlns=&http://www.springframework.org/schema/beans&
xmlns:context=&http://www.springframework.org/schema/context&
xmlns:mvc=&http://www.springframework.org/schema/mvc&
xmlns:xsi=&http://www.w3.org/2001/XMLSchema-instance&
xsi:schemaLocation=&
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd&&
&context:component-scan base-package=&mon.controller& /&
&mvc:annotation-driven /&
5、示例结果
原文链接:
本文标题:spring mvc实现Restful返回json格式数据
本文地址:
本文来自,转载请注明出处
交流QQ群:

我要回帖

更多关于 河神电视剧全集百度云 的文章

 

随机推荐