![](/img/trans.png)
[英]HTTP Status 500 - Error instantiating servlet class caused by DeploymentDescriptorLoadException
[英]HTTP Status 500 - Error instantiating servlet class in user registration
我正在嘗試在我的電子商務應用程序中創建一個用於注冊的新 servlet。
收到此錯誤
HTTP Status 500 – Internal Server Error
Type Exception Report
Message Error instantiating servlet class [com.miniproject.famms.servlets.SignupServlet]
Description The server encountered an unexpected condition that prevented it from fulfilling the request.
Exception
jakarta.servlet.ServletException: Error instantiating servlet class [com.miniproject.famms.servlets.SignupServlet]
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:356)
org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399)
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:867)
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1716)
org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
java.base/java.lang.Thread.run(Thread.java:833)
我正在使用 apache tomcat 版本 10.0.20。 我創建了 servlet 來接受來自用戶的數據並將其輸入數據庫(簡而言之,為我的電子商務創建用戶)。 我所有的映射看起來都很好,servlet 代碼也很好,我不知道我的代碼有什么問題。 我嘗試了很多清理和構建的東西,但它仍然無法正常工作。 我的servlet文件...
package com.miniproject.famms.servlets;
import com.miniproject.famms.entities.User;
import com.miniproject.famms.helper.FactoryProvider;
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;
import javax.servlet.http.HttpSession;
import org.hibernate.Session;
import org.hibernate.Transaction;
public class SignupServlet 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. */
try {
String userName = request.getParameter("user_name");
String userEmail = request.getParameter("user_email");
String userPassword = request.getParameter("user_password");
String userPhone = request.getParameter("user_phone");
String userAddress = request.getParameter("user_address");
// validations
if (userName.isEmpty()) {
out.println("Name is blank ");
return;
}
//creating user object to store data
User user = new User(userName, userEmail, userPassword, userPhone, "default.jpg", userAddress, "normal");
Session hibernateSession = FactoryProvider.getFactory().openSession();
Transaction tx = hibernateSession.beginTransaction();
int userId = (int) hibernateSession.save(user);
tx.commit();
hibernateSession.close();
HttpSession httpSession = request.getSession();
httpSession.setAttribute("message", "Registration Successful !! User id is " + userId);
response.sendRedirect("register.jsp");
return;
} catch (Exception e) {
e.printStackTrace();
}
}
}
// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
/**
* Handles the HTTP <code>GET</code> method.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Handles the HTTP <code>POST</code> method.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Returns a short description of the servlet.
*
* @return a String containing servlet description
*/
@Override
public String getServletInfo() {
return "Short description";
}// </editor-fold>
}
我的 web.xml 文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
<servlet>
<servlet-name>SignupServlet</servlet-name>
<servlet-class>com.miniproject.famms.servlets.SignupServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>SignupServlet</servlet-name>
<url-pattern>/SignupServlet</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
</web-app>
我已經在jsp中使用了servlet ...
<form action="SignupServlet" method="post">
<div class="form-group">
<div class="input-group">
<span class="input-group-addon"><i class="fa fa-user ti-user"></i></span>
<input name="user_name" type="text" class="form-control" placeholder="Your name">
</div>
</div>
<hr class="hr-xs">
<div class="form-group">
<div class="input-group">
<span class="input-group-addon"><i class="fa fa-envelope ti-email"></i></span>
<input name="user_email" type="email" class="form-control" placeholder="Your email">
</div>
</div>
<hr class="hr-xs">
<div class="form-group">
<div class="input-group">
<span class="input-group-addon"><i class="fa fa-lock ti-unlock"></i></span>
<input name="user_password" type="password" class="form-control" placeholder="Choose a password">
</div>
</div>
<hr class="hr-xs">
<div class="form-group">
<div class="input-group">
<span class="input-group-addon"><i class="fa fa-phone ti-phone"></i></span>
<input name="user_phone" type="number" class="form-control" placeholder="your phone number">
</div>
</div>
<hr class="hr-xs">
<div class="form-group">
<div class="input-group">
<span class="input-group-addon"><i class="fa fa-map-marker ti-map"></i></span>
<textarea name="user_address" id="" cols="30" rows="3" class="form-control" placeholder="your Address"></textarea>
</div>
</div>
<button class="btn btn-primary btn-block" >Sign up</button>
</form>
任何人都可以在這種情況下幫助我,這將非常有幫助......謝謝。
如果您必須使用 tomcat v10,那么您必須將您正在使用的 servlet-api 從 Java.servlet-api 更改為 Jakarta.servlet-api,在 pom.xml 中替換
<dependency>
<groupId>java.servlet</groupId>
<artifactId>java.servlet-api</artifactId>
<version>4.0.1</version><!--whatever version
</dependency>
和
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<version>5.0.0</version>
</dependency>
您的所有導入都應從 import javax.servlet.* 更改為 import jakarta.servlet.*。
如果您可以將 tomcat 版本降級到 9,那么您的代碼應該可以正常工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.