JAVA SSM框架 重定向与RESTFul架构支持

拓展:跳转

状态码介绍

200:服务器处理成功
404:你找的资源不存在
500:服务器处理失败

redirect 重定向

适用于原先的网页不继续提供服务了
案例:
介绍:比如说现在京东,发展到现在,有了很多网站京东金融 京东物流
www.jd.com有个登录页,后来有多个网站,需要统一登录。
jd.com 2003 jd.com/login.html
单点登录
https://passport.jd.com/new/login.aspx?sso=1&ReturnUrl=https://sso.jdl.cn/sso/redirect
在这里插入图片描述

设计思路:

@Controller
  UserController{
    
    
	@RequestMapping("/login"){
    
    
     public String login() {
    
    
     return "redirect:https//路径"
}
}

新建一个UserController.java类

package com.tedu.webDemo.controller;

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

@Controller
public class UserController {
    
    
     //模拟有个以前的登录方法
	@RequestMapping("/login")
	public String login() {
    
    
		return "redirect:http://www.jd.com";
	}
}

http://localhost:8080/login
在这里插入图片描述
转发后浏览器的地址栏变为转发后的地址。
在chrome的调试窗口中network中查看status code
在这里插入图片描述

forward 转发

转发后浏览器地址栏还是原来的地址。所以转发前请求的参数在转发后仍然可以读取到。
如下例子:
在这里插入图片描述

package com.tedu.webDemo.controller;

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

@Controller
public class UserController {
    
    
	@RequestMapping("/loginByNP")
	@ResponseBody //方法返回字符串
	//如果类加的是@RestController 不用加@ResponseBody
	public String loginByNameAndPwd(String username,String pwd) {
    
     //打上断点
		return "loginByNameAndPwd";
	}
	
	@RequestMapping("/loginByC")
	public String loginByCode(String username,String pwd,String code) {
    
    
		//验证码通过
		//调用loginByNameAndPwd
		return "forward:/loginByNP";
	}
	
     //模拟有个以前的登录方法
	@RequestMapping("/login")
	public String login() {
    
    
		return "redirect:http://localhost:8080/login";
	}
}

DeBUG AS执行:
使用断点跟踪会发现username传到loginByNamePwd方法中了。
http://localhost:8080/loginByC?username=123&pwd=456
在这里插入图片描述

重定向redirect和转发forward的区别

重定向redirect和转发forward的区别
1,重定向浏览器地址栏显示新的地址,转发地址栏不变
2,重定向可以重定向别的网站,转发只能转发到本网站中的方法。



RESTFul架构支持

RESTFul要求通过url传输数据

https://blog.csdn.net/qq_34337272/article/details/108347545
https://www.zhihu.com/question/328810338/answer/720393487

普通传递参数的方法是 url?itemName=手机

传参数有两种方式

普通?username=a&pwd=1
restful /a/1

@restController
    RegisterController{
    
    
@requestMapping("/reg/{username}/{name}")

register@pathVarible String username,@PathVariable String pwd

}

接收单个参数

@PathVariable用于将请求URL中的模板变量映射到功能处理方法的参数上
形成RUSTFul形式,这将是未来的发展趋势。它更加简洁,安全。强化URL GET访问方式。
controller中代码:

创建:RegisterController 类

package com.tedu.webDemo.controller;

import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class RegisterController {
    
    
	@RequestMapping("/reg/{username}/{pwd}")
	public String register(
			@PathVariable String username,
			@PathVariable String pwd
			) {
    
    
		return username+","+pwd;
	}
}

http://localhost:8080/reg/abc/123
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/QQ1043051018/article/details/112675238