我使用MVC创建了一个webapp。我在页面上显示了几个用户链接。这些链接将链接到某些外部站点。当用户点击这些链接时,我想在我的数据库中记录一些数据,然后将用户重定向到新选项卡中的单击链接。在数据库中记录了详细信息之后,我还想向用户显示更新的页面。 我有一个控制器Servlet,它指向一个动作类,它将记录被点击的链接的细节。现在我必须向用户显示两个视图,其中包含webapp的更新页面以及外部链接。我只能做其中一个。是否可以向用户提供两种视图?
通过这种方式我打印了URL:
<a href=
<% out.println(favBean.get(i).getURLLink()); %> >
<% out.println(favBean.get(i).getURLLink());%>
</a>
答案 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);
}