RestFul 风格改变 URL 形式
比如之前是:http://localhost:8080/add?a=1&b=2
现在是:http://localhost:8080/add/a/b(全是斜杠)
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 进行输出、实现重定向、实现转发
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)
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";
}
}