Java Tomcat上的Servlet配置
我使用Netbeans和Glassfish服务器开发了一个web应用程序。我想在Tomcat服务器上部署它,但我无法在Tomcat上运行servlet。我做了以下几件事Java Tomcat上的Servlet配置,java,tomcat,Java,Tomcat,我使用Netbeans和Glassfish服务器开发了一个web应用程序。我想在Tomcat服务器上部署它,但我无法在Tomcat上运行servlet。我做了以下几件事 在Tomcat的根目录中创建了一个文件夹“fti” 将index.jsp放在fti目录中,我可以通过浏览器访问该目录 我在“fti”文件夹中创建了WEB-INF文件夹,并将WEB.xml文件放入其中 我在“WEB-INF”文件夹中创建了classes文件夹,并将编译好的java文件test.class放入其中 我试图通过浏览器访
test.java
文件:
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;
public class test extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
try (PrintWriter out = response.getWriter()) {
out.println("<!DOCTYPE html>");
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet test</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Servlet test </h1>");
out.println("</body>");
out.println("</html>");
}
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
@Override
public String getServletInfo() {
return "Short description";
}
}
import java.io.IOException;
导入java.io.PrintWriter;
导入javax.servlet.ServletException;
导入javax.servlet.http.HttpServlet;
导入javax.servlet.http.HttpServletRequest;
导入javax.servlet.http.HttpServletResponse;
公共类测试扩展了HttpServlet{
受保护的void processRequest(HttpServletRequest请求、HttpServletResponse响应)
抛出ServletException、IOException{
setContentType(“text/html;charset=UTF-8”);
尝试(PrintWriter out=response.getWriter()){
out.println(“”);
out.println(“”);
out.println(“”);
out.println(“Servlet测试”);
out.println(“”);
out.println(“”);
out.println(“Servlet测试”);
out.println(“”);
out.println(“”);
}
}
@凌驾
受保护的void doGet(HttpServletRequest请求、HttpServletResponse响应)
抛出ServletException、IOException{
processRequest(请求、响应);
}
@凌驾
受保护的void doPost(HttpServletRequest请求、HttpServletResponse响应)
抛出ServletException、IOException{
processRequest(请求、响应);
}
@凌驾
公共字符串getServletInfo(){
返回“简短描述”;
}
}
我的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>test</servlet-name>
<servlet-class>test</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>test</servlet-name>
<url-pattern>/test</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
测试
测试
测试
/试验
30
servlet或任何REST请求路径不仅仅是一个远程文件系统。在
web.xml
中,您已经告诉容器servlet的名称是test
,其路径是test/
,因此尝试调用test
,而不是fti/test
您将“根”webapp与顶级文档目录混淆fti
必须是ROOT的兄弟,才能像您期望的那样工作,而不是孩子。文件夹fti
应该位于安装Tomcat的同一文件夹中的文件夹webapps
下。此外,类test.class
应位于webapps/fti/WEB\u INF/classes
中。您应该能够通过/fti/test
访问它。“用于映射到servlet的路径是来自请求对象的请求URL减去上下文路径和路径参数。”因此上下文路径fti
必须存在……在步骤4中,您是否手动将.class文件放入classes文件夹?您确定您的代码编译成功而没有此错误:尝试而不使用捕获,最终或资源声明您究竟为什么不使用IDE?它将为您自动化许多这些步骤,并确保一切都在正确的位置。