cari

Rumah  >  Soal Jawab  >  teks badan

java - SpringMvc Post表单数据的一个问题

spring-mvc 前端post表单数据到后台,后台没有接收到,并且用HttpServletRequest获取参数列表为空,下面为代码:

web.xml:

<servlet>
        <servlet-name>embers</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:conf/embers-mvc.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
        <async-supported>true</async-supported>
    </servlet>

    <servlet-mapping>
        <servlet-name>embers</servlet-name>
        <url-pattern>/rest/*</url-pattern>
    </servlet-mapping>

mvc配置文件:

<context:component-scan base-package="embers.blog.controller" />

controller:

@Controller
public class BugTestController {
    
    
    @RequestMapping(value="/demo",method=RequestMethod.POST)
    public String demo(HttpServletRequest request,HttpServletResponse response) throws IOException{
        System.out.println(request.getParameterMap());
        System.out.println(request.getParameter("username"));
        System.out.println(request.getParameter("password"));
        System.out.println(request.getContentType());
        System.out.println("//");
        response.setContentType("text/html");
        response.getWriter().println("keke");
        response.getWriter().flush();
        response.getWriter().close();
        return null;
    }
}

我已经调试过无数次了,如果设定为GET方法,然后把参数放在URL上是完全没有问题的,用json提交,配置json转换也是没有问题的,就是默认的POST表单数据有问题,下面是调试工具生成的表单完整报文:

POST /BugTest/rest/demo HTTP/1.1
Host: 127.0.0.1:8080
Content-Type: application/x-www-form-urlencoded
Cache-Control: no-cache

username=111wqfewrf&password=321&=

一直都是好好的,这么简单的demo,现在突然不行了,好久没写springmvc了,我漏了什么吗?

大家讲道理大家讲道理2803 hari yang lalu838

membalas semua(2)saya akan balas

  • 天蓬老师

    天蓬老师2017-04-18 10:17:17

    Dengan cara ini, walaupun anda menggunakan anotasi springmvc: RequestParam, anda tidak boleh mendapatkannya dan keseluruhan data borang kosong

    Saya menggunakan alat untuk menulis aksara mesej demi aksara Saya juga mencubanya dengan jsp dan mendapat 400

    yang sama
    <form action="${pageContext.request.contextPath }/demo.ember" method="post">
            <input type="text" name="username"/>
            <input type="text" name="password"/>
            <input type="submit" value="提交"/>
    </form>

    Ralat kembali:

    HTTP Status 400 - Required String parameter 'username' is not present

    Nyahpepijat penyemak imbas, mesej dihantar:

    Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
    Accept-Encoding:gzip, deflate
    Accept-Language:en-US,en;q=0.8
    Cache-Control:max-age=0
    Connection:keep-alive
    Content-Length:26
    Content-Type:application/x-www-form-urlencoded
    Cookie:JSESSIONID=7872810B7BE203B784A906C3D49418D1
    Host:localhost:8080
    Origin:http://localhost:8080
    Referer:http://localhost:8080/BugTest/demo.jsp
    Upgrade-Insecure-Requests:1
    User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36
    
    username=wsa&password=esdx
    

    Di latar belakang, gunakan HttpServelet untuk mendapatkan ContentType, yang sememangnya aplikasi/x-www-form-urlencoded, tetapi dapatkan keseluruhan ParameterMap atau Parameter tunggal, kedua-duanya kosong, dapatkan badan, ia juga kosong, tetapi tukar kepada GET, dan letakkan parameter dalam url , tiada masalah sama sekali



    Saya tiba di syarikat hari ini dan menaip kod itu sekali lagi. Syarikat boleh mendapatkan kod yang sama, dan semua ujian boleh dilalui :
    Permulaan Dianggarkan pepijat disebabkan oleh versi kucing jantan yang digunakan di syarikat adalah 8.0.29 Saya tidak tahu di rumah saya akan kembali malam ini untuk menyemak versi kucing jantan senarai pepijat versi ini

    Kemas kini berterusan. . .



    Ia adalah pepijat dalam tomcat8.0.29. Sila ambil perhatian apabila menggunakan data borang. Sudah tentu, jangan risau tentang menulis REST

    balas
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-18 10:17:17

    Bagaimana dengan borang? Adakah anda pasti medan tersebut ditulis dalam borang?

    balas
    0
  • Batalbalas