web项目提交表单出现404错误

问题遇到的现象和发生背景

web项目提交表单出现404错误

问题相关代码,请勿粘贴截图
表单部分如下:
文件名:login.jsp
<form action="login" method="post">
                <div class="u">
                    <input type="text" class="uname" name="userName" value=""  />
                </div>
                <div class="p">
                    <input type="password" class="pwd" name="password" value=""  />
                </div>
                <div class="s">
                    <select name="type">
                        <option value="">请选择登陆类型</option>
                        <option value="0">学生</option>
                        <option value="1">老师</option>
                        <option value="2">管理员</option>
                    </select>
                </div>
                <div class="l">
                    <button type="submit">登录</button>
                </div>
            </form>

servlet文件:
文件名:LoginServlet

@WebServlet("/login")
public class LoginServlet extends HttpServlet {

    
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String userName = req.getParameter("userName");
        String password = req.getParameter("password");
        String type = req.getParameter("type");
        
        if(StringUtils.isBlank(userName) || StringUtils.isBlank(password) || StringUtils.isBlank(type)) {
            req.setAttribute("error", "录入信息不能为空!");
            req.getRequestDispatcher("login.jsp").forward(req, resp);
            return;
        }
        HttpSession session = req.getSession();
        if(StringUtils.isNotBlank(type)) {
            try {
                if("0".equals(type)) {
                    //学生登录验证
                    Student student = DaoFactory.getInstance().getStudentDao().login(userName, MD5.encrypByMd5(MD5.encrypByMd5(password)));
                    if(student != null) {
                        session.setAttribute("user", student);
                        session.setAttribute("type", type);
                        resp.sendRedirect("index.jsp");
                    }else {
                        req.setAttribute("error", "用户名或密码错误!");
                        req.getRequestDispatcher("login.jsp").forward(req, resp);
                    }
                }else if("1".equals(type)) {
                    //老师登录验证
                    Teacher teacher = DaoFactory.getInstance().getTeacherDao().login(userName, MD5.encrypByMd5(MD5.encrypByMd5(password)));
                    if(teacher != null) {
                        session.setAttribute("user", teacher);
                        session.setAttribute("type", type);
                        resp.sendRedirect("index.jsp");
                    }else {
                        req.setAttribute("error", "用户名或密码错误!");
                        req.getRequestDispatcher("login.jsp").forward(req, resp);
                    }
                }else {
                    //管理员登录验证
                    Admin admin = new Admin();
                    admin.setUserName(userName);
                    admin.setPwd(MD5.encrypByMd5(MD5.encrypByMd5(password)));
                    Admin entity = DaoFactory.getInstance().getAdminDao().login(admin);
                    if(entity != null) {
                        //执行跳转
                        session.setAttribute("user", entity);
                        session.setAttribute("type", type);
                        resp.sendRedirect("index.jsp");
                    }else {
                        //用户或密码错误!!
                        req.setAttribute("error", "用户名或密码错误!");
                        req.getRequestDispatcher("login.jsp").forward(req, resp);
                    }
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }else {
            
        }
    }
    
}


运行结果及报错内容

img

img

我的解答思路和尝试过的方法

检查了tomcat部署路径 改为了/ 。路径核对无误。

我想要达到的结果

成功登录

1.路径没错,就有可能是没有权限,看看前端请求的时候,header有没有token字符串
2.后端接口写的有问题
3.看看有没有阻止表单默认提交行为