request获取请求数据

本文介绍如何在Java Servlet中处理来自HTML表单的GET和POST请求数据,包括单一参数与多重参数的获取方式,并演示了使用JavaBean封装请求数据的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

获取请求数据时,一般来说都要先检查再使用。

先写好test.html

<!DOCTYPE html>
<html>
  <head>
    <title>传数据给GetRequestInf</title>
	
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="this is my page">
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    
    <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->

  </head>
  
  <body>
  	<!--客户机给服务器传数据的形式-->
	<!--形式一:利用超链接-->
	<a href="/RequestTest/servlet/GetRequestInf?username=xxx">checked</a>
	<!--形式二:从form表单提交-->
	<form action="/RequestTest/servlet/GetRequestInf" method="post">
		UserName1<input type="text" name="username"></br>
		UserName2<input type="text" name="username"></br>
		PassWord <input type="password" name="password"></br>
			     <input type="submit" value="submit">
	</form>
  </body>
</html>

配置好User.java

package RequestDemo;

public class User
{
	private String UserName[];
	private String PassWord;
	
	public String[] getUserName()
	{
		return UserName;
	}
	
	public void setUserName(String[] userName)
	{
		UserName = userName;
	}
	
	public String getPassWord()
	{
		return PassWord;
	}
	
	public void setPassWord(String passWord)
	{
		PassWord = passWord;
	}
	
}

再写好GetRequestInf.java

package RequestDemo;

import java.io.IOException;
import java.io.PrintWriter;
import java.lang.reflect.InvocationTargetException;
import java.util.Enumeration;
import java.util.Map;

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

import org.apache.commons.beanutils.BeanUtils;

public class GetRequestInf extends HttpServlet
{
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException
	{
		//根据名称获取客户机带过来的指定名称的值,若有多个,则只能获取第一个
		String value = request.getParameter("username");
		//检查value是否为空
		if(value!=null && !value.trim().equals(""))
		{
			System.out.println(value);
		}
		
		//获取所有名称和值(为方便起见,此处未检查提交字符是否为空,开发中应检查)
		Enumeration e = request.getParameterNames();
		while(e.hasMoreElements())
		{
			String nameString = (String) e.nextElement();
			String valueString = request.getParameter(nameString);
			System.out.println(nameString + "=" + valueString);
		}
		
		//根据名称获取客户机带过来的指定名称的所有值
		String[] values = request.getParameterValues("username");
		for(int i=0;values!=null && i<values.length;i++)
		{
			System.out.println(values[i]);
		}
		
		//利用JavaBean获取客户机带过来的所有值
		Map<String,String[]> map = request.getParameterMap();
		User user = new User();
		try
		{
			//用来将一些 key-value的值映射到 bean中的属性
			BeanUtils.populate(user,map);
		} catch (Exception exception)
		{
			exception.printStackTrace();
		} 
		System.out.println(user);
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException
	{
		doGet(request, response);
	}
}

其在web.xml中的相关配置为:

<servlet>
    <servlet-name>GetRequestInf</servlet-name>
    <servlet-class>RequestDemo.GetRequestInf</servlet-class>
  </servlet>
<servlet-mapping>
    <servlet-name>GetRequestInf</servlet-name>
    <url-pattern>/servlet/GetRequestInf</url-pattern>
  </servlet-mapping>	




 

在Java中,使用Servlet API处理HTTP请求时,可以通过HttpServletRequest接口来获取请求体。以下是获取请求体的常见方法: 1. 对于`application/x-www-form-urlencoded`类型的请求体(即表单提交的数据),可以使用`getParameter`方法或者`getParameterMap`方法来获取请求中的参数。 ```java String value = request.getParameter("paramName"); Map<String, String[]> parameterMap = request.getParameterMap(); ``` 2. 对于`multipart/form-data`类型的请求体(即文件上传),可以使用`Part`接口来获取上传的文件。 ```java Part filePart = request.getPart("file"); ``` 3. 对于JSON或XML等格式的请求体,需要先通过`getInputStream()`方法获取输入流,然后读取输入流中的内容,并将其转换为相应的数据格式(如JSON对象或XML文档)。例如,使用Gson、Jackson等库处理JSON数据。 ```java InputStream inputStream = request.getInputStream(); // 使用Gson或Jackson等库解析inputStream中的JSON数据 // 示例:使用Gson解析JSON Gson gson = new Gson(); Type type = new TypeToken<Map<String, Object>>() {}.getType(); Map<String, Object> bodyMap = gson.fromJson(new InputStreamReader(inputStream), type); ``` 4. 如果请求体是简单的文本内容,可以直接读取输入流。 ```java BufferedReader reader = request.getReader(); String line; StringBuilder stringBuilder = new StringBuilder(); while ((line = reader.readLine()) != null) { stringBuilder.append(line); } String requestBody = stringBuilder.toString(); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值