Angular JS + Java Servlet路由问题

时间:2014-09-14 07:01:10

标签: java angularjs jsp servlets

我有一个使用Angular JS构建的应用程序 它有3个视图说(A,B和C) 这就是我配置路线参数的方法。

.config(function ($routeProvider){
$routeProvider
.when('/',{
    controller:'aController',
    templateUrl: 'jsps/a.jsp'
})
.when('/b',{
    controller:'bController',
    templateUrl: 'jsps/b.jsp'
})
.when('/c',{
    controller:'cController',
    templateUrl: 'jsps/c.jsp'
})
.otherwise({redirectTo:'/'});

});

所有三种观看次数都有登录链接。单击LogIn会将用户重定向到我的应用程序中的其他页面。

Login是一个表单,它调用LoginServlet并成功验证我将用户重定向到我的应用程序。

RequestDispatcher rd = request.getRequestDispatcher("index.jsp");
rd.include(request,response);

我也尝试过rd.forward(请求,响应)

index.jsp是具有ng-view的默认页面 因此,默认情况下始终在身份验证后加载视图A.

现在我的情况是当用户请求从B或C登录时,他必须在身份验证后重定向到该视图。

我试过 request.getRequestDispatcher(“index.jsp#/ B”);
但这不起作用。

有关如何实现这一目标的任何建议?

1 个答案:

答案 0 :(得分:1)

url片段#/ b未发送到服务器(有关详细信息,请参阅Get anchor from URI)。如果在服务器上需要此信息,则需要使用查询参数。解决方案是(伪代码)

  • 将此信息作为查询参数嵌入登录链接例如:<a href="/login?from=/b"></a>
  • 使用登录表单中的隐藏输入字段来保存查询参数&#39; <input type="hidden" name="from" value="${param.from}">因此,当提交登录表单时,这将在服务器中可用。
  • 登录后重定向用户"index.jsp#" + request.getParameter("from")