初学SpringMVC之 RestFul 风格、重定向和转发

RestFul 风格改变 URL 形式

比如之前是:http://localhost:8080/add?a=1\&b=2

现在是:http://localhost:8080/add/a/b(全是斜杠)

java 复制代码
package com.demo.controller;

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

@Controller
public class RestFul {
    //@RequestMapping(value = "/add/{a}/{b}",method = RequestMethod.GET)
    @GetMapping("/add/{a}/{b}")
    public String test(@PathVariable String a,@PathVariable String b, Model model){
        String res = a + b;
        model.addAttribute("msg",res);
        return "test"; //test.jsp
    }
}

通过 @PathVariable 映射到 URL 上

所有的地址栏请求默认都是 HTTP GET 类型

同理,组合注解有:

@GetMapping() 、@PostMapping()

@PutMapping() 、@DeleteMapping() 、@PatchMapping()

ServletAPI:通过 HttpServletRequest 进行输出、实现重定向、实现转发

java 复制代码
package com.demo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

@Controller
public class Model {
    @RequestMapping("/model")
    public String test(HttpServletRequest request, HttpServletResponse response){
        HttpSession session = request.getSession();
        System.out.println(session.getId());
        return "test";
    }
}

response.senRedirect("/xx.jsp") 重定向

request.getRequestDispatcher("/WEB-INF/jsp/xx.jsp").forward(request,response) 转发

通过 Spring MVC 来实现转发和重定向,无需视图解析器

forward 转发(不改变 URL)、redirect 重定向(改变 URL)

java 复制代码
package com.demo.controller;

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

@Controller
public class ModelTest {
    @RequestMapping("/model")
    public String test(Model model){
        model.addAttribute("msg","Model");

        //转发:不改变url
        //return "/WEB-INF/jsp/test.jsp";
        //return "forward:/WEB-INF/jsp/test.jsp";

        //重定向:改变url
        return "redirect:/index.jsp";
    }
}
相关推荐
程序员梅雨20 分钟前
ZooKeeper面经总结
java·大数据·linux·分布式·后端·zookeeper·中间件
蜗牛互联网40 分钟前
Java 17 调用视觉 Responses API:JSON 约束与人工复核路由
java·人工智能·后端
高频因子挖掘机2 小时前
股票分红送转后价格“断层”:前复权、后复权和不复权该怎么选?
后端·github·api
一条泥憨鱼2 小时前
【Redis | 黑马点评】短信登录功能 源码深度分析
java·redis·后端·session·黑马点评
威哥爱编程2 小时前
【AI全栈12-12】Spring Boot 3.x → 4.x 迁移实操:Jakarta 11、Jackson 3 与 AI 2.0
java·spring boot·后端
威哥爱编程2 小时前
【AI全栈12-11】Spring Boot 把 AI 接口真正上线扛量:限流 / 降级 / 可观测
java·spring boot·后端
小蒜学长2 小时前
基于SpringBoot+uni-app的闪洁家政系统的设计与实现(代码+数据库+LW)
java·spring boot·后端·uni-app·家政服务
需要8262 小时前
Spring Boot 启动流程:run() 里到底发生了什么
java·spring boot·后端
星始流年3 小时前
AI 时代,软件程序员未来 10—15 年的职业前景
前端·后端·ai编程
猪猪拆迁队3 小时前
跨电脑复制共享-局域网直连踩坑
前端·后端·go