Java从后台重定向(redirect)到另一个项目的方法

(1)通过ModelAndView跳转

@RequestMapping("alipayforward")
    public ModelAndView alipayforward(HttpServletRequest req, HttpServletResponse resp) throws Exception {
    	String contNo =req.getParameter("contNo");
    	logger.info("访问/downloadRequestElecCont.action");
    	String url = "redirect:http://baidu.com/downloadRequestElecCont.action?contNo="+contNo; 
    	return new ModelAndView(url);
    }

(2)通过HttpServletResponse跳转

@RequestMapping("alipayforward/{contNo}")
    public void alipayforward(@PathVariable("contNo") String contNo, HttpServletRequest req, HttpServletResponse resp) throws Exception {
    	//String contNo =req.getParameter("contNo"); //保单号
    	logger.info("访问/downloadRequestElecCont.action");
    	resp.sendRedirect("http://baidu.com/downloadRequestElecCont.action?contNo="+contNo);
    }

(3)通过redirect返回String类型跳转,注意这种方法不允许Spring控制器用@RestController注解,

因为@RestController相当于类中的所有方法都标注了@ResponseBody,这些方法不会返回一个视图,而是返回一个json对象,

这样的话只是在页面上打印出字符串,而不跳转。控制器用@Controller注解即可

@RequestMapping("alipayforward")
    public String alipayforward(@RequestParam("contNo") String contNo, HttpServletRequest req, HttpServletResponse resp) throws Exception {
    	//String contNo =req.getParameter("contNo"); //保单号
    	logger.info("访问/downloadRequestElecCont.action");
    	return "redirect:http://baidu.com/downloadRequestElecCont.action?contNo="+contNo;
    }


下面是关于传参问题

重定向传参为get方式,如果传参数较多,可以封装到map或modelMap中

@RequestMapping(params = "action=alipayforward")
    public String alipayforward(Map modelMap){
    	modelMap.put("userName", "呵呵");
    	modelMap.put("password", "123456");
    	modelMap.put("age", "25");
    	return "redirect:http://localhost:8088/era/user/alipayforward4?modelMap="+modelMap;
    }


另一个项目用实体类对象接收

@RequestMapping("alipayforward4")
    public void alipayforward4(User user, HttpServletRequest req) throws Exception {
    	System.out.println(user.getPassword());
    	String modelMap = req.getParameter("modelMap");
    	System.out.println(modelMap);
    }

Java中,如果你是在使用Spring框架开发微信公众号后台,通常情况下,你可以使用Spring MVC提供的`RedirectView`类或者简单的Controller方法返回重定向响应。下面是一个简单的例子,展示了如何在Spring MVC中实现重定向一个URL。 ```java import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; @Controller public class RedirectController { @RequestMapping("/redirect") public ModelAndView redirect() { // 第一个参数是重定向的URL,第二个参数是重定向时是否带上当前页面的request域属性 return new ModelAndView("redirect:/targetUrl", true); } @RequestMapping("/targetUrl") public String targetUrl() { // 这里处理目标页面的逻辑 return "targetView"; // 返回目标页面的视图名称 } } ``` 在上面的代码中,当访问`/redirect`路径时,Spring MVC会返回一个重定向到`/targetUrl`的响应。`"redirect:/targetUrl"`指定了重定向的目标URL,`true`表示在重定向过程中会保留原请求的模型数据。 如果你需要实现更复杂的逻辑,比如在重定向之前还需要进行一些处理,你可以通过创建一个普通的Controller方法,并在该方法中进行必要的业务处理,然后通过返回一个`RedirectView`实例来实现重定向。 请记住,重定向通常用于当用户完成一个操作后,将用户浏览器发送到一个地址。在微信公众号开发中,这可能用于将用户从一个页面跳转到一个页面,或者从一个接口跳转到一个接口。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值