一环境搭建
首先是常规的拦截器环境搭建,不用多说,需要注意的是,这里需要引入杰克逊相关冲突包,然后在春天配置文件" springmvc-servlet.xml "中添加数据解析相关配置,我这里的完整代码如下:
?可扩展标记语言版本='1.0 '编码='UTF-8 '?beans xmlns=' http://www。弹簧框架。org/schema/beans ' xmlns : xsi=' http://www .w3。org/2001/XMLSchema-instance ' xmlns : context=' http://www .弹簧框架。org/schema/context ' xmlns 3: MVC=' http://www .弹簧框架。org/schema/MVC ' xsi 3360 schema location=' 333http://www。-避免工业管理学(工业工程)执行创建交互式、快速动态网页应用的网页开发技术时,返回数据出现下载文件-bean id=' mappingjacksontpmessageconverter ' class=' org。弹簧框架。http。转换器。JSON。mappingjacksontpmessageconverter ' property name=' supportedMediaTypes ' list value text/html;charset=UTF-8/value值应用/JSON;charset=UTF-8/值/列表/属性属性名称=' objectMapper ' bean class=' org。科德豪斯。杰克逊。地图。objectMapper '属性名称=' dateFormat ' bean类=' Java。文字。simpledateformat '构造函数-arg类型=' Java。朗。string ' value=' yyyyyy-MM-DD hh 3360MM 3360s '/构造函数-arg/bean/property/bean/property/bean!-启动的实现的注解功能,完成请求和注解POJO的映射-bean class=' org。弹簧框架。网络。servlet。MVC。注释。annotationmethandleradapter '属性名称=' messageConverters ' listref bean=' mappingjacksontpmessageconverter '/!数据转换器-/list/property/bean MVC : annotation-drivencontent-negotiation-manager=' contentNegotiationManager '/bean id=' contentNegotiationManager ' class=' org。弹簧框架。网络。接受。content conditionmanagerfactory bean!-没错,开启扩展名支持,假的关闭支持-属性名='favorPathExtension '值='false' /!-用于开启/userinfo/123?format=json的支持-属性名='favorParameter '值='true' /!-设置为真实的以忽略对接受标题的支持-属性名=' ignorecepetheader '值=' false '/属性名=' mediaTypes '值atom=application/atom xmlhtml=text/html JSON=application/JSON XML=application/XML *=*/*/value/property/bean context : annotation-config/!-启动自动扫描该包下所有的豆(例如@ Controller)-上下文:组件-扫描基础-包=' cn。齐方斯基。控制器'/MVC :默认-servlet-handler/!-定义视图解析器-bean id=' JSpviewresolver ' class=' org。弹簧框架。WEB。servlet。查看。' internalresourceviewresolver '属性名='requestContextAttribute '值=' RC '/属性名=“视图类”值=' org。弹簧框架。WEB。servlet。查看。“jst view ”/属性名='前缀'值='/WEB-INF/JSP/'/属性名='后缀'值='。JSP '/属性名='订单'值=' 1 '/属性/豆/豆项目结构:
注:我这里测试使用的完整冲突包:http://锅。百度。com/s/1 dUwdml
二测试实例
(1)在WEB-INF/jsp目录下新建了一个index.jsp文件,包含了简单的框架的创建交互式、快速动态网页应用的网页开发技术请求,请求数据的格式是JSON,具体代码如下:
% @ page语言=' Java ' ContentType=' text/html;charset=UTF-8 "页面编码="UTF-8"% %字符串路径=请求。getcontextpath();字符串基本路径=请求。getscheme()' ://'请求。getservername()“:”请求。getserverport()“path ”/;% html health eta http-equiv=' Content-Type ' Content=' text/html;charset=UTF-8 ' base href=' %=基本路径% '脚本类型=' text/JavaScript ' src=' http : script/jquery/jquery-1。6 .2 .量滴js '/script脚本类型=' text/JavaScript ' src=' http : script/jquery/jquery。i18n。属性-min-1。0 .9 .js '/script脚本类型=' text/JavaScript ' src=' http 3 ready(function(){ $(' # sub ')).单击(function(){ var name=$(' # username ').val();定义变量年龄=18岁;var user={'username':name,' age ' : age };$.ajax({url : 'hello.json ',类型: '开机自检',数据: JSON.stringify(用户),//请求正文内容类型: '应用/JSON;charset=utf-8 ',dataType : 'json ',成功:函数(响应){//请求成功警报('你好回应。用户名“[”响应。年龄'],当前时间是:"响应。时间",欢迎访问:http://www .齐方斯基。cn ';},错误:函数(msg){ alert(msg);}});});});/script/head dyinput type=' text ' id=' username ' style=' width : 100px;height : 30px font-size : 20px;字体粗细:粗体;输入类型='button' id='sub '值=' Go ' style=' height : 40px ' height : 30px ' br/body/html(2)一个简单的模型类用户,代码如下:
包裹cn。齐方斯基。控制器;公共类用户{私有字符串用户名;私人互联网时代;公共字符串getUsername(){ 0返回用户名;} public void setUsername(String username){ this。用户名=用户名;} public int GetAge(){ return age;} public void setAge(int age){ this。年龄=年龄;}}(3)控制器类TestController.java:
包裹cn。齐方斯基。控制器;导入Java。文字。格式;导入Java。文字。SimpleDateformat导入Java。乌提尔。日期;导入Java。乌提尔。HashMap导入Java。乌提尔。地图;导入组织。弹簧框架。语境。注释。范围;导入组织。弹簧框架。刻板印象。控制器;导入组织。弹簧框架。网络。绑定。注释。RequestBody导入组织。弹簧框架。网络。绑定。注释。请求映射;导入组织。弹簧框架。网络。绑定。注释。请求方法;导入组织。弹簧框架。网络。绑定。注释。反应体;导入组织。弹簧框架。网络。servlet。modelAnDview@控制器@作用域(“原型”)公共类TestController {/***转到页面*/@请求映射(值='/hello。html’)公共模型和视图列表(){模型和视图视图=新的模型和视图('索引');返回视图;}/*** ajax异步请求,请求格式是json*/@RequestMapping(值='/hello.json ',方法={ RequestMethod .POST })@ response body public MapString,String hello(@RequestBody User用户){//返回数据的地图集合映射字符串结果=new HashMapString,String();format format=new SimpleDateFormat(' yyyy-MM-DD hh :MM :s ');//返回请求的usernameresult.put('username ',用户。getusername());//返回年龄result.put('age ',string。(用户)的值。getage()));//返回当前时间result.put('time ',格式。格式(新的Date());返回结果;}}关于具体的执行步骤我简单说一下:
(一)项目启动后,在浏览器中访问:http://localhost :8089/spring demo/hello。html,然后会转到执行控制器中的目录方法,接着会转到/WEB-INF/jsp/index.jsp(PS:在控制器中返回的是逻辑视图,跟在springmvc-servlet.xml文件中定义的路径前缀和后缀进行拼接后合成文件的真正路径)
Ii)在index.jsp页面上输入文本,然后单击按钮,这将触发ajax请求。这个请求将获取输入框中的数据和默认的“age”参数拼接成一个json格式的字符串,最后提交给请求“hello.json”,也就是在控制器中执行hello方法。
Iii)执行hello方法后,将返回一系列数据,并最终显示在页面上。
(4)效果如下:
以上就是边肖介绍的SpringMVC环境下Ajax异步请求JSON格式数据的相关内容,希望对大家有所帮助!