• 中文
    • English
  • 注册
  • 查看作者
    • SpringMVC:使用拦截器处理敏感词和返回JSON字符串

      一.  处理敏感词

      拿淘宝的评论来说,如果用户的评论内容包含敏感词,比如傻xx,x你妈之类的话,则这些评论中的敏感词都会被屏蔽掉,以**显示,我们可以通过SpringMVC的拦截器来实现该功能。

      test.jsp

      <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %>
      <!DOCTYPE html>
      <html>
      <head>
          <title>Title</title>
      </head>
      <body>
      ${requestScope.comment}
      </body>
      </html>

      Controller

      @Controller
      public class Test {
          @RequestMapping("/comment")
          public String comment(String comment,Model model) {
              model.addAttribute("comment",comment);
              System.out.println("hashCode" + model.hashCode());
              return "test";
          }
      }

      Interceptor:

      @Override
      public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
          System.out.println("Interceptor.postHandle");
          Map<String, Object> model = modelAndView.getModel();
          System.out.println("hashCode" + model.hashCode());
          String comment = model.get("comment").toString();
          String sb = comment.replaceAll("傻逼", "***");
      
          model.put("comment",sb);
      }

      此时访问http://localhost:8888/sm/comment?comment=孙著杰是傻逼,则页面显示孙著杰是***

      而且Interceptor中的model和Controller中的model其实的同一个,hashCode相同,因为Model都会转换为ModelAndView

      二.  JSON字符串

      在Controller中编写用于返回JSON字符串的方法如下:

      @GetMapping(value="/json",produces = "application/json;charset=utf-8")
      public String json() {
          HashMap<String, Object> map = new HashMap<>();
          map.put("bookId",1);
          map.put("name","Java开发");
          map.put("price",19.9);
      
          return JSON.toJSONString(map);
      }

      其中produces用于解决中文乱码,相当于resp.setContentType(“application/json; charset=utf-8”);

      但是此时如果访问http://localhost:8888/sm/json,会404,因为springmvc将其处理成了:

       /sm/WEB-INF/views/{"price":19.9,"name":"Java开发","bookId":1}.jsp

      给json方法添加@ResponseBody注解即可解决该问题

      @GetMapping(value="/json",produces = "application/json;charset=utf-8")
      @ResponseBody
      public String json() {
          HashMap<String, Object> map = new HashMap<>();
          map.put("bookId",1);
          map.put("name","Java开发");
          map.put("price",19.9);
      
          return JSON.toJSONString(map);
      }

      此时访问http://localhost:8888/sm/json,页面显示如下:

      {"price":19.9,"name":"Java??","bookId":1}

    • 0
    • 1
    • 0
    • 4.4k
    • success。

      请登录之后再进行评论

      登录
    • 0
      好搞
    • 赞助本站

      • 支付宝
      • 微信
      • QQ

      感谢一直支持本站的所有人!

      单栏布局 侧栏位置: