post提交form表单到springMVC,不能跳转问题

**项目结构: **

图片说明

  1. jsp页面

index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>首页</title>
</head>
<body>
    <a href="/sdkapp/init">去往登录页</a>
</body>
</html>

login.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登录页</title>
    <script src="<%=request.getContextPath()%>/js/jquery-1.7.2.js" type="text/javascript"></script>
</head>
<body>
    <form id="frm">
        用户id: <input type="text" name="uid"><br><br>
        用户名: <input type="text" name="username"><br><br>
        密  码: <input type="password" name="password"><br><br>
        <input type="submit" id="btn" value="登录">
    </form>
    <script type="text/javascript">
        $("#btn").click(function () {
            console.log(getFormJson(frm));
            $.ajax({
                url: "${pageContext.request.contextPath}/sdkapp/login",
                type:"POST",
                data: getFormJson(frm),
                contentType:"application/json;charset=utf-8",
                success:function(data){
                    console.log(data)
                },
                error:function(data){
                    console.log(data)
                }
            });
        })

        function getFormJson(frm) {   //frm:form表单的id
            var o = {};
            var a = $("#"+frm).serializeArray();
            $.each(a, function() {
                if (o[this.name] !== undefined) {
                    if (!o[this.name].push) {
                        o[this.name] = [ o[this.name] ];
                    }
                    o[this.name].push(this.value || '');
                } else {
                    o[this.name] = this.value || '';
                }
            });
            return o;
        }
    </script>
</body>
</html>

success.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登录成功页</title>
</head>
<body>
    <h1>登录成功</h1>
</body>
</html>

  1. 配置文件 springmvc.xml
<?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:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd
       http://www.springframework.org/schema/mvc
       http://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <!--配置默认的servlet处理器,处理静态资源加载-->
    <mvc:default-servlet-handler/>
    <!--配置包扫描controller-->
    <context:component-scan base-package="controller"/>
    <mvc:annotation-driven/>

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/pages/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>

</beans>

web.xml
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">

<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:spring/springmvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>springMvc</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

3.java代码

Login.java

package controller;

import controller.vo.User;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@RestController
@RequestMapping(value = "/sdkapp")
public class Login {

    @RequestMapping(value = "/init")
    public ModelAndView casdkbindInput(){
        ModelAndView view = new ModelAndView("/login");
        return view;
    }

    @RequestMapping(value = "/login",method = {RequestMethod.POST},consumes = "application/json;charset=utf-8")
    public ModelAndView testJson(@RequestBody User user) throws Exception {
        System.out.println(user);
        ModelAndView view = new ModelAndView("/success");
        return view;
    }
}

vo/User.java

package controller.vo;
import java.io.Serializable;

public class User implements Serializable {
    private String uid;
    private String username;
    private String password;

    public String getUid() {
        return uid;
    }

    public void setUid(String uid) {
        this.uid = uid;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "User{" +
                "uid='" + uid + '\'' +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

问题是 jq post请求到后台,后台返回 view时,前端接收不到?
附上demo地址:百度云盘

4个回答

你仔细看看你的浏览器控制台,你这段代码的success里面,已经把新界面的内容打印出来了。

$.ajax({
                url: "${pageContext.request.contextPath}/sdkapp/login",
                type:"POST",
                data: getFormJson(frm),
                contentType:"application/json;charset=utf-8",
                success:function(data){
                    console.log(data)
                },
                error:function(data){
                    console.log(data)
                }
            });

你需要注意的是,ajax取数据的时候,默认会把取到的内容当做xml来解析处理,跳转会被忽略掉,并解析成常规文本。

如果你返回的内容想要在当前页显示,你可以直接jquer.load方法把返回的页面显示出来。

qq_35161159
Dw_Qin 最终查找原来是submit提交问题,<input type="submit" id="btn" value="登录">改为<input type="button" id="btn" value="登录">
9 个月之前 回复
 public ModelAndView testJson(@RequestBody User user) throws Exception {
        System.out.println(user);
        ModelAndView view = new ModelAndView("/success");
        return view;
    }

改成

@ResponseBody
 public Object testJson(@RequestBody User user) throws Exception {
        System.out.println(user);
        return user;
    }
kylin_bo
kylin_bo 回复qq_35161159: 再在js中处理页面跳转呀!
9 个月之前 回复
qq_35161159
Dw_Qin 我是要跳转页面哦
9 个月之前 回复

你登录时用的ajax提交的,success里的data就是返回的view,你可以在控制台的网络里看到发起post请求后返回的信息

不要使用异步提交

 <form id="frm" action='${pageContext.request.contextPath}/sdkapp/login' method='post'>
        用户id: <input type="text" name="uid"><br><br>
        用户名: <input type="text" name="username"><br><br>
        密  码: <input type="password" name="password"><br><br>
        <input type="submit" id="btn" value="登录">
    </form>
$("#btn").click(function () {
           $('#frm').submit();
        })
qq_35161159
Dw_Qin https://blog.csdn.net/sunshine_lzy/article/details/52301213
9 个月之前 回复
qq_35161159
Dw_Qin 不异步提交,java @RequestBody接收对象会报错 application/json;charset=utf-8问题
9 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
form表单post提交问题
form表单以post方式提交rnrn当页面通过查询条件查询数据后,点击刷新,页面报错,正常没有查询直接刷新没错rnrn在ie下没有问题,在safari有问题rnrn如果换成get方式提交就可以了,请问这是为什么rnrn页面刷新时 用的是 window.location.href = window.location.href
springMVC提交form表单页面不跳转
在初学springMVC时,做一个简单的登录功能,登录成功后跳转到成功页面。 最初我使用ajax方式提交表单,浏览器调试查看response结果,显示已经成功,但是浏览器不跳转 后来使用form表单提交,则成功进行跳转
ajax和form表单的提交跳转问题
ajax和form表单的提交跳转问题 1. 使用ajax提交form表单数据的时候,把提交按钮的type=“submit”改成type="button",防止点击提交的时候form表单自动提交刷新。 2. 使用ajax提交form表单数据,controller层返回处理的结果,在ajax里跳转页面。controller层的方法上要加@ResponseBody。 3. ajax中跳转页面使用w
form表单的提交方式-post
rn使用form表单提交文章,如果不写明发送方式,发送数据比较多时,总是出现问题,比如“浏览器一直不响应”,莫名其妙的rnnullpointerexception,写明post之后突然就没有问题了?rnrn 请问原因何在??
form表单post提交数据丢失
近期遇到form表单提交数据丢失的问题, 从后台获取的数据有196条,然而form表单提交只有140来条 几经周折找到原因 因为提交数据有5项,每项近200条数据,数据过大,大于1000..... 最终我的问题的解决方法是将,不必要提交的2项数据的  name    改为  id 类似于:      name='num&quot; + json[i].id + &quot;'     修改为:      ...
post提交方式跳转问题
  post提交数据到后台竟然不支持 redirect类型的重定向跳转!!! 规则就是这样  总之就是ajax传数据到后台 就是怎么着都不给跳                                                                                                                              ...
C# post方式提交Form表单
C# post方式提交Form表单,可以支持带参数传入,供大家学习参考。
form表单不能提交!
我做个一个成绩录入系统,在本机测试的时候好好的rn但是换到服务器上表单就不能提交了rnaction也设置好了。。就是不知道怎么回事!rn哪位大侠帮帮忙啊!
form表单post提交时中文乱码
若提交数据是在form表单中以post方式提交时出现中文乱码解决方案 /*request.setCharacterEncoding("UTF-8");  //请求页面的编码 response.setCharacterEncoding("UTF-8");  //响应页面的编码 */
form表单 post提交 数据量大的问题
问题:页面1提交之后,如果数据量太大,页面2获取不到,获取到的值为null 解决方法: POST传递没问题。 在tomcat里面设置server.xml <Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" maxPostSize="2000000"/>
提交Form表单,POST和GET方式的传值问题。
userame: userame: 以上例子: GET方式提交form表单时,表单数据会以"?username=tom"形式添加到url并传递到后台,这时action里面的地址中?后面的数据会被舍弃(HTML的规定),后台无法获取id值,仅能获取username值。 POST方式:其他不变,后台可以获取id值和username值。
新人求助:a标签form表单post提交的问题
while循环输出表格,a标签传参“JOB_NO”到info.php。比如输出了10行数据,无论点击哪一行,info.php里var_dump($_POST['JOB_NO']);都显示最后一行"JOB_NO"的参数。是我代码哪里写的不对吗?请大家帮忙看看,谢谢。rn[code=php] rnrn rnrn rn rn rn rn rn rn rn rn rnrnrnrn [/code]
提交页面不能跳转
我写了一个struts 但是不能正确跳转 能执行相应的操作rnrnrn执行后url 成这样咯rnrnhttp://localhost:8090/struts3/insert.do;jsessionid=65D89D93A756C017F2786BE80E852D82rnrn怎么才能正确跳转
解决乱码问题
在web.xml中配置 <!-- 乱码解决 --> <filter> <filter-name>characterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
springMVC 处理POST提交JSON数据
SpringMVC Controller处理  1:使用String字符串接收,然后再用json解析; 2:使用对象接收,然后就可以直接获取值。 package com.ricky.codelab.springmvc.controller; import com.alibaba.fastjson.JSON; import com.ricky.codelab.springmvc.domai...
ajax实现页面无跳转提交form表单
我没有做过ajax,不懂js跟jq,想实现一个输入框输入,然后提交添加,ajax怎么实现页面无跳转,显示添加成功呢,求贴测试好的代码,写好尽量讲解下
action提交form表单后不跳转
正常的form表单提交后页面都会跳转,为了防止页面跳转,可使用jQuery的ajaxSubmit来防止跳转,可使页面保持原样不变1.首先引入以下文件&amp;lt;script type=&quot;text/javascript&quot; src=&quot;/js/jquery/jquery.form.js&quot;&amp;gt;&amp;lt;/script&amp;gt; //必须 &amp;lt;script type=&quot;text/javascript&quot; sr...
post提交form表单时数据丢失的解决办法
表单数据在进行post提交时,无论对表单的enctype属性进行哪种声明,都会造成&amp;amp;+后跟的字串的丢失,这种丢失在进行post提交时,后台程序人员往往不容易发现这种BUG。 解决的办法就是前端页面在提交数据之前要对表单数据进行加密,对应地在后台程序中要做解密处理。 提醒一下,php在解密前端提交过来的数据时,使用原生的rawurldecode比较安全。...
ajax提交form表单到servlet,网页的跳转
jsp界面如下: &lt;%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%&gt; &lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html...
form表单get和post提交方式的不同
1>method="get"       提交时传递的值暴露在url上       http://localhost:8080/Web-ServletContext/Servlet_Context?name=王经   2>method="post"      post方式不会暴露传递的值,而且传递的数据量比get大        http://localhost:8080/Web-Servl
SpringMVC提交带文件上传的form表单报错
java.lang.ClassCastException:  org.springframework.security.wrapper.SavedRequestAwareWrapper cannot be cast to org.springframework.web.multipart.MultipartHttpServletRequest $.ajax({ ...
form表单 post请求提交后 刷新页面
感谢各大神围观 [img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/001/face/64.gif][/img]rn问题:rnpost请求提交后 刷新页面,会异常(参数问题)。rn有没有什么系统的办法处理该问题?
Spring MVC form表单post提交出现乱码
方法一:在Web.xml中加入Spring的字符集过滤器(已测) characterEncodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8 forceEncoding true encoding 字符集,将request字符集设置成enco
struts2和SpringMVC提交form表单参数传递的区别
无论是struts2还是SpringMVC都支持以属性注入的方式传递form表单参数。 struts2 form 表单参数传递 (1)基本属性注入          基本属性注入是将表单参数对应传递给action中同名的属性,属性需提供set方法。          form简写如下: &amp;lt;form name=&quot;myform&quot; method=&quot;post&quot; action=&quot;login...
springmvc中Form表单文件上传使用ajax提交
上传文件这块坑真是不少,耽误了有几个小时的时间,现在简单总结一下; 首先springmvc的核心xml中配置下MultipartResolver: &amp;lt;!-- 配置 MultipartResolver --&amp;gt;     &amp;lt;bean id=&quot;multipartResolver&quot;         class=&quot;org.springframework.web.multipart.com...
提交form表单的问题,求助
[img=https://img-bbs.csdn.net/upload/201707/07/1499411471_941537.png][/img]rn[img=https://img-bbs.csdn.net/upload/201707/07/1499411485_558842.png][/img]rnrn这个是页面效果 和页面代码rnrn我这个是一个form表单rnrn我想实现的效果是选择中其中一个图片,或者自己上传一个图片,提交表单,把数据提交到后台,然后保存到数据库里面rnrn但这里的图片是img标签显示的,上传文件是input标签,只能选择其中一种,我提交表单时应该怎么确认自己是选择中了哪一张照片(我照片选中效果是改变了img的css)rnrnimg标签 可以用form表单提交吗rnrn
form表单回车提交问题
在实际项目中,很多情况下,会需要敲击回车来提交表单,或触发js方法   比如搜索功能,为了让用户使用的方便流畅,需要做到用户输入关键字后,点击回车,直接提交进行搜索。 又比如用户注册功能,具有比较复杂的表单输入项,需要用户将表单输入完整后,方可点击提交。这就需要避免回车误提交。   但是html里面,有很多关于form回车提交的事件。这里整理了几种情况,做个记录:   1、for...
springmvc跳转不能获取静态资源
springmvc跳转不能获取静态资源 解决 使用绝对路径,同意从根目录获取 jsp部分代码 @ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%>         String p = request.getScheme();   St
form表单的提交
开发工具与关键技术:MVC JQuery 的 form表单的提交 作者:沈金凤 年级:18级(5)班 撰写日期:2019年4月2日 一、Form表单有两个属性分别是:“action”和“method”: Action: 的值是URL 就是当提交表单时向某个地方(要提交到某处的地址)发送表单数据 Method: 的值是 get和 post 就是用来提交表单的方式 二、Method中的 get 和 ...
提交form表单如何让页面在提交后不发生跳转
提交form表单如何让页面在提交后不发生跳转
Html中form表单的get提交方式和post提交方式的不同
1.描述分析 在form标签中有一个属性method,就是提交方法。如果你没有设定method,那么会默认使用get提交方式,下面我们来看看get和post有什么不同,通过一个表单的提交来看看。 当前网址: file:///C:/Users/49636/Desktop/Test.html 注意观察网址 将里面的信息填写后,点击提交按钮 大家会发现地址栏变了,因为测试需要,提交不会跳转页...
form表单post提交方式无弹出刷新问题
一个JSP页面中的form表单使用post提交方式,刷新页面和关闭页面后都弹出警告对话框选择重试或取消按钮,如何能去掉直接完成刷新或关闭?
ajax下提交form表单不能使用submit
今天遇到个问题,就是在使用ajax提交表单时却忘记了删除submit属性,导致了ajax异步执行的时候又submit提交表单了,从而使ajax返回一直进入error。
springMvc form表单 定时保存问题
页面无刷新,定时提交form表单部分数据到后台保存。定时保存方法与from提交保存方法不同。这个效果如何实现?
curl post 跳转问题
用curl post来抓东东, 如果这个页面自动跳转的话, 就抓不到内容, 这怎么办啊rn不能抓到跳转之后的内容吗?rn要不之前的也行啊...
SpringMVC实战(五)-处理POST提交JSON数据
1、表单提交2、JSON串客户端请求 String url = "http://localhost:8080/order/create"; String data = "{\"id\":3, \"category\":\"IT数码\"}"; try { String result = HttpUtils.post(url, da
SpringMVC第六篇——解决中文乱码(POST/GET提交)
SpringMVC中get和post中文乱码要分开解决: POST提交: 只需要在web.xml中添加如下配置。post中文乱码就解决了。 拦截规则根据自己需求 &amp;lt;filter&amp;gt; &amp;lt;filter-name&amp;gt;encoding&amp;lt;/filter-name&amp;gt; &amp;lt;filter-class&amp;gt;org.springframe...
springMVC中post提交中文乱码过滤器配置
web.xml文件中配置: CharacterEncodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8 forceEncoding true Characte
JSP Form表单input元素不能提交
昨天写代码的时候发现一个问题,就是form表单提交的时候,其子元素input有没提交成功的,检查了name属性,是正常的。提交的时候输入框里也是有值的。后来想了想,可能是元素设置了disabled属性的问题。但是把disabled的去掉之后还是没成功。于是今天早上继续,在网上看到了关于readonly与disabled的区别之后,发现了问题的根源。 readonly在显示上并不如disabled好
SpringMVC ModelAndView跳转问题
SpringMVC中ModelAndView或者其他的返回方式,如果以post方式返回结果给另外一个应用rn比如我有一个项目test发送了一个post请求到 projectMVC,在projectMVC中的controller中如何以post方式返回结果给请求的项目test?rnUser.javarnid;rnuserName;rnpassword;rnrn@.........rnpublic ..... testControllerrn public ModelAndView test(HttpServletRequest request)rn ..................;rn Map map = new HashMap();rn map.put("id", user.getId());rn map.put("userName", user.getUserName());rn map.put("password", user.getPassword());rn return new ModelAndView(new RedirectView("http://localhost:8080/test/test.jsp"), map); rnrn这样的转发是get方式,所有的参数都会被暴露在地址栏,想问一下有没有post方式直接把对象返回到rnhttp://localhost:8080/test/test.jsp
相关热词 c# 标准差 计算 c#siki第五季 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池