SSM框架controller只要引入其他类就会报404错误
@Controller
@RequestMapping(value = "user")
public class UserController {
    @Autowired
    private UserService userService;

    /**
     * 用户登录
     * @param user
     * @return
     */
    @RequestMapping(value = "login",method = RequestMethod.POST)
    @ResponseBody
    public String userLogin(User user){
        User u = userService.selectByUsername(user.getUsername());
        if(u!=null ){
            return "1";
        }
        System.out.println("sss");
        return "2";
    }

    /**
     * 测试
     * @return
     */
    @RequestMapping(value = "test",method = RequestMethod.POST)
    @ResponseBody
    public String test(){
        System.out.println("111");
        return "2";
    }
}
$("#login").on("click",function () {
        var u = $("#username").val();
        var p = $("#password").val();
        $.post("user/login",{"username":u,"password":p},function(res){
            if(res==1){
                alert("登录成功!");
            }else{
                alert("登录失败");
            }
        })
    })

ajax路径为login时前台会报错jquery.js:8623 POST http://localhost:8080/bookManage_war/user/login 404 (Not Found)
改为test时就能正常使用
只要加上user实体类或是service或是dao,就会找不到路径,只能简单实现返回一个值
web.xml

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext.xml</param-value>
  </context-param>
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <listener>
    <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
  </listener>
    <servlet>
    <servlet-name>mvc-dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!-- spring mvc的配置文件 -->
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:spring-mvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>mvc-dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

applicationContext.xml

<context:component-scan base-package="com.wyj.service">
        <context:include-filter type="annotation"
                                expression="org.springframework.stereotype.Service"/>
    </context:component-scan>

    <context:annotation-config/>

    <mvc:annotation-driven />

    <!--开通静态资源的访问-->
    <mvc:default-servlet-handler />
    <!-- 读取配置文件 -->
    <context:property-placeholder location="classpath:jdbc.properties"/>
    <!-- 数据源 使用c3p0连接,需要jar包支持 -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="${jdbc.driver}"/>
        <property name="jdbcUrl" value="${jdbc.url}"/>
        <property name="user" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
        <property name="maxPoolSize" value="${c3p0.maxPoolSize}"/>
        <property name="minPoolSize" value="${c3p0.minPoolSize}"/>
        <property name="autoCommitOnClose" value="${c3p0.autoCommitOnClose}"/>
        <property name="checkoutTimeout" value="${c3p0.checkoutTimeout}"/>
        <property name="acquireRetryAttempts" value="${c3p0.acquireRetryAttempts}"/>
    </bean>

    <!-- 集成Mybatis(sqlSessionFactory )-->
    <bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"></property>
        <property name="typeAliasesPackage" value="com.wyj"></property>
    </bean>

    <!-- 映射帮助类 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="sqlSessionFactoryBeanName" value="sessionFactory"></property>
        <property name="basePackage" value="com.wyj.dao"></property>
    </bean>

    <!-- 注册异常处理 -->
    <bean id="exceptionHandler" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
        <property name="defaultErrorView" value="error"></property>
        <property name="exceptionAttribute" value="exp"></property>
        <property name="exceptionMappings">
            <props>
                <prop key="cn.dtw.exception.MyException">myError</prop>
            </props>
        </property>
    </bean>

spring-mvc.xml

<context:component-scan base-package="com.wyj.controller">
        <context:include-filter type="annotation"
                                expression="org.springframework.stereotype.Controller"/>
    </context:component-scan>

    <context:annotation-config/>

    <mvc:annotation-driven />

    <!--开通静态资源的访问-->
    <mvc:default-servlet-handler />

    <!-- 视图定位 -->
    <bean
            class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="viewClass"
                  value="org.springframework.web.servlet.view.JstlView" />
        <property name="prefix" value="/WEB-INF/" />
        <property name="suffix" value=".html" />
    </bean>

4个回答

试试 把这个tomca删了,重新配个。再到server locations选第二项重启

u011559676
785828852 重新配tomcat也没用
一年多之前 回复
改成:
    if(u!=null ){
        return "1";
    }else{
                return "2";
    }
u011559676
785828852 配置文件贴上来了,实在看不出哪有问题,测试类加上@ContextConfiguration({"classpath:applicationContext.xml"})之后注解是正常的
一年多之前 回复
qq_34872748
L星火燎原 回复785828852:刚才不是说了么,你这个依赖注入是不是有问题你说没问题,检查一下你的bean配置吧。
一年多之前 回复
u011559676
785828852 回复L星火燎原: 貌似controller里的注解无效,测试能用是因为加上了@ContextConfiguration,注入的Dao和service都是空的
一年多之前 回复
qq_34872748
L星火燎原 回复785828852: 远程看看
一年多之前 回复
u011559676
785828852 回复L星火燎原: 测试过注解是有效的
一年多之前 回复
qq_34872748
L星火燎原 回复785828852: 你这不会是自动注入报错了吧、、、、、、、
一年多之前 回复
u011559676
785828852 还是不行,把前面的User user和service去掉就能用
一年多之前 回复

http://localhost:8080/bookManage_war/user/login
基本是这个路径的问题,
你看看你的web.xml配置文件里面有没有 配置过滤那些后缀啥的

如果后缀方面是OK的,那就是 工程目录的问题,就是路径问题,
建议使用 postman 这个软件进行post测试。
很有可能是工程名相关路径问题

whandwho
大川里的小川人 回复785828852: 楼主还是不行的话,就直接 不传实体好了,传参数是一样 @RequestParam
一年多之前 回复
u011559676
785828852 回复785828852: 把实体类参数去掉之后,保留调用userService的方法也还是报这个错
一年多之前 回复
u011559676
785828852 回复大川里的小川人: 没有别的错误信息,后台没有报错,前端chrome只有这个错误信息
一年多之前 回复
whandwho
大川里的小川人 回复785828852:函数的入口参数 也是需要注解的!!!
一年多之前 回复
whandwho
大川里的小川人 回复785828852: public String userLogin(User user){ 这个方法的参数 是一个实体类,不是一般的普通参数,实体类对象参数,是需要特别的注解的
一年多之前 回复
whandwho
大川里的小川人 回复785828852: Not Found) 后面那些报错贴一下 报错信息都在那里面
一年多之前 回复
u011559676
785828852 没有过滤,路径应该没错啊,test是能用的,把login里的实体类和service去掉后这个路径也是能用的
一年多之前 回复

@RequestBody

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