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