从servlet打开一个URL

时间:2014-12-03 05:42:49

标签: java html jsp servlets model-view-controller

我使用MVC创建了一个webapp。我在页面上显示了几个用户链接。这些链接将链接到某些外部站点。当用户点击这些链接时,我想在我的数据库中记录一些数据,然后将用户重定向到新选项卡中的单击链接。在数据库中记录了详细信息之后,我还想向用户显示更新的页面。 我有一个控制器Servlet,它指向一个动作类,它将记录被点击的链接的细节。现在我必须向用户显示两个视图,其中包含webapp的更新页面以及外部链接。我只能做其中一个。是否可以向用户提供两种视图?

通过这种方式我打印了URL:

<a href=
    <%  out.println(favBean.get(i).getURLLink());   %> >
    <% out.println(favBean.get(i).getURLLink());%>
</a> 

1 个答案:

答案 0 :(得分:1)

您可以使用Jquery Ajax执行此操作:

<a class="link" href=
  <%  out.println(favBean.get(i).getURLLink());   %> >
  <% out.println(favBean.get(i).getURLLink());%>
</a> 


<script>
    $(".link").click(function(){
       //first do the servlet DB stuff
       jQuery.ajax({
         type:"POST",
         url : "myServlet",
         data : param,
         success : function(data) {
         //on servlet DB stuff success open link in new tab
          var address = $(this).attr("href");
          windows.open=address;
        });
    });
</script>

Servlet仅使用一点点纯JavaScript:

<% if( request.getAttribute("href") != null){ %>
 <script>
    document.addEventListener('DOMContentLoaded', function(){
       windows.open='<%=request.getAttribute("href")%>'
     });
 </script>
<%}%>

<a href='/callMyDBGetServlet?redirect=<%=favBean.get(i).getURLLink()%>' >
  <% out.println(favBean.get(i).getURLLink());%>
</a> 


doGet(HttpServletRequest request, HttpServletResponse response){

    String href = request.getParameter("redirect");
    //Do my DB stuff
    request.setAttribute("href");
    request.getDipatcher("sameJsp.jsp").forward(request,response);
 }