できるだけ具体的に、できるだけ多くの情報を提供するように努めます。
私のコンピューターの C:\myproject\tomcat に tomcat 7 がインストールされています。
C:\Program Files\java\jdk1.7.0_04 に JDK 1.7.0_04 をインストールしました。
JRE_HOME = C:\Program Files\Java\jdk1.7.0_04
クラスパス = C:\myproject\tomcat\bin\bootstrap.jar;C:\myproject\tomcat\bin\tomcat-juli.jar
jdk1.7.0_04\jre\lib\ext フォルダーには、servlet-api.jar ファイルがあります。これは、サーブレットを実行するために必要だと思います。
私の C:\myproject\tomcat\conf\web.xml ファイルには、タグがあります
サーブレットタグ
<servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>loginpackage.LoginServlet</servlet-class>
</servlet>
サーブレットマッピングタグ
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/LoginServlet</url-pattern>
</servlet-mapping>
localhost:9999/javawork/LoginServlet が見つかるようにするために必要だと思います。
C:\myproject\tomcat\webapps\javawork に javawork という Web アプリがあります。
そこには、LoginPage.jsp を含む JSP ファイルを含むフォルダー test_login があります。
<%@ page language="java" contentType="text/html; charset=windows-1256" pageEncoding="windows-1256"%>
<!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=windows-1256">
<title>Login Page</title>
</head>
<body>
<form action="../LoginServlet">
Please enter your username
<input type="text" name="un"/><br>
Please enter your password
<input type="password" name="pw"/>
<input type="submit" value="submit">
</form>
</body>
</html>
javawork には、lib フォルダーと classes フォルダーを含む WEB-INF フォルダーがあり、lib フォルダーには oracle ドライバーを含む jar ファイルがいくつかあります。classes フォルダーには loginpackage フォルダーがあり、その中に LoginServlet.java ファイルと LoginServlet.class ファイルがあります。Eclipse IDE を使用してコンパイルし、.class ファイルをフォルダ javawork/bin/WEB-INF/classes/loginpackage フォルダに配置し、.class ファイルをメインの WEB-INF フォルダ構造に移動して同じディレクトリに配置しました。 .java ファイルとして。
LoginServlet.java:
package loginpackage;
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;
import javax.servlet.http.HttpSession;
/**
* Servlet implementation class LoginServlet
*/
public class LoginServlet extends HttpServlet
{
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
try
{
UserBean user = new UserBean();
user.setUserName(request.getParameter("un"));
user.setPassword(request.getParameter("pw"));
user = UserDAO.login(user);
if (user.isValid())
{
HttpSession session = request.getSession(true);
session.setMaxInactiveInterval(60);
session.setAttribute("currentSessionUser",user);
session.setAttribute("sessUserName", user.getUsername());
session.setAttribute("userID",user.getUserID());
response.sendRedirect("userlogged.jsp"); //logged-in page
}
else
response.sendRedirect("invalidlogin.jsp"); //error page
}
catch (Throwable theException)
{
System.out.println(theException);
}
}//end doGet
}//End LoginServlet Class
コマンド プロンプトを開き、C:\myproject\tomcat\bin に移動してスタートアップ ファイルを実行し、Tomcat サーバーが実行されるようにします。
に移動するとhttp://localhost:9999/javawork/test_login/LoginPage.jsp
、問題なくロードされます。ユーザー名とパスワードをボックスに入力し、送信ボタンをクリックします。(u と p は入力したものです)に移動しようとするとhttp://localhost:9999/javawork/LoginServlet?un=u&pw=p
、次のエラーが発生します: 例外
java.lang.NoClassDefFoundError: loginpackage/LoginServlet (wrong name: WEB-INF/classes/loginpackage/LoginServlet)
java.lang.ClassLoader.defineClass1(Native Method)
java.lang.ClassLoader.defineClass(ClassLoader.java:791)
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2889)
org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1170)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1678)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1556)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:461)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
org.apache.catalina.authenticator.SingleSignOn.invoke(SingleSignOn.java:309)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999)
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1812)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
java.lang.Thread.run(Thread.java:722)
すべてが適切に並んでいると思うので、なぜこのエラーが発生するのかわかりません。どうか、どんな助けでも大歓迎です.bc私はこれに1日以上行き詰まっており、仕事での仕事の次の部分に進むためにそれを機能させる必要があります. ありがとう。