前端页面报错404,请求无法进入后端的controller层,怎么

最近再学校自学ssm框架,在网上找了一个源码练手,但是遇到404页面找不到的问题,试过很多方法,并没有用,先给大家看下问题

img


然后给大家看看前端的部分比较重要的代码块

<form method="post" name="login" id="login" action=""
                          onsubmit="return submitHandler()">
上面是表单的信息,其他的不重要,所以没贴
<input class="btn btn-primary btn-wide login-btn" value="LOGIN"
                               type="submit" />
上面是按钮的信息
下面给大家看看登录逻辑
<script>
    var useridEle = document.getElementById("userid");
    var passwordEle = document.getElementById("password");
    var roleRadio = document.getElementsByName("optionsRadios1");

    /*
     * 点击登录执行的逻辑
     */
    function submitHandler() {

        if (!vali()) {
            return false;
        }

        var role = 'student';

        for (var i = 0; i < roleRadio.length; i++) {
            if (roleRadio[i].checked) {
                role = roleRadio[i].value;
            }
        }

        var action = null;
        if (role == 'student') {
            action = "/StudentSC/LoginHandler/studentlogin";
            useridEle.name = "sid";
            passwordEle.name = "spassword";
        } else if (role == 'teacher') {
            action = "/StudentSC/LoginHandler/teacherlogin";
            useridEle.name = "tid";
            passwordEle.name = "tpassword";
        } else {
            action = "/StudentSC/LoginHandler/adminlogin";
            useridEle.name = "aname";
            passwordEle.name = "apassword";
        }
        document.getElementById("login").action = action;

        return true;
    }

    function vali() {
        var valiObjs = createInputMsgObj([ 'userid', 'password' ])

        for (var i = 0; i < valiObjs.length; i++) {
            console.log(valiObjs[i].el.val())
            if (valiObjs[i].el.val() == null || valiObjs[i].el.val() == '') {
                valiObjs[i].el.css({
                    "border-color" : "red"
                })
                console.log(valiObjs[i].el)
                var alertEl = $("<div style=\"position:fixed;top:1rem;right:1rem;\" class=\"alert alert-warning\">"
                    + valiObjs[i].msg + "没有填写!" + "</h5></div>")
                $("body").append(alertEl);
                setTimeout(function() {
                    alertEl.remove();
                }, 1000)
                return false;
            }
        }
        return true;
    }

    function createInputMsgObj(ids) {
        var objs = [];

        for (var i = 0; i < ids.length; i++) {

            var obj = {
                el : $("#" + ids[i]),
                msg : $("#" + ids[i]).attr('m')
            }
            objs.push(obj);
        }

        return objs;
    }
</script>

再放一点后端代码和配置文件的

@Controller
@RequestMapping("/LoginHandler")
public class LoginHandler{
    @Autowired
    AdminService adminService;
    @Autowired
    StudentService studentService;
    @Autowired
    TeacherService teacherService;

    //管理员登录
    @RequestMapping(value = "/adminlogin")
    public String adminlogin(@RequestParam("aname") String aname, @RequestParam("apassword") String apassword,
                             Model model,HttpSession httpSession) {
        String n = adminService.queryByNamePwd(aname, apassword);
        if (n != null && !"".equals(n)) {
            httpSession.setAttribute("aname", aname);
            return "admin/adminFace";
        } else {
            return "login";
        }

    }

再贴一点可能会出错的xml配置文件等信息


<servlet-mapping>
    <servlet-name>dispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
这是web.xml拦截器的配置
<!--启动注解驱动-->
    <mvc:annotation-driven/>

    <!--扫描业务代码(web层)-->
    <context:component-scan base-package="com.oc.controller"/>
    <!--视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

    <!--开放静态资源访问权限-->
    <mvc:default-servlet-handler/>
这是springmvc的配置

我也试过ajax方法作为提交数据的方法,但是都无法解决,请各位指点迷津

这个地址对了吗,tomcat是什么版本的。

img

更改tomcat部署的根路径映射为/StudentSC
因为不知道你用的哪个开发软件,也不知道你用的哪种运行方式,只能提供上面的建议了。

@Controller改成@RestController