一、单纯跳转
有时候我们需要将用户提交的请求跳转到其它页面,下面代码即可实现这个功能
@Controller @RequestMapping("login") @Api("模拟登陆") public class LoginController { private final static Logger logger = LoggerFactory.getLogger(LoginController.class); @GetMapping("redirect") @ApiOperation("跳转到百度") public void doLogin(HttpServletRequest request, HttpServletResponse response) throws IOException { logger.info(request.getPathInfo()); response.sendRedirect("http://www.baidu.com"); } }
二、模拟登陆
有时候我们需要在后端模拟前端登陆页面的登陆,登陆成功后跳转
@GetMapping("redirect2") @ApiOperation("跳转到百度") public void doLogin2(HttpServletRequest request, HttpServletResponse response) throws IOException { //创建HttpClient CloseableHttpClient httpClient = HttpClients.createDefault(); //登陆网址 String loginUrl = "http://xxx.com.cn/api/user/login"; HttpPost httpPost = new HttpPost(loginUrl); //以Post方式请求,设置登录用户名和密码 List<NameValuePair> nameValuePairs = new ArrayList<>(); nameValuePairs.add(new BasicNameValuePair("loginName", "xxxxx")); //这里改为自己的用户名 nameValuePairs.add(new BasicNameValuePair("loginPwd", "123456"));//这里改为自己的密码 httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); CloseableHttpResponse httpResponse = httpClient.execute(httpPost); int statusCode = httpResponse.getStatusLine().getStatusCode(); logger.info("statusCode:" + statusCode); InputStream inputStream = httpResponse.getEntity().getContent(); BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); String line; while ((line = reader.readLine()) != null) { logger.info(line); } inputStream.close(); reader.close(); //登陆成功后跳转到百度 response.sendRedirect("http://www.baidu.com"); }
三、模拟登陆后访问内部页面
登陆后访问百度其实没有什么意义,因为百度本来也不需要登陆;
如果我们登陆后可以去访问一些本来需要登陆才能访问的页面,就可以获取更多有价值的信息