検索

ホームページ  >  に質問  >  本文

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日前834

全員に返信(2)返信します

  • 天蓬老师

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

    ちなみに、springmvc のアノテーション:RequestParam を使っても取得できず、フォームデータ全体が空です

    メッセージを文字ごとに書くツールを使用しました。jspでも試してみましたが、同じ400になりました

    。 リーリー

    エラーが返されました:

    リーリー

    ブラウザのデバッグ、送信されたメッセージ:

    リーリー

    バックグラウンドで HttpServelet を使用して ContentType を取得します。これは実際には application/x-www-form-urlencoded ですが、ParameterMap 全体または単一の Parameter を取得する場合、本文を取得するときも空になります。空ですが、GET に変更して URL にパラメータを入れても問題ありません



    今日会社に来て、もう一度コードを入力しました。会社ではまったく同じコードが取得できましたが、すべてのテストは合格でした。なぜ自宅で取得できないのかわかりません。
    当初は、会社で使用されている Tomcat のバージョンが 8.0.29 であることが原因であると推定されていますが、家では知りません。今夜帰ってから Tomcat のバージョンを確認してみます。このバージョンの

    継続的な更新。 。 。



    tomcat8.0.29では修正されていますが、フォームデータを使用する場合は注意してください

    返事
    0
  • 伊谢尔伦

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

    フォームはどうですか?これらのフィールドがフォームに記載されていることを確認しますか?

    返事
    0
  • キャンセル返事