我在我的javaEE应用程序中使用的是Java 11和嵌入式jetty 9,我正在尝试使用@Websevlet注释来发布我的servlet,但是它不起作用,我不知道为什么。 我的入门班java
import org.eclipse.jetty.annotations.AnnotationConfiguration;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.webapp.*;
public class Start {
public static void main(String[] args) throws Exception {
Server server = new Server(80);
WebAppContext wacHandler = new WebAppContext();
wacHandler.setConfigurations(new Configuration[]
{
new AnnotationConfiguration(),
new WebInfConfiguration(),
new WebXmlConfiguration(),
new MetaInfConfiguration(),
new FragmentConfiguration(),
new JettyWebXmlConfiguration()
});
server.setHandler(wacHandler);
server.start();
server.join();
}
}
我的世界一流你好
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet( "/getservlet")
public class ServletX extends HttpServlet {
private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<h1>Hi there..</h1>");
}
}
我没有web.xml配置,应该吗?
答案 0 :(得分:0)
如果ServletX
在war文件中,这意味着它在WEB-INF/classes/
存档目录中,那么您声明的配置(特别是AnnotationConfiguration
)将对WAR文件执行字节码扫描并加载@WebServlet
批注。
还请注意,WebAppContext
将需要指向此WAR文件,而您的代码示例不会这样做。
WebAppContext wacHandler = new WebAppContext();
waxHandler.setWar("/path/to/myapp.war");
// ... more setup
但是!如果ServletX
不在WAR文件中,而是包含在嵌入式码头Start
类中,则需要公开要通过字节码扫描步骤扫描的servlet容器。 / p>
您始终可以打开命名记录器org.eclipse.jetty
的DEBUG / FINE级别日志记录,并查看有关部署和字节码扫描的活动。