看板 java 關於我們 聯絡資訊
各位好,小弟有兩個檔案,一個是tryJSP.jsp,另一個是servlet檔(TryServlet.java) JSP檔裡面有個按鈕,點下去後會用$.ajax post的方式連到Servlet檔 $.ajax post的url是 "/Eclipse專案的名稱/TryServlet", Servlet檔裡面有宣告一個字串(String ss = "Hello"), 然後Servlet會傳回該字串到JSP檔案,JSP檔案會將該字串使用alert的方式顯示出來。 只是現在按下去後沒有success,而是跑到$.ajax的error區段,且console顯示下列訊息: java.lang.ClassNotFoundException: TryServlet 想請問該怎麼解決這個問題,有把url改成"/TryServlet",但結果還是一樣 ~"~ 程式碼如下: 【TryServlet.java】 import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class TryServlet extends HttpServlet { private static final long serialVersionUID = 1L; public TryServlet() { super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String send_back = "Hello"; PrintWriter out = response.getWriter(); out.print(send_back); out.flush(); out.close(); } } 【tryJSP.jsp】 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <script type="text/javascript" src="//code.jquery.com/jquery-1.11.3.min.js"></script> <title>Insert title here</title> </head> <body> <input type="button" id="query" value="Click me" /> <script type="text/javascript"> $("#query").click(function() { $.ajax({ type : "POST", url : " /MyProjectName/TryServlet", data : { }, dataType : "text", success : function(string_back) { alert(string_back); }, error : function(xhr, textStatus, error) { console.log(xhr); alert("連線錯誤,請重新查詢"); console.log(error); }, //請求完成時執行的函式(不論結果是success或error) complete : function() { alert("done"); } }); }); </script> </body> </html> 【web.xml】 .. .. <servlet> <description></description> <display-name>TryServlet</display-name> <servlet-name>TryServlet</servlet-name> <servlet-class>TryServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>TryServlet</servlet-name> <url-pattern>/TryServlet</url-pattern> </servlet-mapping> <servlet> .. .. -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 203.208.196.50 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1445307189.A.40D.html
Dnight: 你的路徑設定在xml還是跟本沒設呢? 10/20 10:32
qazsd: 路徑是設在web.xml,剛加上web.xml的設定文章裡了 10/20 11:26
ssccg: servlet-class要用全名吧,含package 10/20 11:51
qazsd: package是(default package),實體路徑上無該資料夾 10/20 13:48
Dnight: 你的意思是package放在src資料夾下面嗎? 10/20 14:10
gpctv: " /MyProjectName/TestServ", ?? 10/20 15:41
gpctv: 只是這裡打錯而已嗎 10/20 15:42
swallowcc: servlet-class 要打package name, com.ooxx.TryServlet 10/20 16:51
qazsd: src目錄底下是TryServlet.java 該目錄底下無其他資料夾 10/20 23:43
※ 編輯: qazsd (123.195.53.137), 10/20/2015 23:44:30
qazsd: 回gpc大大, 已更正post的url為專案名稱/TryServlet 10/20 23:45
gpctv: 那問題還是一樣嗎?! 10/21 08:43
gpctv: console還是顯示ClassNotFoundException嗎?! 10/21 08:47
qazsd: 對 還是class not found 10/21 16:49
gpctv: 假設說你的JQuery url 只打 TryServlet ?!?! 10/21 18:41
gpctv: 就”TryServlet” 這樣咧?! 10/21 18:42
ssccg: 你的TryServlet有compile成.class檔嗎 10/21 19:42
qazsd: 回gpc大大,jQuery url打/TryServlet 10/21 21:44
qazsd: 或是打/專案名稱/TryServlet好像都不行 10/21 21:44
qazsd: 另外沒有.class檔,按了Eclipse的build project後還是沒有 10/21 21:45
gpctv: 沒有class!!如果你連斜線都不打咧?! 10/21 23:05
qazsd: url改成./TryServlet,然後將servlet放在package, 10/22 19:51
qazsd: servlet-class改成org.xx.TryServlet後就可以了 10/22 19:52
gpctv: good 10/22 20:58
Dnight: 好喔那就結案囉~_~ 10/22 21:04