• SpringMVC(2)


    返回数据

    默认情况

    默认情况下返回的是静态页面的名称

    @Controller
    public class TestController {
        @RequestMapping("/sayhi")
        public String sayHi(){
            return "hello";
        }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    这里是引用

    返回非静态页面的数据

    (1)使用@ResponseBody注解

    @Controller
    @ResponseBody
    public class TestController {
        @RequestMapping("/sayhi")
        public String sayHi(){
            return "hello";
        }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    这里是引用

    @ResponseBody可以修饰类,表示当前类中的所有方法都会返回一个非静态页面的数据, 可以修饰方法,表示当前方法返回的是一个非静态页面的数据。

    (2)使用@RestController

    @RestController
    public class TestController {
        @RequestMapping("/sayhi")
        public String sayHi(){
            return "hello";
        }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    这里是引用

    idea 热部署(热加载)
    自动帮开发者重启spring boot 项目,已达到修改代码之后能够“实时”的看到新效果的目的。
    (1)在pom.xml中添加spring boot 的开发者框架支持。
    在这里插入图片描述
    (2)settings开启项目自动编译
    在这里插入图片描述
    在这里插入图片描述
    (3)开启程序运行中热部署
    不同的版本配置方法不同配置分为2021.2之前的版本配置和2021.2之后的版本配置
    以我的版本为例(高版本)
    在settings中
    在这里插入图片描述
    (4)启动项目使用debug而非run运行
    在这里插入图片描述

    实现计算器功能

    doctype html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport"
              content="width=device-width, user-scalable=no, initialscale=1.0, maximum-scale=1.0, minimum-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>计算器示例title>
    head>
    <body>
    <form action="/calc">
        <h1>计算器h1>
        数字1:<input name="num1" type="text"><br>
        数字2:<input name="num2" type="text"><br>
        <input type="submit" value=" 点击相加 ">
    form>
    body>
    html>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    @RestController
    public class CalcController {
    
        @RequestMapping("/calc")
        public String calc(Integer num1,Integer num2){
            if(num1 ==null || num2==null){
                return "

    参数错误!

    返回"
    ; } return "

    结果:"+(num1+num2)+"

    返回"
    ; } }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    返回json对象

    <script>
            //ajax 提交
            function mysub(){
                // 1. 判空
                var username=jQuery("#username");
                var password=jQuery("#password");
                if(jQuery.trim(username.val())==""){
                    alert("请先输入用户名");
                    username.focus();//光标重置到此元素
                    return;
                }
    
                if(jQuery.trim(password.val())==""){
                    alert("请先输入密码");
                    passworde.focus();//光标重置到此元素
                    return;
                }
                jQuery.ajax({
                    url:"/user/login4",
                    type:"POST",
                    data:{"username":username.val(),
                "password":password.val()},
                    success:function(result){
                        alert(JSON.stringify(result));
                    }
                });
    
    
            }
    
        script>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    @RequestMapping("/login4")
        public HashMap<String,Object> login4(String username,String password){
            HashMap<String,Object> result=new HashMap<String,Object>();
            int state=200;
            int data=1;//等于1登录成功,否则失败
           String  msg="";
    
            if(StringUtils.hasLength(username) && StringUtils.hasLength(password)){
                if(username.equals("admin") && password.equals("admin")){
                    data=1;
                    msg="";
                }else {
                    msg="用户名或密码失败";
                }
    
            }else{ //参数为空
                msg="非法参数";
            }
            result.put("state",state);
            result.put("data",data);
            result.put("msg",msg);
            return  result;
        }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    请求转发或请求重定向

    请求转发:forward【服务器帮用户实现的】
    (1)方式1

    //请求转发实现方式1
        @RequestMapping("/fw")
        public String myForward(){
            return "forward:/calc.html";
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    这里是引用

    方式1可以直接省略forward

    //请求转发实现方式1-1
        @RequestMapping("/fw1")
        public String myForward1(){
            return "/calc.html";
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    这里是引用

    (2)方式2

    //请求转发实现方式2
        @RequestMapping("/fw2")
        public void myForward2(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            request.getRequestDispatcher("/calc.html").forward(request,response);
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    这里是引用

    请求重定向:redirect 【客户端的行为】
    (1)方式1

    //重定向实现方式1
        @RequestMapping("/rd")
        public String myRedirect(){
            return "redirect:/calc.html";
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    这里是引用

    (2)方式2

    //重定向实现方式2
        @RequestMapping("/rd2")
        public void myRedirect2(HttpServletResponse response) throws IOException {
            response.sendRedirect("calc.html");
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    这里是引用

  • 相关阅读:
    对类和对象的详细解析
    JS——常用内置对象
    web前端期末大作业:基于html化妆品购物商城项目的设计与实现——化妆品官方网站设计与实现(HTML+CSS+JS)
    Jenkins-CI 远程代码执行漏洞(CVE-2017-1000353)
    SqlServer 存储过程(生成订单)
    webpack打包一个文件,做了哪些事情
    最长递增子序列问题(你真的会了吗)
    CloudCompare 技巧四 点云匹配
    [数据集][目标检测]城市道路垃圾检测数据集5266张33类别重制版
    个人电脑可以当服务器用吗?
  • 原文地址:https://blog.csdn.net/m0_62824239/article/details/125958235