Rumah > Soal Jawab > teks badan
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了,我漏了什么吗?
天蓬老师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
伊谢尔伦2017-04-18 10:17:17
Bagaimana dengan borang? Adakah anda pasti medan tersebut ditulis dalam borang?