zoukankan      html  css  js  c++  java
  • SpringMVC学习(三)

    转发

    无视图解析器

        @RequestMapping("/t2")
        public String test2(){
            return "/WEB-INF/views/test.jsp";
        }
    
        @RequestMapping("/t2")
        public String test2(){
            return "forward:/WEB-INF/views/test.jsp";
        }
    

    有视图解析器

    return:默认转发

        @RequestMapping("/t2")
        public String test2(){
            return "test";
        }
    

    重定向

    重定向不需要视图解析器,本质就是重新请求一个新东方,所以只需要注意路径问题!

    可以重定向到另外一个请求实现;

        @RequestMapping("/t4")
        public String test4(){
            return "redirect:/index.jsp";
        }
    

    数据处理

    处理提交数据

    1、提交的域名称和处理方法的参数名一致

    提交数据: http://localhost:8080/hello?name=zhangsan

    处理方法:

    @RequestMapping("/param")
    public String test(String name){
        System.out.println(name);
        return "hello";
    }
    

    2、提交的域名称和处理方法的参数不一致

    提交数据: http://localhost:8080/hello?username=zhangsan

    处理方法:

    //@RequestParam("username") : username:提交的域的名称 .
    @RequestMapping("/hello")
    public String hello(@RequestParam("username") String name){
        System.out.println(name);
        return "hello";
    }
    

    3、提交一个对象

    实体类User

    package com.star.pojo;
    
    import lombok.AllArgsConstructor;
    import lombok.Data;
    import lombok.NoArgsConstructor;
    
    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public class User {
        private String username;
        private int age;
        private String sex;
    }
    

    处理方法:

    @RequestMapping("/user")
    public String test(User user){
        System.out.println(user);
        return "hello";
    }
    

    注意:如果使用对象的话,前端传递的参数名和对象名必须一致,否则就是null。

    数据显示到前端

    1、ModelAndView

    public class ControllerTest1 implements Controller {
    
        public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
            //返回一个模型视图对象
            ModelAndView mv = new ModelAndView();
            mv.addObject("msg","ControllerTest1");
            mv.setViewName("hello");
            return mv;
        }
    }
    

    2、ModelMap

        @RequestMapping("/param")
        public String test(@RequestParam() String name, ModelMap model){
            System.out.println(name);
            model.addAttribute("username",name);
            return "hello";
        }
    

    3、Model

        @RequestMapping("/param")
        public String test(@RequestParam() String name, Model model){
            System.out.println(name);
            model.addAttribute("username",name);
            return "hello";
        }
    

    对比

    Model:只有几个方法只适用于储存数据,简化了新手对于Model对象的操作和理解;

    ModelMap:继承了LinkedMap,除了实现自身的一些方法,同样的继承LinkedMao的方法和特性;

    ModelAndView:可以在储存数据的同时,可以进行设置返回的逻辑视图,进行控制展示层的跳转。

    乱码问题

    测试乱码

    1、在首页编写一个提交表单

    <form action="encode" method="post">
        <input type="text" name="name">
        <input type="submit">
    </form>
    

    2、后台编写对应的处理类

        @PostMapping("/encode")
        public String test(String name,Model model){
            model.addAttribute("name",name);//将数据传到前端
            return "hello";
        }
    

    3、前端页面

    <h1>${name}</h1>
    

    测试结果:

    可以看到出现乱码,SpringMVC为我们提供了一个过滤器,可以在web.xml中配置。

        <filter>
            <filter-name>encoding</filter-name>
            <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
            <init-param>
                <param-name>encoding</param-name>
                <param-value>utf-8</param-value>
            </init-param>
        </filter>
        <filter-mapping>
            <filter-name>encoding</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
    
  • 相关阅读:
    android 75 新闻列表页面
    android 74 下载文本
    android 73 下载图片
    android 72 确定取消对话框,单选对话框,多选对话框
    android 71 ArrayAdapter和SimpleAdapter
    android 70 使用ListView把数据显示至屏幕
    maven如何将本地jar安装到本地仓库
    Centos6.7搭建ISCSI存储服务器
    解决maven打包编译出现File encoding has not been set问题
    MySQL 解决 emoji表情 的方法,使用utf8mb4 字符集(4字节 UTF-8 Unicode 编码)
  • 原文地址:https://www.cnblogs.com/lmx-181028/p/12505208.html
Copyright © 2011-2022 走看看