首页 > 其他分享 >【WEEK2】 【DAY5】数据处理及跳转之数据处理【中文版】

【WEEK2】 【DAY5】数据处理及跳转之数据处理【中文版】

时间:2024-03-14 14:32:10浏览次数:23  
标签:5.2 name org user 跳转 数据处理 import WEEK2 String

2024.3.8 Friday

接上文 【WEEK2】 【DAY4】数据处理及跳转之结果跳转方式【中文版】

目录

5.2. 数据处理

5.2.1. 提交处理数据

5.2.1.1.提交的域名称和处理方法的参数名一致

假设提交的数据为:http://localhost:8080/hello?name=zhangsan
处理方法:

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

后台输出:zhangsan

5.2.1.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";
}

后台输出:zhangsan

5.2.1.3.实例:新建文件

在这里插入图片描述

1. UserController.java
package com.kuang.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/user")
public class UserController {
//    localhost:8080/user/ti?name=...
    @GetMapping("/t1")
    public String test1(String name, Model model){
        //1.接收前端参数(通过name)
        System.out.println("接受到前端的参数为:" + name);
        
        //2.将返回的结果传递到前端:Model
        model.addAttribute("msg",name);

        //3.视图跳转
        return "test";
    }
}
2. 运行

http://localhost:8080/springmvc_04_controller_war_exploded/user/t1
在这里插入图片描述
http://localhost:8080/springmvc_04_controller_war_exploded/user/t1?name=zhangsan
在这里插入图片描述
在这里插入图片描述

3. 修改UserController.java(添加@RequestParam(“username”))
package com.kuang.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
@RequestMapping("/user")
public class UserController {
//    localhost:8080/user/t1?name=...
    @GetMapping("/t1")
    //一般都写上@RequestParam("username")用于前端接收,此时url改为localhost:8080/username/t1?name=...
    public String test1(@RequestParam("username") String name, Model model){
        //1.接收前端参数(通过name)
        System.out.println("接受到前端的参数为:" + name);

        //2.将返回的结果传递到前端:Model
        model.addAttribute("msg",name);

        //3.视图跳转
        return "test";
    }
}

4. 运行结果的变化:输入为空时不会返回null,而是显示错误

http://localhost:8080/springmvc_04_controller_war_exploded/user/t1
在这里插入图片描述
有传入参数时则相同
http://localhost:8080/springmvc_04_controller_war_exploded/user/t1?username=zhangsan
在这里插入图片描述
在这里插入图片描述

5.2.1.4.提交的是一个对象

要求提交的表单域和对象属性一致,参数使用对象即可

1. 实体类:user.java
package com.kuang.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data   //在lombok中包含很多便携包,可以省去很多底层操作
@AllArgsConstructor
@NoArgsConstructor
public class User {
    private int id;
    private String name;
    private int age;

/*    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }*/
}
2. UserController.java
package com.kuang.controller;

import com.kuang.pojo.User;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
@RequestMapping("/user")
public class UserController {


    @GetMapping("/t1")      //localhost:8080/user/t1?name=...

    public String test1(@RequestParam("username") String name, Model model){
    //一般都写上@RequestParam("username")用于前端接收,此时url改为localhost:8080/username/t1?name=...

        //1.接收前端参数(通过name)
        System.out.println("接受到前端的参数为:" + name);

        //2.将返回的结果传递到前端:Model
        model.addAttribute("msg",name);

        //3.视图跳转
        return "test";
    }

/*
1.接收前端用户传递的参数,判断参数的名字,假设名字直接写在方法上,可以直接使用
2.假设传递的是一个对象User,匹配User对象中的字段名,仅当名字相同时能够匹配成功
 */								
    //前端接收的是一个对象:id,name,age
    @GetMapping("/t5")
    public String test2(User user,Model model){
        System.out.println(user);
        System.out.println("000000"+user.toString());
        model.addAttribute("msg",user);
        return "test";
    }
}
3. 修改pom.xml
  • 添加依赖
    修改SpringMVC_try1\SpringMVC_try1\springmvc-04-controller\pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.kuang</groupId>
    <artifactId>SpringMVC_try1</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <modules>
        <module>springmvc-01-servlet</module>
        <module>springmvc-02-hello</module>
        <module>springmvc-03-hello-annotation</module>
        <module>springmvc-04-controller</module>
    </modules>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

<!--导入依赖-->
    <dependencies>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.1.9.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.2</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
        <dependency>
            <!-- 导入lombok库  -->
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.10</version>
        </dependency>

    </dependencies>


</project>

lombok的作用和常用注解_lombok注解-CSDN博客

4. 运行

http://localhost:8080/springmvc_04_controller_war_exploded/user/t5?id=20&name=zhangsan&age=99
在这里插入图片描述

5.2.2. 数据显示到前端

5.2.2.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("test");
       return mv;
  }
}

5.2.2.2.第二种 : 通过ModelMap

@RequestMapping("/hello")
public String hello(@RequestParam("username") String name, ModelMap model){
   //封装要显示到视图中的数据
   //相当于req.setAttribute("name",name);
   model.addAttribute("name",name);
   System.out.println(name);
   return "hello";
}

5.2.2.3.第三种 : 通过Model

@RequestMapping("/ct2/hello")
public String hello(@RequestParam("username") String name, Model model){
   //封装要显示到视图中的数据
   //相当于req.setAttribute("name",name);
   model.addAttribute("msg",name);
   System.out.println(name);
   return "test";
}

5.2.2.4.对比

就对于新手而言简单来说使用区别就是:

  • Model只有寥寥几个方法只适合用于储存数据,简化了新手对于Model对象的操作和理解;
  • ModelMap继承了LinkedMap ,除了实现了自身的一些方法,同样的继承 LinkedMap的方法和特性;
  • ModelAndView可以在储存数据的同时,可以进行设置返回的逻辑视图,进行控制展示层的跳转。
    当然更多的以后开发考虑的更多的是性能和优化,就不能单单仅限于此的了解。

老师给的建议:请使用80%的时间打好扎实的基础,剩下18%的时间研究框架,2%的时间学英文,框架的官方文档永远是最好的教程。

标签:5.2,name,org,user,跳转,数据处理,import,WEEK2,String
From: https://blog.csdn.net/2401_83329143/article/details/136605607

相关文章

  • pandas DataFrame内存优化技巧:让数据处理更高效
    Pandas无疑是我们数据分析时一个不可或缺的工具,它以其强大的数据处理能力、灵活的数据结构以及易于上手的API赢得了广大数据分析师和机器学习工程师的喜爱。然而,随着数据量的不断增长,如何高效、合理地管理内存,确保PandasDataFrame在运行时不会因内存不足而崩溃,成为我们每一个人......
  • GAMIT/GLOBK v10.75:北斗数据处理利器,你掌握了吗?
    随着GNSS导航定位技术的不断演进和广泛应用,大型工程项目的设计、施工、运行与管理等环节对工程测量的要求也日趋严格。众多行业领域,包括测绘、勘测、规划、市政、交通、铁道、水利水电、建筑、矿山、道桥、国土资源、气象、地震等,在大型工程建设中均需要依赖高精度卫星定位......
  • nginx 从一个路径访问另一个路径怎么跳转
    访问stap的路径跳转到根目录下,并且带上之前的参数#rewrite^/stap/(.*)$/$1permanent;访问stap目录代理到下面目录#location/stap/{#rewrite^/stap/(.*)$https://abgg.fxxxuuuppppmppyyai.com/$1permanent;#}访问stap目录代理到下面目录#location/s......
  • 使用 .NET Core 构建实时数据处理应用程序
    第一部分:了解实时数据处理实时数据处理是指立即处理数据输入的过程,这对于需要快速响应的应用程序至关重要。在.NETCore环境中,我们可以利用其高性能、跨平台的特性来构建高效的实时数据处理应用程序。理论事件驱动架构:这是一种软件架构模式,通过事件来触发和通信,从而实现高度......
  • 网站 url 跳转 刷新打不开 但回车能打开 刷新不能访问但回车 能访问
    可能是跨域问题,可以对比两个网址的curl参数,有一个缺少Referer:https://account.wps.cn/  例如:curl^"https://authserver.gdmu.edu.cn/authserver/login?service=https^%^3A^%^2F^%^2Fms.gdmu.edu.cn^%^2Floginwps^"^-H"Accept:text/html,application/xhtml+xml,applic......
  • vscode 两种定位跳转的方法 ctrl+p 方法1 path:行号 方法2 #变量名 - 针对$store变量
    vscode两种定位跳转的方法ctrl+p方法1path:行号方法2#变量名-针对$store变量不好找的方案方法1可以备注在代码里面问题$store的变量不能跳转,有跳转插件也不能跳转解决方案方法1备注上文件地址和行号,然后选择备注那行ctrl+cctrl+p回车不足的地方是代码变了,行号不......
  • NewStar Week2-3部分pwn wp
    stack_migrationchecksec开启了NX保护,但是没有PIE和Canary代码审计可以看到有两个read和一个printf。第一个read没什么用我们看第二个。因为v2距离rbp有0x50个字节,而read只能读入0x60个字节,意味着我们剩余的字节数只有0x10,没法构造完整的ROP链,那么我们就只能利用栈迁移来变......
  • HNCTF 2022 WEEK2
    [HNCTF2022WEEK2]e@sy_flower发现花指令changetype90nop掉在主函数p重构,然后就可以反编译了编写脚本enc="c~scvdzKCEoDEZ[^roDICUMC"flag=[1]*24forjinrange(24):flag[j]=chr(ord(enc[j])^48)foriinrange(12):v5=flag[2*i+1]......
  • GitHub Pages使用过域名解析,停止后还能跳转到原有地址的原因
    问题之前使用hexo+GitHubPages搭建个人博客,同时使用了在腾讯云买了域名,使用了域名解析,将GitHubPages的访问地址解析到了自己买的域名,在GitHub仓库里面使用了CNAME文件指定域名,如我的lingyejun.com。因此如果需要停止域名解析就需要现在阿里云域名解析那里暂停解析该网址(或者删......
  • NGINX 配置404错误页面跳转指定页面
    主要是记录踩过的一个坑。。。nginx要自定义404和401的页面,但是error_page配置没有生效,没有正常跳转。 error_page404 /404.html;error_page404=http://www.test.com/error.html;http://tengine.taobao.org/nginx_docs/cn/docs/http/ngx_http_core_module.html#error_......