gpt4 book ai didi

java - Apache tomcat 和 servlet(初学者)- 404 错误,可能找不到类?

转载 作者:行者123 更新时间:2023-11-28 22:39:23 24 4
gpt4 key购买 nike

我是 servlet 的初学者,对于“hello world style”servlet,我安装了 apache tomcat 并在其 webapps 目录下创建了以下内容:

servletdir
|- index.xhtml
|- WEB-INF
|- web.xml
|- classes
|- mypackage
|- ServletClass.class

初始化所有内容以便我可以在本地主机上访问我的 servlet:

网络.xml

<?xml version="1.0" encoding="utf-8"?>
<web-app>

<servlet>
<servlet-name>myservlet</servlet-name>
<servlet-class>mypackage.ServletClass</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>myservlet</servlet-name>
<url-pattern>/servleturl/*</url-pattern>
</servlet-mapping>

</web-app>

并且 index.xhtml 包含一个具有 action="/servleturl"method="get"

的表单

理论上,当我启动 tomcat 时,我现在应该能够通过 localhost:8080/servletdir/index.xhtml 访问 servlet 和 index.xhtml 文件并在那里提交表单。达到索引没问题,但是当我提交表单时,我收到 servlet 的 404 错误,说它“源服务器没有找到目标资源的当前表示或不愿意透露它的存在。” .

我的 servlet 类应该不是问题,它扩展了 HttpServlet 并覆盖了 doGet 以通过 ServletResponse 参数的 输出一个简单的 html >getWriter().println()。 servlet 类中的错误会导致 404 吗?我的目录结构或 web.xml 是否有误?

我尝试过多种目录结构和解决方案,包括:

  • WEB-INF 中的平面目录结构和类不在包中(没有“类”目录)
  • 没有 WEB-INF,一切都直接放在 servlet 目录中
  • 将 WEB-INF 和 index.xhtml 包装在名为“WebContent”的目录中
  • 保留“classes”目录但不使用包,将class文件直接放入classes*

我已经关注了多种资源,包括一些教程和此处的许多问题,它们与我的问题没有直接关系,但包含一些信息,但由于我是这项技术的新手,我无法推断出哪个资源是好的,这不是,这就是为什么我几乎尝试了我发现的所有东西。

上面描述的目录结构直接在磁盘上作为这种结构,而不是在 war 文件中,但由于我可以访问某些部分,我想这不是问题所在。

*:请注意,每次代表包的目录结构发生变化时,我都会在文件的第一行使用相应的“包”重新编译 java 文件,这不是问题

最佳答案

action="/servleturl"method="get" 更改为 action="/servletdir/servleturl"method="get"action="servleturl"method="get".

使用 action="/servleturl",您正在尝试访问根相对路径,但您缺少上下文路径 servletdir

如果您使用action="servleturl",您不需要将上下文路径放在action 中,因为它会从当前url 获取它

关于java - Apache tomcat 和 servlet(初学者)- 404 错误,可能找不到类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53521212/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com