关于Servlet里的doget执行了两次的问题

mianguiwu2107 2017-11-21 03:11:05
如题,我正在开发微信公账号,但是由于域名没有备案,所以在微信授权获取基本信息,跳转到第三方网页的时候会出现
这样的页面,其实在这个时候已经获取到了需要的信息,但是在点击一图的继续访问后,他再次执行了doget方法,导致了报错因为code被使用过一次了,官方文档说的很清楚,code只能用一次。现在有什么办法能让doget在点击继续访问的时候不会再次执行呢,或者其他办法也行,求教大神们,以下是Servlet代码:
public class OAuthServlet extends HttpServlet {
private static final long serialVersionUID = -1847238807216447030L;

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");

// 用户同意授权后,能获取到code
String code = request.getParameter("code");
String state = request.getParameter("state");

// 用户同意授权
if (!"authdeny".equals(code)) {
// 获取网页授权access_token
WeixinOauth2Token weixinOauth2Token = AdvancedUtil.getOauth2AccessToken("wxe34a90ac7bxxcab85c", "1207d566090a8344xxxd6224c02c", code);
// 网页授权接口访问凭证
String accessToken = weixinOauth2Token.getAccessToken();
// 用户标识
String openId = weixinOauth2Token.getOpenId();
// 获取用户信息
SNSUserInfo snsUserInfo = AdvancedUtil.getSNSUserInfo(accessToken, openId);

// 设置要传递的参数
request.setAttribute("snsUserInfo", snsUserInfo);
request.setAttribute("state", state);
}
// 跳转到index.jsp
request.getRequestDispatcher("index.jsp").forward(request, response);
}
}
...全文
547 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
什么都不能 2017-11-22
  • 打赏
  • 举报
回复
你的认证的信息看到了吗? 怎么跳转到php的?
mianguiwu2107 2017-11-22
  • 打赏
  • 举报
回复
引用 1 楼 hly_886 的回复:
不要用分发跳转,用response跳转,你这是又回到了之前的请求页面,所以又执行了一次
response跳转的话,jsp页面获取不到里面的数据啊
hly_886 2017-11-21
  • 打赏
  • 举报
回复
不要用分发跳转,用response跳转,你这是又回到了之前的请求页面,所以又执行了一次

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧