开发者社区> 问答> 正文

Spring 的拦截器如何实现url转发? 报错

Spring 的拦截器如何实现url转发? 400 报错

如何实现Spring 的过滤器代码中改写请求的URL,并转发出去,注意,是转发,不是重定向


package com.blog.inteceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import com.blog.entity.User;

public class HandlerInteceptor implements HandlerInterceptor{

	public void afterCompletion(HttpServletRequest arg0,
			HttpServletResponse arg1, Object arg2, Exception arg3)
			throws Exception {
		System.out.println("执行后");
		
	}

	public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1,
			Object arg2, ModelAndView arg3) throws Exception {
		System.out.println(".....");
		
	}

	public boolean preHandle(HttpServletRequest request, HttpServletResponse res,
			Object arg2) throws Exception {
		System.out.println("拦截用户");
		String url = request.getScheme() +"://" + request.getServerName()  
                + ":" +request.getServerPort() 
                + request.getServletPath();
		System.out.println(url);
		//在这里使用forward实现转发,而不是使用redirect实现重定向
		return true;
	}

}
我需要在上述代码中的方法中将请求的URL换成另外一个url,然后转发出去。



展开
收起
优选2 2020-06-04 21:20:37 1134 0
1 条回答
写回答
取消 提交回答
  • 不是有response吗?######回复 @留在青山 : response可以重定向跟服务端转发啊。######Response是重定向。。。。。######request.getRequestDispatcher("/url").forward(request, response)######回复 @留在青山 : 最后要return false 试试;######回复 @留在青山 : 什么异常?你的说法都可以颠覆servlet了。######你可以试试在filter中写这个代码,应该会报异常,我试过了。######response######你试了response不会改变浏览器的url吗?######可以考虑模拟http的get和post请求,请求参数都可以通过当前服务器的请求获取到,url你自己的代码也都拼接号了,剩下的httpo模拟请求代码网上都有的~######

    可以尝试 将HttpServletRequest给wrap掉。 我以前是为了替换body,你这是替换header。

    ######已经解决了,没使用拦截器来转发,我在controller层的@RequestMapping中使用正则表达式解决了拦截符合一定url规则,在controller中实现了转发。

    2020-06-05 11:56:41
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
云栖社区特邀专家徐雷Java Spring Boot开发实战系列课程(第20讲):经典面试题与阿里等名企内部招聘求职面试技巧 立即下载
微服务架构模式与原理Spring Cloud开发实战 立即下载
阿里特邀专家徐雷Java Spring Boot开发实战系列课程(第18讲):制作Java Docker镜像与推送到DockerHub和阿里云Docker仓库 立即下载

相关实验场景

更多