代码
重定向可以跨域访问,而转发是在web服务器内部进行的,不能跨域访问。
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.InetAddress;
@RestController
@RequestMapping("/")
public class MyController {
/**
* 重定向测试 1
*
* @param response
* @throws IOException
*/
@RequestMapping(value = "to", method = RequestMethod.GET)
public void to(HttpServletResponse response) throws IOException {
InetAddress address = InetAddress.getLocalHost();
System.out.println(address.getHostAddress());//获取IP地址
response.sendRedirect("http://www.baidu.com");
// response.sendRedirect("http://localhost:8080/to2?time=" + address.getHostAddress());
}
/**
* 重定向测试 2 1-》2
*
* @param time
* @return
*/
@RequestMapping(value = "to2", method = RequestMethod.GET)
public String to2(String time) {
System.out.println(time);
return time;
}
//重定向可以跨域访问,而转发是在web服务器内部进行的,不能跨域访问。
/**
* 请求转发 3
*
* @param request
* @param response
* @throws ServletException
* @throws IOException
*/
@RequestMapping(value = "to3", method = RequestMethod.GET)
public void to3(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//2.servlet1设置一个参数证明servlet1转发的请求(部门1盖一个章)
request.setAttribute("time", "2022-09-01");
//3.查询servlet2的路径,(部门1将其转交给部门1)
RequestDispatcher dispatcher = request.getRequestDispatcher("/to4");
//4.把请求和响应转发给servlet2
dispatcher.forward(request, response);
}
/**
* 请求转发 4 3-》4
*
* @param
* @return
*/
@RequestMapping(value = "to4", method = RequestMethod.GET)
public String to4(HttpServletRequest request) throws ServletException, IOException {
String time = (String) request.getAttribute("time");
System.out.println(time);
return time;
}
}