spring mvc 发送ajax 请求路径是这样的:8081/user/menu 求帮忙看下哪里的问题?

A界面
<form action="http://localhost:8081/cqpt/us...

<button type="submit">submit</button>

</form>
controller
@RequestMapping(value = "/forwordMain")

public String forwordMain(){
    return "main";
}

B界面的js


        $.ajax({
        type: 'post',
        contentType: 'application/text;charset=utf-8',
        data: this.user,
        url: '/user/menu',
        success: function (data) {
            if (data != '') {
                console.log(data);
            }
        }
    });
    

spring 配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"

   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
   xmlns:context="http://www.springframework.org/schema/context"
   xsi:schemaLocation="http://www.springframework.org/schema/beans
   http://www.springframework.org/schema/beans/spring-beans.xsd
   http://www.springframework.org/schema/mvc
   http://www.springframework.org/schema/mvc/spring-mvc.xsd
   http://www.springframework.org/schema/context
   http://www.springframework.org/schema/context/spring-context.xsd">

<!--资源文件中的属性值可通过@Value加载到控制器中-->
<bean id="configProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
    <property name="locations">
        <list>
            <value>classpath:properties/*.properties</value>
        </list>
    </property>
</bean>
<bean id="config" class="org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer">
    <property name="properties" ref="configProperties" />
</bean>

<!--扫描控制器 被@Controller注解的类 base-package: 扫描什么包下的类-->
<context:component-scan base-package="cqsoft.controller"/>
<!--自动处理 不应该是请求的 资源 如访问图片  引入 css javascript 等-->
<mvc:default-servlet-handler />
<!--<mvc:resources mapping="/resources/**/" location="/resources/"/>-->
<!--
    注解驱动
    会自动注册2个bean
    DefaultAnnotationHandlerMapping 处理在类级别上的@RequestMapping注解
    AnnotationMethodHandlerAdapter  处理方法级别上的@RequestMapping注解
-->
<mvc:annotation-driven>
    <!--
        处理表单请求的转换器
        配置一个过多个HttpMessageConverter来转换 @RequestBody方法参数 和 @ResponseBody的方法返回值,优先加载默认的HttpMessageConverter.
    -->
    <!--
    此段注释从 <mvc:message-converters> 源码摘录
    Configures one or more HttpMessageConverter types to use for converting
    @RequestBody method parameters and @ResponseBody method return values.
    Using this configuration element is optional.
    HttpMessageConverter registrations provided here will take precedence over HttpMessageConverter types registered
    by default. Also see the register-defaults attribute if you want to turn off default registrations entirely.
    -->
    <mvc:message-converters>
        <ref bean="jsonHttpMessageConverter"/>
        <ref bean="stringHttpMessageConverter"></ref>
        <ref bean="formHttpMessageConverter"/>
    </mvc:message-converters>
</mvc:annotation-driven>

<!--
    如果 controller 中使用 @RequestBody 注解function的参数 必须适用请求转换器类理请求
    实现了HttpMessageConverter的接口类如下
    ByteArrayHttpMessageConverter  converts byte arrays.
    StringHttpMessageConverter converts strings.
    FormHttpMessageConverter converts form data to/from a MultiValueMap<String, String>.
    SourceHttpMessageConverter converts to/from a javax.xml.transform.Sourc
-->

<!--
    application/json : 将表单当做 json 字符串
    如果设置请求头 'Content-Type': 'application/json' 必须启用 MappingJackson2HttpMessageConverter Bean
    导入2个jar包:
    Gradle 导入写法
        com.fasterxml.jackson.core:jackson-core:2.5.2
        com.fasterxml.jackson.core:jackson-databind:2.5.2
    缺少一个一项配置,就会导致 网页出现http 415 错误
-->
<bean id="jsonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
    <property name="supportedMediaTypes">
        <list>
            <value>application/json;charset=UTF-8</value>
        </list>
    </property>
</bean>
<!--处理 "text/plain" -->
<bean id="stringHttpMessageConverter"  class="org.springframework.http.converter.StringHttpMessageConverter">
    <constructor-arg value="UTF-8" index="0"></constructor-arg><!--
        避免出现乱码 -->
    <property name="supportedMediaTypes">
        <list>
            <value>text/plain;charset=UTF-8</value>
        </list>
    </property>
</bean>
<!--处理 application/x-www-form-urlencoded -->
<bean id="formHttpMessageConverter" class="org.springframework.http.converter.FormHttpMessageConverter"></bean>
<!--spring mvc 最常用的视图模式,可以通过前缀加后缀的方式直接定位到view -->
<!--InternalResourceViewResolver 继承自 UrlBasedViewResolver  -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/view/"/>
    <property name="suffix" value=".jsp"></property>
</bean>

<!-- 配置数据源 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
    <!-- 基础配置 -->
    <property name="driverClass" value="${driverClassName}" />
    <property name="jdbcUrl" value="${url}" />
    <!-- 用户名和密码加密 -->
    <property name="properties" ref="AccountDecrypt" />

    <!-- 关键配置 -->
    <!--初始化时获取三个连接,取值应在minPoolSize与maxPoolSize之间。Default: 3 -->
    <property name="initialPoolSize" value="${initialPoolSize}" />
    <!--连接池中保留的最小连接数。Default: 2 -->
    <property name="minPoolSize" value="${minPoolSize}" />
    <!--连接池中保留的最大连接数。Default: 15 -->
    <property name="maxPoolSize" value="${maxPoolSize}" />
    <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 -->
    <property name="acquireIncrement" value="${acquireIncrement}" />

    <!-- 性能配置 -->
    <!-- 控制数据源内加载的PreparedStatements数量。如果maxStatements与maxStatementsPerConnection均为0,则缓存被关闭。Default: 0 -->
    <property name="maxStatements" value="${maxStatements}" />
    <!--最大空闲时间,1800秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 -->
    <property name="maxIdleTime" value="${maxIdleTime}" />

    <property name="idleConnectionTestPeriod" value="${idleConnectionTestPeriod}" />
    <property name="acquireRetryAttempts" value="${acquireRetryAttempts}" />
    <property name="breakAfterAcquireFailure" value="${breakAfterAcquireFailure}" />
    <property name="testConnectionOnCheckout" value="${testConnectionOnCheckOut}" />
</bean>

<!-- 解密账号与密码 -->
<bean id="AccountDecrypt" class="cqsoft.util.AccountDecryptUtil">
    <property name="properties">
        <props>
            <prop key="username">${username}</prop>
            <prop key="password">${password}</prop>
        </props>
    </property>
</bean>

<!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <!-- 自动扫描mapping.xml文件 -->
    <property name="mapperLocations" value="classpath:sqlmap/*.xml"></property>
</bean>

<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
    <constructor-arg index="0" ref="sqlSessionFactory"/>
</bean>

<bean id="BaseDao" class="cqsoft.dao.base.BaseDao">
</bean>

<!--加载资源文件-->
<import resource="beans.xml"/>

<!--文件上传-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <!--maxUploadSize可上传多少字节 (53000000=50mb)-->
    <property name="maxUploadSize" value="53000000" />
    <property name="maxInMemorySize" value="4096" />
    <property name="defaultEncoding" value="UTF-8"></property>
</bean>

</beans>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"

     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
     version="3.1">
<!--加载spring 核心的 servlet-->
<servlet>
    <servlet-name>dispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!--此参数必须有 ,配合多 spring.xml是当前这种写法,还可以指定加载某个spring.xml-->
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value></param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>dispatcherServlet</servlet-name>
    <!--拦截所有请求,这样配置会把 访问图片,应用css js script 等都当做请求处理-->
    <!--避免 css js script 等都当做请求处理 ,需要在spring配置文件中加入 <mvc:resources/> 或 mvc:default-servlet-handler  标签 -->
    <url-pattern>/</url-pattern>
</servlet-mapping>
<!--多spring 配置文件-->
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:spring/springContext.xml</param-value>
</context-param>
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<!--字符编码过滤器-->
<filter>
    <filter-name>springCharacterEncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>forceEncoding</param-name>
        <param-value>true</param-value>
    </init-param>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>springCharacterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
<!--log4j配置-->
<servlet>
    <description></description>
    <display-name>InitLog4J</display-name>
    <servlet-name>InitLog4J</servlet-name>
    <servlet-class>cqsoft.servlets.InitLog4J</servlet-class>
    <init-param>
        <param-name>log4j</param-name>
        <param-value>WEB-INF\classes\properties\log4j.properties</param-value>
    </init-param>
    <load-on-startup>3</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>InitLog4J</servlet-name>
    <url-pattern>/InitLog4J</url-pattern>
</servlet-mapping>

<context-param>
    <param-name>log4jConfigLocation</param-name>
    <param-value>classpath:properties/log4j.properties</param-value>
</context-param>
<!-- 首页 -->
<welcome-file-list>
    <welcome-file>submit.jsp</welcome-file>
</welcome-file-list>

</web-app>

阅读 2.3k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进