问题描述
这是我的项目结构:- [1]:https://i.stack.imgur.com/ootY1.png
我的问题是,每当我在服务器上运行项目时,都会出现HTTP状态404错误。 这是服务器出现的错误:-
The requested resource [/Doctor_Appointment_Application/Regis] is not available
我正在使用注释注册我的servlet,并且web.xml中只有一个欢迎文件。
Web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="4.0"
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_4_0.xsd">
<display-name>User Login</display-name>
<session-config>
<session-timeout>30</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>/JSP/login.jsp</welcome-file>
</welcome-file-list>
</web-app>
我的注册Servlet:-
package com.servlet;
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 com.bean.RegisBean;
import com.dao.RegisDao;
@WebServlet("/Regis")
public class Regis extends HttpServlet {
private static final long serialVersionUID = 1L;
public Regis() {
}
protected void doPost(HttpServletRequest request,HttpServletResponse response) throws servletexception,IOException {
String fullname=request.getParameter("fullname");
String email=request.getParameter("email");
String username=request.getParameter("username");
String password=request.getParameter("password");
long mobile= Long.parseLong(request.getParameter("mobile"));
String address=request.getParameter("address");
String identity=request.getParameter("radio");
String specialisation=request.getParameter("special");
String degree=request.getParameter("degree");
String exp=request.getParameter("exp");
String fees=request.getParameter("fees");
RegisBean regisBean=new RegisBean();
regisBean.setFullname(fullname);
regisBean.setEmail(email);
regisBean.setUsername(username);
regisBean.setPassword(password);
regisBean.setMobile(mobile);
regisBean.setAddress(address);
regisBean.setIdentity(identity);
if(identity.equals("Doctor")) {
regisBean.setSpecialiasation(specialisation);
regisBean.setDegree(degree);
regisBean.setExperience(exp);
regisBean.setFees(fees);
}
RegisDao dao=new RegisDao();
String userRegistered=dao.registerUser(regisBean);
if(userRegistered.equals("SUCCESS"))
request.getRequestdispatcher("/JSP/conf.jsp").forward(request,response);
else {
request.setAttribute("errMessage",userRegistered);
request.getRequestdispatcher("/JSP/register.jsp").forward(request,response);
}
}
}
编辑1:
Register.jsp:-
<!DOCTYPE html>
<html>
<head>
<Meta charset="ISO-8859-1">
<title>Registration Page</title>
<style type="text/css">
<%-- <%@include file="/CSS/register.css"%> --%>
<%@include file="/CSS/regis.css"%>
</style>
<script src='https://kit.fontawesome.com/a076d05399.js'></script>
<script>
function validate() {
var password = document.form.password.value;
var confpassword = document.form.confpassword.value;
/* if (password.length < 6) {
alert("Password must be at least 6 characters long.");
return false;
} else */ if (password != confpassword) {
alert("Confirm Password should match with the Password");
return false;
}
}
</script>
</head>
<body>
<form name="form" action="<%=request.getcontextpath() %>/Regis" method="post" onsubmit="return validate()">
Full Name: <input type="text" name="fullname" required>
<br>
<br>
Email: <input type="text" name="email" required>
<br>
<br>
Username: <input type="text" name="username" required>
<br>
<br>
Password: <input type="password" name="password" required>
<br>
<br>
Confirm Password: <input type="password" name="confpassword" required>
<br>
<br>
Mobile Number: <input type="number" name="mobile" required>
<br>
<br>
Address: <input type="text" name="address" required>
<br>
<br>
Identity: Doctor <input type="radio" name="radio" value="Doctor" required>
<div class="reveal">
Specialisation: <select name="special" class="require-if-active">
<option selected disabled>Choose...</option>
<option value="Allergist">Allergist</option>
<option value="Anesthesiologist">Anesthesiologist</option>
<option value="Cardiologist">Cardiologist</option>
<option value="Dermatologist">Dermatologist</option>
<option value="Endocrinologist">Endocrinologist</option>
<option value="Gastroenterologist">Gastroenterologist</option>
<option value="Hematologist">Hematologist</option>
<option value="Immunologist">Immunologist</option>
<option value="Internist">Internist</option>
<option value="Neurologist">Neurologist</option>
<option value="Pulmonologist">Pulmonologist</option>
<option value="Oncologist">Oncologist</option>
</select>
<br>
<br>
Degree: <select name="degree" class="require-if-active">
<option selected disabled>Choose...</option>
<option value="MBBS">MBBS</option>
<option value="BDS">BDS</option>
<option value="BAMS">BAMS</option>
<option value="BUMS">BUMS</option>
<option value="BHMS">BHMS</option>
<option value="BYNS">BYNS</option>
<option value="B.V.Sc & AH">B.V.Sc & AH</option>
</select>
<br>
<br>
Experience: <input type="number" name="exp" class="require-if-active">
<br>
<br>
Fees: <input type="number" name="fees" class="require-if-active">
</div>
Patient <input type="radio" name="radio" value="Patient" required>
<span style="color: red"><%=(request.getAttribute("errMessage") == null) ? "" : request.getAttribute("errMessage")%></span>
<br>
<br> <input type="submit" value="Register">
</form>
</body>
</html>
编辑2:
我只是想做一个实验,我要做的是创建了另一个jsp文件和一个servlet,以检查问题是否出在我的jsp和servlet文件中。因此发生了同样的事情,jsp文件成功运行,但是服务器在提交form方法后无法找到servlet。
感谢您提供任何帮助。
解决方法
您好,无论看到什么, 我通过从构建路径中删除mysqljdbc.auth.dll解决了该查询。这解决了我的问题,现在工作正常。如果您在使用mysqljdbc.auth.dll文件时遇到问题,则只需将其复制到JDK 8 bin文件夹中即可。
,更新(基于问题中发布的更新):
替换
<form name="form" action="<%=request.getContextPath() %>/Regis" method="post" onsubmit="return validate()">
使用
<form name="form" action="Regis" method="post" onsubmit="return validate()">
因为JSP中的路径已经相对于上下文路径。
原始答案:
出现此错误的原因是,默认情况下,服务器将请求作为GET
来获取,而您未在Servlet中提供doGet
的任何实现。如果要从JSP / HTML调用此servlet,请确保提及method="POST"
。如果您尝试直接调用servlet,则可以将doPost
重命名为doGet
或提供doGet
的实现,例如
protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException {
doPost(request,response);
}