請教前輩問題出在哪,小弟我趁休假時上網爬文想了兩天,改的改,但仍運行不出來,懇請前輩指出盲點所在。
<%@ page contentType="text/html;charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
<title>Duke's Soccer League: Add a New League</title>
</head>
<body bgcolor='white'>
<!-- ${pageContext.request.contextPath}/AddLeague -->
<!-- <c:url value="/AddLeague"/> -->
<form action='<c:url value="/AddLeague"/>' method='POST'>
Year: <input type='text' name='year' /> <br /> <br />
Season:
<select name='season'>
<option value='UNKNOWN'>select...</option>
<option value='Spring'>Spring</option>
<option value='Summer'>Summer</option>
<option value='Fall'>Fall</option>
<option value='Winter'>Winter</option>
</select> <br /> <br />
Title: <input type='text' name='title' /> <br /> <br />
<input type='submit' value='Add League' />
</form>
</body>
</html>
package course.c04;
import java.io.IOException;
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("/AddLeague")
public class AddLeague extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
request.setCharacterEncoding("UTF-8");
String season = request.getParameter("season");
String title = request.getParameter("title");
String year = request.getParameter("year");
response.getWriter()
.append("Season: " + season + ", Title: " + title + ", Year: " + year);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
taglibs-standard-impl-1.2.5.jar
taglibs-standard-spec-1.2.5.jar
以上是我的程式碼跟島包
執行jsp出現的例外狀況
javax.servlet.ServletException: java.lang.NoClassDefFoundError: javax/servlet/jsp/tagext/TagLibraryValidator
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:338)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
1.我用了不同來源的jar包(如tomcat裡面的,網友提供的連結),結果是一樣的
2.我亂猜classpath沒設定好,多設定以下內容,但結果相同
a.%CATALINA_HOME%\lib\*
b.%CATALINA_HOME%\lib\servlet-api.jar
3.用cmd 直接編譯 AddLeague.java -> javax相關的檔案都不存在,可是用eclipse運行不會出錯,只有jsp不行。
如果是用 Eclipse 開發的話, 先檢查看看是不是Dynamic Web Project
專案 !
是的話, 再檢查看看 Java Build Path 的 Libaray 是否有導入 tomcat
你漏的那些理論上導入tomcat包就能找到了 !
原則上, JSP 需透過 tomcat 轉譯成 Servlet 給 JVM
所以如果執意要用 cmd java 方式執行網頁, 建議直接寫 Servlet
細節可參考 :
良葛格語言技術:Servlet/JSP Gossip
或者改用 intlliJ community + Springboot 來開發網站 (內嵌tomcat)
非常感謝你的回答
1.cmd只是不知道還有什麼方法可以測試,亂槍打鳥看可不可以發現新大陸
2.eclipse、tomcat與java全部刪掉重新下載(這次學乖了不要自己指定檔案位置),也不知道為什麼就可以運行
3.jar包等配置與刪掉重灌前後並無二異,所以我猜想可能是後台讀取路徑的差異?差異在於,重設後,預設路徑都是在C:\Program Files下面,但先前我把它們分開?
4.我console顯示少的包,tomcat裡面有,這網路上有提供方法:把tomcat中少的jar檔複製到jdk\lib下面就可以運行,實際運行結果仍失敗
說實在,我現在頭腦一片混亂,反正現在是可以運行了(應該吧),為什麼可以,仍然是個謎 @@,如果前輩有什麼頭緒,也請別吝嗇告訴小弟
快點擊 良葛格語言技術:Servlet/JSP Gossip
我貼給你的連結了解