2017-08-02 79 views
-4

我有servlet與url模式/ servlet。我叫它如何用window.open正確調用servlet?

function func(id){window.open ("../servlet?fileId="+id, "hiddenFrame");} 

通過href在jsp中哪些不起作用。但是通過URL/servlet訪問它?fileId = 2的作品。我認爲這是一個servlet映射問題。請幫助。

更新:我添加下面

的index.jsp的代碼只聲明:

<%request.getRequestDispatcher("newjsp.jsp").forward(request,response);%> 

newjsp.jsp了代碼:

<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<!DOCTYPE html> 
<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    <title>JSP Page</title> 
    <script language="JavaScript"> 
function func (id) 
{ 
    window.open ("/servlet?fileId="+id, "hiddenFrame"); 
    } 
    </script> 
</head> 
<body> 
    <h1>Hello World!</h1> 
    <% 
     out.println("<a href='javascript:func(2)'>Link</a>"); 
    %> 
</body> 
<iframe src="about:blank" name="hiddenFrame" width=0 height=0 frameborder=0> 
</iframe> 
</html> 

servlet.java有代碼:

package newpackage; 
import java.io.IOException; 
import java.io.PrintWriter; 
import javax.servlet.ServletException; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

@WebServlet(name = "servlet", urlPatterns = {"/servlet"}) 
public class servlet extends HttpServlet { 

protected void processRequest(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 
    response.setContentType("text/html;charset=UTF-8"); 
    try (PrintWriter out = response.getWriter()) { 
     /* TODO output your page here. You may use following sample code. */ 
     out.println("<!DOCTYPE html>"); 
     out.println("<html>"); 
     out.println("<head>"); 
     out.println("<title>Servlet servlet</title>");    
     out.println("</head>"); 
     out.println("<body>"); 
     out.println("<h1>Servlet servlet at " + request.getContextPath() + "</h1>"); 
     out.println("</body>"); 
     out.println("</html>"); 
    } 
} 

@Override 
protected void doGet(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 
    processRequest(request, response); 
} 

@Override 
protected void doPost(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 
    processRequest(request, response); 
} 

@Override 
public String getServletInfo() { 
    return "Short description"; 
}// </editor-fold> 
} 
+0

首先,您在上面的window.open方法中使用的url包含兩個dots.Check首先。其次,請儘量提供確切的錯誤跟蹤。 – ramasCoder

+0

@ professionallyme86我已經刪除了點,但仍然無法使用。我沒有收到任何錯誤。點擊返回只是懸停在鏈接顯示'javascript:func(2)' –

+0

你能分享代碼嗎? – ramasCoder

回答

0

非常有趣的問題。您在window.open()方法中使用了「/ servlet」作爲URL。這將繞過應用程序根文件夾並將URL形成爲http://localhost/servet,而實際URL應該與http://localhost//servlet類似。

在你的情況下解決方案的任何方式只是從URL中刪除該「/」。因此使用:

window.open ("servlet?fileId="+id, "hiddenFrame")