Tomcat测试出现404问题出现的问题如下:
HTTP状态 404 - 未找到
类型 状态报告
消息 请求的资源[/chapter06/IndexServlet]不可用
描述 源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示。
Apache Tomcat/9.0.37
问题原因,浏览器不能直接访问Java文件
问题的解决方法
1、提交表单时遇到此问题
<form name = "reg" action="/login" method="post"> <meta charset="UTF-8"> 账号:<input type="text" name="username"/><br> 密码:<input type="password" name="passward"/><br> <input type="submit" value="提交" id="bt"> </form>
其中的<form name = "reg" action="/login" method="post">
action=" "里面引用的必须为路由地址(这个路由地址需要自己配置的(如:我自己配置的负责接收表单的Java类中的路由为 /login,而不是自身的Java类的访问路径 /chapter06/src/LoginServlet)
对Java文件配置路由方式在下面:
2、访问src路径里的Java文件报错
需要对目标Java文件配置路由,具体配置有两种方式:(这里只是简述如果想了解更详细内容点击这里)
(1):基于注解的方式配置
只适用于Tomcat3以上版本(好像是3,记不清了)
在Java类里添加
package cn.itcast.chapter06.session.example; 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 java.io.IOException; @WebServlet("/logout") //这里就是路由的配置 public class LogoutServlet extends HttpServlet { @Override public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.getSession().removeAttribute("user"); resp.sendRedirect("/wel"); } @Override public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req, resp); } }
**@WebServlet("/logout") //这里就是路由的配置,此方法也是最常用的方法。**引号里面就是路由
(2)基于xml文件配置方式
点击打开web.xml文件,然后对web.xml代码进行更改,在< /app >前面添加映射
<servlet> <servlet-name>hello</servlet-name> <servlet-class>com.southwind.servlet.HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>hello</servlet-name> <url-pattern>/demo2</url-pattern> </servlet-mapping>
将demo2和hello进行映射 在浏览器直接访问demo2就可以映射HelloServlet