学习笔记:基于SpringBoot的牛客网社区项目实现(二)之Spring MVC入门

news2025/7/19 5:28:25

1.1

 

 

函数的返回值为空,因为可以使用response对象向浏览器返回数据。声明了request对象和response对象,dispatcherservlet自动将这两个对象传入

@RequestMapping("/http")
    public void http(HttpServletRequest request, HttpServletResponse response) {
        //获取请求数据
        System.out.println(request.getMethod());
        System.out.println(request.getServletPath());
        Enumeration<String> headerNames = request.getHeaderNames();
        while(headerNames.hasMoreElements()) {
            String name = headerNames.nextElement();
            String value = request.getHeader(name);
            System.out.println(name + ": " + value);
        }
        System.out.println(request.getParameter("code"));

        //返回响应数据
        //新语法,直接在try后面括号内写创建write对象,就不需要再关闭流。
        response.setContentType("text/html;charset=utf-8");
        try(PrintWriter writer = response.getWriter();) {
            writer.write("<h1>牛客网</h1>");
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

问号后面传参数,可以使用request.getParameter("code")获取。

//GET请求
    //students?current=1&limit=20
    @RequestMapping(path = "/students", method = RequestMethod.GET)//只能处理GET请求
    @ResponseBody
    public String getStudents(
            @RequestParam(name = "current", required = false, defaultValue = "1") int current,
            @RequestParam(name = "limit", required = false, defaultValue = "10") int limit) {
        System.out.println(current);
        System.out.println(limit);
        return "some student";
    }

    //GET传参的第二种方法,一种是像上面使用问号传参数,另一种是直接拼在路径中
    @RequestMapping(path = "/student/{id}", method = RequestMethod.GET)
    @ResponseBody
    public String getStudent(@PathVariable("id") int id) {
        System.out.println(id);
        return "a student";
    }
//POST浏览器向服务器提交数据
@RequestMapping(path = "/student", method = RequestMethod.POST)
@ResponseBody
public String saveStudent(String name, int age) {//和表单的name一样
    System.out.println(name);
    System.out.println(age);
    return "success";
}

//响应html数据
@RequestMapping(path = "/teacher", method = RequestMethod.GET)
public ModelAndView getTeacher() {
    ModelAndView modelAndView = new ModelAndView();
    modelAndView.addObject("name", "张三");
    modelAndView.addObject("age", "22");
    modelAndView.setViewName("/demo/view");
    return modelAndView;
}

@RequestMapping(path = "/school", method = RequestMethod.GET)
public String getSchool(Model model) {
    model.addAttribute("name", "北京大学");
    model.addAttribute("age", "120");
    return "/demo/view";
}
//响应JSON请求数据,一般用于异步请求
//Java对象-> JSON字符串 -> JS对象
@RequestMapping(path = "/emp", method = RequestMethod.GET)
@ResponseBody//dispatcherservlet看见加了这个注解,会自动将Map转成JSON数据
public List<Map<String, Object>> getEmp() {
    List<Map<String, Object>> list = new ArrayList<>();
    Map<String, Object> emp = new HashMap<>();
    emp.put("name", "张三");
    emp.put("age", 22);
    list.add(emp);
    return  list;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/395766.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ReentranLock(可重入锁)

一、ReentranLock ReentranLock属于JUC并发工具包下的类&#xff0c;相当于 synchronized具备如下特点 ● 可中断 ● 可以设置超时时间 ● 可以设置为公平锁&#xff08;防止线程出现饥饿的情况&#xff09; ● 支持多个条件变量 与 synchronized一样&#xff0c;都支持可重…

浅析 SplitChunksPlugin 及代码分割的意义

本文作者为 360 奇舞团前端开发工程师起因有同事分享webpack的代码分割&#xff0c;其中提到了SplitChunksPlugin&#xff0c;对于文档上的描述大家有着不一样的理解&#xff0c;所以打算探究一下。Q&#xff1a;什么是 SplitChunksPlugin&#xff1f;SplitChunksPlugin 是用来…

Python所有方向的入门和进阶路线,20年老师傅告诉你方法

干了20多年程序员&#xff0c;对于Python研究一直没停过&#xff0c;这几天把我自己对Python的认知和经验&#xff0c;再结合很多招聘网站上的技术要求&#xff0c;整理出了Python所有方向的学习路线图&#xff0c;基本上各个方向应该学什么&#xff0c;都在上面了&#xff0c;…

macOS 13.3 Beta 3 (22E5236f)发布

系统介绍3 月 8 日消息&#xff0c;苹果今日向 Mac 电脑用户推送了 macOS 13.3 开发者预览版 Beta 3 更新&#xff08;内部版本号&#xff1a;22E5236f&#xff09;&#xff0c;本次更新距离上次发布隔了 7 天。macOS Ventura 带来了台前调度、连续互通相机、FaceTime 通话接力…

文件预览kkFileView安装及使用

1 前言网页端一般会遇到各种文件&#xff0c;比如&#xff1a;txt、doc、docx、pdf、xml、xls、xlsx、ppt、pptx、zip、png、jpg等等。有时候我们不想要把文件下载下来&#xff0c;而是想在线打开文件预览 &#xff0c;这个时候如果每一种格式都需要我们去写代码造轮子去实现预…

k8s pod调度总结

在Kubernetes平台上&#xff0c;我们很少会直接创建一个Pod&#xff0c;在大多数情况下会通过控制器完成对一组Pod副本的创建、调度 及全生命周期的自动控制任务&#xff0c;如&#xff1a;RC、Deployment、DaemonSet、Job 等。本文主要举例常见的Pod调度。1全自动调度功能&…

第二章:基础语法

第二章&#xff1a;基础语法 2.1&#xff1a;关键字和保留字 关键字 定义&#xff1a;被Java语言赋予了特殊含义&#xff0c;用做专门用途的字符串(单词) 特点&#xff1a;关键字中所有字母都为小写 分类&#xff1a; 用于定义数据类型的关键字 class、interface、enum、byt…

算法设计与分析——递归与分治策略——全排列Perm函数

删除线格式 [toc] 问题描述 现给出m个不同的数字&#xff0c;在n个位置上&#xff0c;对齐进行全排列。使用编程实现数学中全排列输出最终计算结果并将所有的排列打印出来。 思路分析 常规的递归方式进行解决即可&#xff0c;递归的终点是根据题目要求进行实现。共有两个参…

第一次运行vue遇到的问题

1.vue无法识别https://blog.csdn.net/weixin_61634408/article/details/1265897982.yarn serve问题https://blog.csdn.net/fangxuan1509/article/details/104711690/3.关闭控制台报错检查&#xff08;每次vue-rounter必须用&#xff09;vue.config,js,的module.exports 中添加l…

【Linux】sudo指令

在本期博客正式开始之前&#xff0c;我们先来解决一个历史遗留问题&#xff1a;sodu指令怎么用不了&#xff1f;sudo指令&#x1f4cc;sudo是linux下常用的允许普通用户使用超级用户权限的工具&#xff0c;允许系统管理员让普通用户执行一些或者全部的root命令&#x1f4cb;但是…

【预告】ORACLE Unifier v22.12 虚拟机发布

引言 离ORACLE Primavera Unifier 最新系统 v22.12已过去了3个多月&#xff0c;应盆友需要&#xff0c;也为方便大家体验&#xff0c;我近日将构建最新的Unifier的虚拟环境&#xff0c;届时将分享给大家&#xff0c;最终可通过VMWare vsphere (esxi) / workstation 或Oracle …

【Spring6】| Bean的四种获取方式(实例化)

目录 一&#xff1a;Bean的实例化方式 1. 通过构造方法实例化 2. 通过简单工厂模式实例化 3. 通过factory-bean实例化 4. 通过FactoryBean接口实例化 5. BeanFactory和FactoryBean的区别&#xff08;面试题&#xff09; 6. 使用FactoryBean注入自定义Date 一&#xff1a…

Radiant:AR/VR显示系统测试比2D屏难在哪?

我们知道&#xff0c;光学一直是AR/VR的核心技术&#xff0c;为了实现理想的光学显示效果&#xff0c;AR/VR厂商和科研人员不断在解决各种各样的问题。除了光学方案外&#xff0c;光学器件的质量对于AR/VR显示效果也很重要。在DSCC举办的一场AR/VR显示论坛上&#xff0c;光学检…

HashMap底层的实现原理(JDK8)

目录一、知识点回顾二、HashMap 的 put() 和 get() 的实现2.1 map.put(k, v) 实现原理2.2 map.get(k) 实现原理三、HashMap 的常见面试题3.1 为何随机增删、查询效率都很高&#xff1f;3.2 为什么放在 HashMap 集合 key 部分的元素需要重写 equals 方法?3.3 HashMap 的 key 为…

HTML DOM 元素

创建新的 HTML 元素在文档对象模型 (DOM) 中&#xff0c;每个节点都是一个对象。DOM 节点有三个重要的属性&#xff0c;分别是&#xff1a;nodeName : 节点的名称nodeValue &#xff1a;节点的值nodeType &#xff1a;节点的类型创建新的 HTML 元素如需向 HTML DOM 添加新元素&…

一款OutLook信息收集工具

OutLook 这是一款burp插件&#xff0c;用于Outlook用户信息收集&#xff0c;在已登录Outlook账号后&#xff0c;可以使用该 插件自动爬取所有联系人的信息 安装 在burp扩展面板加载jar即可 功能介绍 All Users 加载插件后&#xff0c;进入Outlook联系人面板&#xff0c;…

unity开发知识点小结03

物理关节 铰链关节 按照固定的轴进行旋转 弹簧关节 两物体之间加装弹簧 固定关节 两个物体相关联 射线检测 通过射线检测&#xff0c;我们可以实现用鼠标来移动物体&#xff0c;当我们用鼠标点击场景中的某一位置&#xff0c;摄像机就发出一条射线&#xff0c;并且通过…

zookeeper从安装到入门

文章目录什么是zookeeperzookeeper的安装启动zookeeper并检查是否安装完成zookeeper的一些操作指令zookeeper的JavaAPI建立连接创建节点查询节点修改节点删除节点事件监听分布式锁集群leader选举规则集群角色什么是zookeeper ZooKeeper是一个分布式的&#xff0c;开放源码的分…

Fastjson 1.2.24 命令执行漏洞复现-JNDI简单实现反弹shell

文章目录前言一、环境搭建二、漏洞复现准备三、漏洞复现四、不成功的原因&#xff08;排查&#xff09;&#xff1a;总结前言 网上文章千篇一律&#xff0c;导致很多人都只会一种方法&#xff0c;只要有一种办法就所有人跟着这个办法去做了&#xff0c;新建java文件&#xff0…

Azure Function App Deploy Issue

问题&#xff1a;之前一直用vs code 的 Azure Function extension 工具部署&#xff0c;没有什么问题。直到3月份发现 vs code显示部署成功&#xff0c;但是通过 https://<function_name>.scm.azurewebsites.net/DebugConsole 查看上传后的 dll 文件&#xff0c;dll文件根…