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

本文介绍了HTTP状态码,如200、404和500,以及重定向(redirect)和转发(forward)的区别。在Spring MVC中展示了如何实现重定向和转发,强调重定向改变地址栏而转发保持不变。同时,讨论了RESTful架构下参数传递的方式,并给出使用@PathVariable进行参数绑定的示例。最后,探讨了RESTful风格在URL设计中的重要性和安全性优势。
摘要由CSDN通过智能技术生成

拓展:跳转

状态码介绍

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
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值