向servlet提交表单时显示资源不可用,怎么解决?

下面是我提交的表单

<form action="UserServlet?op=login" method="post">
<div id="contentCon">
    <div>
        <ul>
            <li>
                <p>登录</p>
            </li>
            <input type="text" name="useraccount" placeholder="请输入账号" class="name">
            <input type="password" name="password" placeholder="请输入密码" class="password"><br>
            <div>
                <input type="submit" value="登录">
                <a href="Register.jsp" class="text02">注册</a>
            </div>
        </ul>
    </div>
</div>
</form>

下面是我web.xml的配置文件

        <servlet-name>UserServlet</servlet-name>
        <servlet-class>FierceBullDairyShoppingPlatform.servlet.UserServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>UserServlet</servlet-name>
        <url-pattern>/UserServlet</url-pattern>
    </servlet-mapping>

下面是我servlet的代码

package FierceBullDairyShoppingPlatform.servlet;

import FierceBullDairyShoppingPlatform.dao.daofactory.DaoFactory;
import FierceBullDairyShoppingPlatform.vo.User;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class UserServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("已进入servlet-------------------------------------");
        req.setCharacterEncoding("utf-8");
        resp.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");
        String op=req.getParameter("op");

        if ("test".equals(op)){
            System.out.println("这里是测试·································");
        }
        if ("login".equals(op)){
            String useraccount=req.getParameter("useraccount");
            String password=req.getParameter("password");
            User userList= DaoFactory.getUserDaoImpl().CheckByUseraccount(useraccount);
            System.out.println(userList);
            if (userList!=null&&password.equals(userList.getPassword())){
                User user=new User();
                user.setUseraccount(userList.getUseraccount());
                user.setPassword(userList.getPassword());
                user.setUsername(userList.getUsername());
                user.setSex(userList.getSex());
                user.setAge(userList.getAge());
                user.setIdnum(userList.getIdnum());
                user.setRealname(userList.getRealname());
                user.setPhonenum(userList.getPhonenum());
                user.setPicture(userList.getPicture());
                user.setRole(userList.getRole());
                req.setAttribute("user",user);
                req.setAttribute("exist","yes");
            }else{
                req.setAttribute("exist","no");
            }
            req.getRequestDispatcher("Login.jsp").forward(req,resp);
        }


每次点击登录按钮向servlet提交表单都报404 说是申请的资源不可用

请求时返回404是因为你请求的地址不对。所以返回404状态。

404就是你的路径有问题,根据该路径请求不到所需要的资源,你上面的表单如果使用post路径,那么UserServlet?op=login算什么? get请求?浏览器晕了,到底是get还是post请求
解决办法,更改表单即可

<form action="UserServlet" method="post">
<div id="contentCon">
    <div>
        <ul>
            <li>
                <p>登录</p>
            </li>
            <input type="text" name="op" value="login" hidden="true">
            <input type="text" name="useraccount" placeholder="请输入账号" class="name">
            <input type="password" name="password" placeholder="请输入密码" class="password"><br>
            <div>
                <input type="submit" value="登录">
                <a href="Register.jsp" class="text02">注册</a>
            </div>
        </ul>
    </div>
</div>
</form>

特别提示,如果,提交还是404,建议采用项目地址绝对路径,因为相对路径可能错了
action="UserServlet" ---》action="http://localhost:8080/项目名/UserServlet"

试试用@WebServlet("/userLogin)注解试试,xml的都快忘记怎么配置了

在类上面 加上 @WebServlet("/UserServlet")