关于springmvc中@RequestMapping访问时404的问题

运行时没有报错;
部分配置文件

     <bean id="multipartResolver"  
        class="org.springframework.web.multipart.commons.CommonsMultipartResolver">  
        <!-- 默认编码 -->
        <property name="defaultEncoding" value="utf-8" />  
        <!-- 文件大小最大值 -->
        <property name="maxUploadSize" value="10485760000" />  
        <!-- 内存中的最大值 -->
        <property name="maxInMemorySize" value="40960" />  
    </bean> 

    <mvc:annotation-driven/>

    <context:annotation-config/>

     <mvc:resources location="/static/" mapping="/static/**"></mvc:resources>  

Controller部分代码

@RequestMapping("/sysuser")
public class SystemController extends BaseController {

    private final Logger log= LoggerFactory.getLogger(SystemController.class);

    @Resource
    private UserService userService;

    @RequestMapping(value = "/login",method = {RequestMethod.POST,RequestMethod.GET})
        public void login(User user,boolean rememberMe) throws IOException{
        result.setSuccess(false);
        //用户登录
        User userInfo = userService.getByProerties(new String[]{"loginAccount"}, new String[]{user.getName()},null);
        if(userInfo==null){
            result.setMessage("用户名错误");
            super.writeJSON(result);
            return;
        }
        if(!userInfo.getName().equals(new Sha256Hash(user.getPassword()).toHex())){
            result.setMessage("密码错误");
            super.writeJSON(result);
            return;
        }
        //存入session
        Subject subject = SecurityUtils.getSubject();
        //记得传入明文密码
        subject.login(new UsernamePasswordToken(userInfo.getName(), user.getPassword(), rememberMe));
        session.setAttribute(USER_SESSION, userInfo);
        result.setMessage("登录成功");
        result.setSuccess(true);
        super.writeJSON(result);
    }


前端js部分代码

        submitHandler:function(form){
            $.ajax({
                dataType : "json",
                url : "${contextPath }/sysuser/login",  
                type : "post", 
                data : $("#login_form").serialize(), 
                success : function(data) {
                    $.alert(data.message);
                    if(data.success){
                        window.location.href = 'page/main';
                    }
                },
                error : function (e){
                    var d = e.responseJSON;
                    if(d){
                        $.alert(d.message);
                    }
                }
            });
            return false; //阻止form提交
        }



<servlet>
    <servlet-name>SpringMVC</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath*:/WEB-INF/applicationContext-mvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
    <async-supported>true</async-supported>
</servlet>
   <servlet-mapping>
    <servlet-name>SpringMVC</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>


发布项目点击登陆后会报
404

http://127.0.0.1:8080/.../sysuser/login

4个回答

你在你的控制器,就是 SystemController 上加上 @Controller 这个注解再试试

qq_35649402
你们让我起个名啊 源码中加了,这里忘记复制了
大约 3 年之前 回复

$.ajax的url 不能加入项目目录,也不能加"/",你的contextPath 为多少呢?如果你的dispatcherServlet 映射路径为:/dispatcherSerlvet,
则访问时路径应该为:dispatcherServlet/sysuser/login

qq_19865749
Liekkas_BX 回复你们让我起个名啊: 你回复的这个返回的貌似是工程路径,还有我看到你的dispatcherServlet的配置了。这个问题我刚遇到过,$.ajax,$get,$post访问时url要写相对路径,即直接写sysuser/login就行了
大约 3 年之前 回复
qq_35649402
你们让我起个名啊 <c:set var="contextPath" value="${pageContext.request.contextPath}"></c:set>
大约 3 年之前 回复

/这个“/”只能匹配根目录吧,应该写成"/*"

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问