java post跳转页面_使用POST请求实现页面的跳转

项目情景:

当用户选择几个item之后,点击 查看 按钮之后, 页面跳转到展示items详情页面.

实现:

如果可以使用get请求, 直接在前端使用windows.loaction.href = "newUrl="xxx"&item=itemValue1&item=itemValue2"就行了

这样的问题是如果item比较多, 就有可能超出URL长度限制. 所以考虑用POST实现跳转.

server端:

@SlingServlet(resourceTypes = "/apps/xxx/components/pages/xxx-contentpage",

extensions = "html",

selectors = "selected",

methods = {"GET", "POST"},

metatype = true

)

public class MyServlet extendsSlingAllMethodsServlet {

@Overrideprotected void doPost(SlingHttpServletRequest request, SlingHttpServletResponse response) throwsServletException, IOException {

String newUrl= request.getParameter("newUrl"); RequestDispatcher dispatcher =request.getRequestDispatcher(newUrl);

GetRequest getRequest= newGetRequest(request);

dispatcher.forward(getRequest, response);

}

@Overrideprotected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) throwsServletException, IOException {

doPost(request, response);

}/**Wrapper class to always return GET for AEM to process the request/response as GET.*/

private static class GetRequest extendsSlingHttpServletRequestWrapper {publicGetRequest(SlingHttpServletRequest wrappedRequest) {super(wrappedRequest); }

@OverridepublicString getMethod() {return "GET"; }

}

}

如果直接forward POST request,会报错:

500 error - operations.ModifyOperation Exception during response processing

所以必须把request转换成GET request.

前端:

如果使用ajax提交请求,返回的将是新页面的html代码. 必须用form提交请求.

提示: form里面的action URL 与 servlet 的newUrl 必须不一样 ,否则会发生无限循环错误.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值