如何使用Spring从Controller到JQueryAjax获取json数据响应?

时间:2022-10-08 09:26:05

How to get json data response from Controller to JQueryAjax using Spring
I am trying to get json data from Controller but getting error ststus in JQueryAjax, Have any error in my code this is a simple login application

如何使用Spring获取从Controller到JQueryAjax的json数据响应我试图从Controller获取json数据但在JQueryAjax中获取错误ststus,在我的代码中有任何错误这是一个简单的登录应用程序

This is my Controller in Spring

这是我在Spring的Controller

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;
    }

This is my JQueryAjax

这是我的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'           

                    }
                });

    }

I added dependency file

我添加了依赖文件

    <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>

My dispatcher-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>     

But i didnt get json response in ajax only getting error why?

但我没有在ajax中获得json响应只是为什么会出错?

Shows error in console

在控制台中显示错误

[http-nio-8080-exec-5] WARN org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver - Handler execution resulted in exception: Could not find acceptable representation

[http-nio-8080-exec-5] WARN org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver - 处理程序执行导致异常:找不到可接受的表示

I got 406 error in my browser console too

我的浏览器控制台也出现406错误

3 个解决方案

#1


0  

spring mvc settings:

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>

#2


0  

add following code.....

添加以下代码.....

 <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>

#3


0  

Sorry.Our time is probably the opposite.

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

remove your <mvc:annotation-driven/> and add code:

删除 并添加代码:

remove produces from your controller method.

从控制器方法中删除产生。

<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>

#1


0  

spring mvc settings:

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>

#2


0  

add following code.....

添加以下代码.....

 <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>

#3


0  

Sorry.Our time is probably the opposite.

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

remove your <mvc:annotation-driven/> and add code:

删除 并添加代码:

remove produces from your controller method.

从控制器方法中删除产生。

<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>