zoukankan      html  css  js  c++  java
  • 随笔2

    controller接收前端参数和返回参数给前端的几种自用方法

    (参考整理拷贝了各个大牛的博客,加上自己的尝试,将自用的几种方法放在下面)

    [用博客记录才刚开始,以后会注意把代码都以代码的格式插入进来而不是截图]

    controller获取参数

    1.适用于get提交,不适用post

       /**
         * 1.直接把表单的参数写在Controller相应的方法的形参中
          * @param username
         * @param password
         * @return
         */
        @RequestMapping("/addUser1")
        public String addUser1(String username,String password) {
            System.out.println("username is:"+username);
            System.out.println("password is:"+password);
            return "demo/index";
        }

     2.通过HttpServletRequest接收,post或者get都可以

       /**
         * 2、通过HttpServletRequest接收
          * @param request
         * @return
         */
        @RequestMapping("/addUser2")
        public String addUser2(HttpServletRequest request) {
            String username=request.getParameter("username");
            String password=request.getParameter("password");
            System.out.println("username is:"+username);
            System.out.println("password is:"+password);
            return "demo/index";
        }

    3.通过bean接收,get或者post都可以

     /**
         * 3、通过一个bean来接收
          * @param user
         * @return
         */
        @RequestMapping("/addUser3")
        public String addUser3(UserModel user) {
            System.out.println("username is:"+user.getUsername());
            System.out.println("password is:"+user.getPassword());
            return "demo/index";
        }

    4.通过@ModelAttribute注解获取post请求的form表单

      /**
         * 4、使用@ModelAttribute注解获取POST请求的FORM表单数据
          * @param user
         * @return
         */
        @RequestMapping(value="/addUser5",method=RequestMethod.POST)
        public String addUser5(@ModelAttribute("user") UserModel user) {
            System.out.println("username is:"+user.getUsername());
            System.out.println("password is:"+user.getPassword());
            return "demo/index";
        }

    5.用注解@RequestParam绑定请求参数到方法入参

    /**
         * 5、用注解@RequestParam绑定请求参数到方法入参
          * @param username
         * @param password
         * @return
         */
        @RequestMapping(value="/addUser6",method=RequestMethod.GET)
        public String addUser6(@RequestParam("username") String username,@RequestParam("password") String password) {
            System.out.println("username is:"+username);
            System.out.println("password is:"+password);
            return "demo/index";
        }

    6.用request.getQueryString()获取,只适用于get

      @RequestMapping(value="/addUser6",method=RequestMethod.GET)
        public String addUser6(HttpServletRequest request) { 
        System.out.println("username is:"+request.getQueryString()); 
        return "demo/index"; 
      }
     

     

    controller将参数传递给前端页面的方法

    ModelAndView

    找到几种通过ModelAndView返回的方法

    (来自别人的截图)

     

     

    (以下是自己尝试的截图)

     

    视图解析器freemarker:

    freemaker(FTL)是一个模板引擎,即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页、电子邮件、配置文件、源代码等)的通用工具。 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。

    javaweb中,经常会使用freemaker模板来生成网页,它的基本工作机制如下:

     

    FreeMarker中,使用FTL标签来使用指令,FreeMarker有3种FTL标签,这和HTML标签是完全类似的. 

    1、开始标签:<#标签 参数> 

    2、结束标签:</#标签 > 

    3、空标签:<#标签 参数/> 

    实际上,使用标签时前面的符号#也可能变成@,如果该指令是一个用户指令而不是系统内建指令时,应将#符号改成@符号. 

    使用FTL标签时, 应该有正确的嵌套,而不是交叉使用,这和XML标签的用法完全一样.如果全用不存在的指令,FreeMarker不会使用模板输出,而是产生一个错误消息.FreeMarker会忽略FTL标签中的空白字符.值得注意的是< , /> 和指令之间不允许有空白字符.

     

     

    thymeleaf :

    由于我用的是freemarker就不多做thymeleaf的介绍了网络上也有一堆

    这里给个链接是详细的区别和各自的配置介绍:

    https://www.cnblogs.com/jtlgb/p/8548436.html

     

    在我自己运行项目的时候出现一个报错---是因为thymeleaf和freemarker都配置在pom.xml中产生了冲突,所以要注意.

     

    @ResponseBody

    @responseBody注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML

    数据,需要注意的呢,在使用此注解之后不会再走试图处理器,而是直接将数据写入到输入流中,他的效果等同于通过response对象输出指定格式的数据。

    举个例子:

    @RequestMapping("/login")
    
      @ResponseBody
    
      public User login(User user){
    
        return user;
    
      }

      User字段:userName pwd

      那么在前台接收到的数据为:'{"userName":"xxx","pwd":"xxx"}'

      效果等同于如下代码:

      @RequestMapping("/login")
    
      public void login(User user, HttpServletResponse response){
    
        response.getWriter.write(JSONObject.fromObject(user).toString());
    
      }
    
     
  • 相关阅读:
    SpringBoot入门1
    git
    Linux 常用命令
    Linux虚拟机上安装redis
    用户登录(Material Design + Data-Binding + MVP架构模式)实现
    【方法总结】创建、读取、删除文件相关操作
    从源码角度入手实现RecyclerView的Item点击事件
    App启动页倒计时功能
    App内切换语言
    GreenDao与ReactiveX的完美搭配
  • 原文地址:https://www.cnblogs.com/Lukizzz/p/9370521.html
Copyright © 2011-2022 走看看