forward和redirect在SpringMVC和SpringBoot中的使用

编程

使用场景

在接口开发过程中,在Controller层实现供前端调用的接口开中时,有时一个功能已经在其他Controller中实现过,如在该Controller中重复实现一遍会造成代码冗余,不是推荐的方案?那怎么做到让前端开发人员看着比较方便一点儿,而后端又不会产生冗余呢?这里推荐在Controller中使用forward实现。

具体实现

这里举一个例子,比如MbrMemberCtroller中已经实现了对会员详情的获取,而此时需要开发一个订单的Controller,命名为OsmServiceOrderController,在这个Controller中需要获取供应方会员的详细信息(即 MbrMemberCtroller中已实现的会员详情),怎么实现呢?

原始Controller实现

MbrMemberCtroller

@ApiOperation(value = "获取会员详情", notes = "获取会员详情。", response = MbrMember.class, authorizations = {@Authorization(value="apikey")})

@ApiImplicitParams({

@ApiImplicitParam(name = "mbrMemberId", value = "会员编号", required = true, dataType = "string", paramType = "query")

})

@Log("明细会员信息记录表")

@PostMapping("detail/{mbrMemberId}")

@RequiresPermissions("mbrMember:detail")

public MbrMember detail(@NotBlank(message = "{required}") @PathVariable String mbrMemberId) throws FebsException {

try {

return this.iMbrMemberService.selectMbrMemberDetail(mbrMemberId);

} catch (Exception e) {

message = "明细会员信息记录表失败";

log.error(message, e);

throw new FebsException(message);

}

}

注意上述两个Api的注解用于生成Swagger接口文档,@RequiresPermissions是对接口调用权限的控制,与此处重点无关。

这是一个post请求方式实现的接口。

调用方Controller实现

@ApiOperation(value = "明细需求方", notes = "需求方明细信息。", response = String.class, authorizations = {@Authorization(value="apikey")})

@ApiImplicitParams({

@ApiImplicitParam(name = "mbrMemberId", value = "会员信息编号", required = true, dataType = "string", paramType = "query")

})

@Log("明细订单表")

@PostMapping("demanderDetail/{mbrMemberId}")

@RequiresPermissions("mbrMember:detail")

public void demanderDetail(@NotBlank(message = "{required}") @PathVariable String mbrMemberId,

HttpServletRequest req, HttpServletResponse resp) throws FebsException {

try {

req.getRequestDispatcher("/mbrMember/detail/" + mbrMemberId).forward(req, resp);

} catch (Exception e) {

message = "代理明细需求方信息失败";

log.error(message, e);

throw new FebsException(message);

}

}

这里采用Request来直接调用forward的实现方式。

forward(请求转发)只能用在同一个应用中,而redirect可以重定向到其他外部应用中去。此处是在同一个应用中的实现,且带有参数,并且需要返回结果集,故使用forward方式更为合适。

参考资源

https://blog.csdn.net/u011676300/article/details/79657933

以上是 forward和redirect在SpringMVC和SpringBoot中的使用 的全部内容, 来源链接: utcz.com/z/511429.html

回到顶部