2016-05-07 69 views
0

如何使用Spring
我想从控制器获取JSON数据,但得到的JQueryAjax错误ststus从控制器获取JSON数据响应JQueryAjax, 在我的代码中的任何错误,这是一个简单的登录应用如何使用Spring获取从Controller到JQueryAjax的json数据响应?

这是我在春天

控制器

HomeController.java

@RequestMapping(value = "/login.htm", method = RequestMethod.POST, produces = "application/json") 
    public @ResponseBody User loginUser(HttpServletRequest request, HttpServletResponse response, User ub) 
    { 

     String email = request.getParameter("txt_email"); 
     String password = request.getParameter("txt_password"); 

     ub.setEmail(email); 
     ub.setPassword(password); 

     UserServiceImpl us = new UserServiceImpl(); 
     User ub1= us.verifyUserLogin(ub); 

     return ub1; 
    } 

这是我JQueryAjax

个data.js

function usersignin(url) 
    { 
     var val = signin_validate(); 
     if (val == false) 
     { 
      return; 
     } 
     var email = $('#txt_email').val(); 
     var password = $('#txt_password').val(); 
     var formData = 
     { 
       'txt_email' : email, 
       'txt_password' : password, 

     }; 
     $.ajax(
       { 
        type : 'POST', 
        url : url, 
        data : formData, 
        dataType : 'json', 

        success : function(res, textStatus) 
        { 
         var msg="Succesfully..! Login"; 
         showAlertLogin(msg); 
         window.location.href='index.jsp'    

        }, 

        error : function(res, textStatus) 
        { 
         var msg="Failed..! Login"; 
         showAlertLogin(msg); 
         window.location.href='layout.jsp'   

        } 
       }); 

    } 

我添加依赖文件

<dependency> 
     <groupId>org.codehaus.jackson</groupId> 
     <artifactId>jackson-core-asl</artifactId> 
     <version>1.9.10</version> 
    </dependency> 

    <!-- Jackson JSON Mapper --> 
    <dependency> 
     <groupId>org.codehaus.jackson</groupId> 
     <artifactId>jackson-mapper-asl</artifactId> 
     <version>1.9.10</version> 
    </dependency> 

    <dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-core</artifactId> 
     <version>2.5.1</version> 
    </dependency> 

    <dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-databind</artifactId> 
     <version>2.5.1</version> 
    </dependency> 
    <dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-annotations</artifactId> 
     <version>2.5.1</version> 
    </dependency> 

    <dependency> 
     <groupId>com.fasterxml.jackson.jaxrs</groupId> 
     <artifactId>jackson-jaxrs-base</artifactId> 
     <version>2.6.1</version> 
    </dependency> 

我的调度员servlet.xml中

<mvc:annotation-driven /> 

<context:annotation-config/> 

<bean id="contentNegotiationManager" class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean"> 
    <property name="mediaTypes"> 
     <map> 
      <entry key="xml" value="application/xml"/> 
      <entry key="json" value="application/json"/> 
     </map> 
    </property> 
    <property name="ignoreAcceptHeader" value="true"/> 
    <property name="favorPathExtension" value="true"/> 
</bean>  

但我没有得到的AJAX JSON响应只得到错误,为什么?

显示错误在控制台

[HTTP-NIO-8080-EXEC-5] WARN org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver - 处理程序执行导致异常:无法找到可接受表示

我在浏览器控制台得到406错误太

+0

试试这个http://stackoverflow.com/questions/7197268/spring-mvc-httpmediatypenotacceptableexception –

回答

0

Spring MVC的设置:

<mvc:annotation-driven content-negotiation-manager="contentNegotiationManager"> 
      <mvc:message-converters register-defaults="true"> 
       <bean class="org.springframework.http.converter.StringHttpMessageConverter"> 
        <constructor-arg value="UTF-8"/> 
       </bean> 
       <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> 
        <property name="supportedMediaTypes"> 
         <list> 
          <value>application/json;charset=UTF-8</value> 
          <value>text/html;charset=UTF-8</value> 
         </list> 
        </property> 
       </bean> 
      </mvc:message-converters> 
     </mvc:annotation-driven> 
+0

我把这个代码在我的分发程序Servlet显示了> CVC-复杂type.3.2.2错误:属性'content-negotiation-manager'不允许出现在元素'mvc:annotation-driven'中。 –

+0

我把这段代码放在我的调度程序servlet.xml中显示错误,显示** cvc-complex-type.3.2.2:属性'content-negotiation-manager'不允许出现在元素'mvc:annotation-driven'中* * –

+0

删除旧的我错过了一段时间 – zhangbowen

0

添加以下代码.....

<bean id="contentNegotiationManager" class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean"> 
      <property name="mediaTypes"> 
       <map> 
        <entry key="xml" value="application/xml"/> 
        <entry key="json" value="application/json"/> 
       </map> 
      </property> 
      <property name="ignoreAcceptHeader" value="true"/> 
      <property name="favorPathExtension" value="true"/> 
     </bean> 
0

对不起。我们的时间可能正好相反。

移除<mvc:annotation-driven/>并添加代码:

remove从控制器方法产生。

<mvc:annotation-driven content-negotiation-manager="contentNegotiationManager"> 
    <mvc:message-converters register-defaults="true"> 

     <bean class="org.springframework.http.converter.StringHttpMessageConverter"> 
      <constructor-arg value="UTF-8"/> 
     </bean> 

     <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> 
      <property name="supportedMediaTypes"> 
       <list> 
        <value>application/json;charset=UTF-8</value> 
        <value>text/html;charset=UTF-8</value> 
       </list> 
      </property> 
      <property name="prettyPrint" value="false"/> 
      <property name="objectMapper"> 
       <bean class="spider.common.mapper.JsonMapper"></bean> 
      </property> 
     </bean> 
    </mvc:message-converters> 
</mvc:annotation-driven> 


<bean id="contentNegotiationManager" class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean"> 
    <property name="mediaTypes"> 
     <map> 
      <entry key="xml" value="application/xml"/> 
      <entry key="json" value="application/json"/> 
     </map> 
    </property> 
    <property name="ignoreAcceptHeader" value="true"/> 
    <property name="favorPathExtension" value="true"/> 
</bean>