【问题标题】:opening a URL from servlet从 servlet 打开 URL
【发布时间】:2015-01-31 14:07:00
【问题描述】:

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

以这种方式我正在打印 URL:

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

【问题讨论】:

  • 您想在同一页面上显示合并视图(本地和外部)吗?
  • 然后将这些视图放在一个 Jsp 中,然后在单击链接时将其返回到同一个 Jsp 并进行更新
  • 如何将更新返回到您的页面?请包括您的servlet。 :)
  • 我不想合并视图。应根据链接打开外部页面。一页将是我的网络应用程序的页面,它将显示更新的视图。
  • @Secondo 我在请求参数中返回更新。 RequestDispatcher d = request.getRequestDispatcher("WEB-INF/" + nextPage); d.forward(请求,响应);

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


【解决方案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);
 }

【讨论】:

  • 用 servlet 和 JSP 做不到吗?
  • 这是可能的,但这将是一个令人讨厌的解决方法。 Jquery 解决方案比 IMO 好得多。我将更新 servlet 示例。
  • 好吧,我刚刚意识到即使那样你也需要一点纯 Javascript(不是 Jquery).. :/
猜你喜欢
  • 2017-07-25
  • 2015-12-12
  • 2015-03-19
  • 1970-01-01
  • 1970-01-01
  • 2013-02-10
  • 2019-07-23
  • 2020-11-06
相关资源
最近更新 更多