这个问题在这里已有答案:
我正在使用tomcat 5,当我启动服务器并从webapp文件夹加载我的应用程序时,我的jsp加载但是WEB-INF / classes中的类文件正在被自动擦除,当我加载类文件时它会抛出:this is the error
我的servlet类文件正在删除/不知道它在哪里。
This is my web.xml file inside WEB-INF/ .classes mapped inside web.xml is in WEB-INF/classes.All class files inside this is getting erased.
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0"
metadata-complete="true">
<display-name>Welcome to Tomcat</display-name>
<description>
Welcome to Tomcat
</description>
<servlet>
<servlet-name>HelloForm</servlet-name>
<servlet-class>HelloForm</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloForm</servlet-name>
<url-pattern>/HelloForm</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>Upload</servlet-name>
<servlet-class>Upload</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Upload</servlet-name>
<url-pattern>/Upload</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>Getapplicants</servlet-name>
<servlet-class>Getapplicants</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Getapplicants</servlet-name>
<url-pattern>/Getapplicants</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>First_round_selected</servlet-name>
<servlet-class>First_round_selected</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>First_round_selected</servlet-name>
<url-pattern>/First_round_selected</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>Second_round_selected</servlet-name>
<servlet-class>Second_round_selected</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Second_round_selected</servlet-name>
<url-pattern>/Second_round_selected</url-pattern>
</servlet-mapping>
</web-app>
坚持这个
upload.Java
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
// Extend HttpServlet class
public class Upload extends HttpServlet {
// Method to handle GET method request.
public void doGet(HttpServletRequest request, HttpServletResponse
response)throws ServletException, IOException {
PrintWriter out = response.getWriter();
String first_name=request.getParameter("first_name");
String last_name=request.getParameter("last_name");
String email=request.getParameter("email");
String phone_number=request.getParameter("phone_number");
String experience =request.getParameter("experience");
try{
Connection
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/interview"
,"root","
");
Statement stmt=con.createStatement();
int rows=stmt.executeUpdate("insert into applicants
values('"+first_name+"','"+last_name+"','"+email+"',"+
Long.valueOf(phone_number
)+","+Integer.valueOf(experience)+")");
con.close();
out.print("Added Sucessfully");
}catch(Exception e){out.print(e);}
}
public void doPost(HttpServletRequest request, HttpServletResponse
response)
throws ServletException, IOException {
doGet(request, response);
}
}
正如你所说,你正在使用tomcat 5
,它支持直到servlet 2.5
。但你正在使用servlet 3.0
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0"
请参阅以下详细信息
有两种解决方案:升级tomcat或使用servlet 2.5
Servlet 2.5部署描述符
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
</web-app>
尝试将您的servlet类放到src / main / java文件夹中。另外我建议你把它放在com.servlet之类的包中。然后在web.xml中填充类的路径,如下所示:package.MyServlet
如果您正在使用编译输出到WEB-INF/classes
,那么每次编译应用程序时它都会删除此文件夹。要解决此问题,您应该更改用于编译器输出的文件夹。
如果您曾经看过本指南How to Create a Dynamic Web Project in Eclipse,那么您将意识到输出文件夹是在Web内容之外创建的。
这允许在开发期间存储/清理编译的文件。最后,当您将应用程序部署到服务器时,应将内容自动复制到WEB-INF/classes
。
由于类文件位于WEB-INF
文件夹下,因此无法从Web外部访问它们,您可以安全地浏览内容。