SpringMVC学习总结三——JSON交互与拦截器

五、JSON交互

  1.  @ResponseBody 作用于返回的对象,将数据转化为指定的json格式
  2. 如果传的是json字符串

             var jsonObject = JSON.parse(jsonStr);

    1. 解决方案一:在js中把json字符串转成json对象
    2. 解决方案二:将json字符串传到controller,要设置自编码格式

$.ajax({

               url:"${pageContext.request.contextPath}/login",

               type:"post",

               data:jsonStr,

               contentType:"application/json;charset=UTF-8",

               dataType:"json",//返回数据类型

               success:function(data){

                     alert(data.code)

                }

})

                    然后在形参上,将json字符串转成json对象格式

@RequestMapping(value="login2")

         @ResponseBody

         public Map login2(@RequestBody User user) { //@RequestBody读取请求中的内容,把它转成json格式,然后在进行数据绑定到形参上

                   Map<String, Object> map = new HashMap<>();

                   if (user.getUsername()!=null&&user.getUsername().length()>3) {

                            map.put("code", 1);

                   }else{

                            map.put("code", 0);

                   }

                   return map;

         }

 

         3.RESTFUL风格(只用在GET请求)(软件架构风格)

             把请求中的参数变成请求的路的一种风格。

  1. 传统的方式url:http://localhost:8080/SpringMVC04/user/ select?id=2
  2. RESTFUL风格:http://localhost:8080/SpringMVC04/user/select/2
  3. 写法:

@RequestMapping(value="select/{id}")  //{id}表示动态参数,用于匹配以/select/{id} 结尾的请求

         public ModelAndView select(@PathVariable int id) {  //@PathVariable用于接收并且绑定请求中的参数

                   ModelAndView mv = new ModelAndView();

                   mv.addObject("msg","接收到的id:"+id);

                   mv.setViewName("/user.jsp");

                   return mv;

         }

六、拦截器

类似于servlet中的过滤器,主要用于对处理器进行预处理后处理。用于拦截用户的请求并且进行响应的处理。

MyInterceptor.java

public class MyInterceptor implements HandlerInterceptor{

         /**

          * 在处理器方法之前执行

          * 返回true则向下继续执行,如果返回false,则终端执行

          * 适合登录验证、权限检查等

          */

         @Override

         public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) throws Exception {

                   System.out.println("preHandle....");

                   return true;

         }

        

         /**

          * 在处理器方法之后,并且在视图解析器之前执行

          * 对请求域中的数据和视图做出修改,可加入一些公共的数据信息等

          */

         @Override

         public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)

                            throws Exception {

                   System.out.println("postHandle...");

         }

         /**

          * 整个请求-响应完成后再执行

          * 适合:清理资源、记录日志

          */

         @Override

         public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)

                            throws Exception {

                   System.out.println("afterCompletion...");

         }

}

springmvc.xml

<!-- 配置拦截器 -->

         <mvc:interceptors>

                   <!-- 单个拦截器 -->

                   <mvc:interceptor>

                            <!-- 配置拦截器作用的路径 -->

                            <mvc:mapping path="/**"/>

                            <!-- 配置不需要拦截的路径 -->

                            <mvc:exclude-mapping path=""/>

                            <!-- 拦截器的bean -->

                            <bean class="com.szy.interceptor.MyInterceptor"></bean>

                   </mvc:interceptor>

         </mvc:interceptors>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值