HttpServletRequest
http://localhost:8080/hello?name=zhangsan&password=123456
doGet() / doPost()
如何获取请求的参数数据(表单中提交过来的)
通用的方法获取参数数据:
String value = getParameter(String anme); //获取单个参数
// 获取所有的参数名称
getParamterValues(); -----> Enurmation(类似于 lterator)
hasMoreElements()
nextElement()
getParamterValues():获取一个参数对应的多个值(单选按钮 / 复选按钮)
tomcat服务器获取到浏览器的请求数据
tomcat服务器将请求数据封装到了HttpServletRequest对象中
tomcat服务器调用service方法,业务具体覆盖doGet() / doPost() 方法
package com.github.servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* 获取请求行参数
*/
public class RequestDemo1 extends HttpServlet {
/**
* 1) tomcat服务器获取到浏览器的请求数据
* 2) tomcat服务器将请求数据封装到了HttpServletRequest对象中
* 3) tomcat服务器调用service方法,业务具体覆盖doGet() / doPost() 方法
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("调用了doGet()方法。。。");
// 4) 使用请求对象获取数据
// 获取请求行的信息
// 1.1 请求方式
String mothod = request.getMethod();
System.out.println(mothod);
// 1.2 请求url
String uri = request.getRequestURI();
System.out.println("url = "+uri);
System.out.println("url = " + request.getRequestURL().toString());
// 1.3 请求http协议的版本
System.out.println("protocal = "+request.getProtocol());
System.out.println("-------------------");
// 2. 获取指定的请求头信息
String host = request.getHeader("host");
System.out.println("host:"+host);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
testMethod.html:
<html lang="en">
<head>
<meta charset="UTF-8">
<title>获取表单参数title>
head>
<body>
<h3>GET提交方式h3>
<form action="/RequestDemo4" method="get">
用户名:<input type="text" name="username"><br>
密 码:<input type="password" name="password"><br>
性别:
<input type="radio" name="gender" value="男">男
<input type="radio" name="gender" value="女">女
<br>
爱好:
<input type="checkbox" name="hobit" value="足球">足球
<input type="checkbox" name="hobit" value="篮球">篮球
<input type="checkbox" name="hobit" value="跑步">跑步
<br>
<input type="submit" value="提交">
form>
<hr>
<h3>POST提交方式h3>
<form action="/RequestDemo3" method="post">
用户名:<input type="text" name="username"><br>
密 码:<input type="password" name="password"><br>
性别:
<input type="radio" name="gender" value="男">男
<input type="radio" name="gender" value="女">女
<br>
爱好:
<input type="checkbox" name="hobit" value="足球">足球
<input type="checkbox" name="hobit" value="篮球">篮球
<input type="checkbox" name="hobit" value="跑步">跑步
<br>
<input type="submit" value="提交">
form>
body>
html>
servlet:
package com.github.servlet;
import com.sun.org.apache.xpath.internal.operations.String;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
/**
* request获取参数
* get方式和post方式提交数据,后台获取参数不一样,想办法将get方式和post方式提交获取参数通用
* request.getParameter(String name) ————> String value
* request.getParamerterName() ————> Enurmation ————> Iterator:迭代器
*/
public class RequestDemo3 extends HttpServlet {
// 默认执行get提交方式
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// get方式和post方式获取参数数据是完全不同的
// get方式获取参数数据:
// public String getQureyString()
// http://localhost:8080/testMethod.html?username=xxx&password
java.lang.String queryString = request.getQueryString();
System.out.println(queryString); // username=zhangsan&password=123456
}
// 默认执行post提交
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// post方式获取参数数据:专有方式获取参数数据
InputStream in = request.getInputStream();
// 定义一个字节数组
byte[] bys = new byte[1024];
int len = 0;
while ((len=in.read(bys)) != -1) {
System.out.println(new java.lang.String(bys,0,len));
}
in.close();
}
}
<html lang="en">
<head>
<meta charset="UTF-8">
<title>获取表单参数title>
head>
<body>
<h3>GET提交方式h3>
<form action="/RequestDemo4" method="get">
用户名:<input type="text" name="username"><br>
密 码:<input type="password" name="password"><br>
性别:
<input type="radio" name="gender" value="男">男
<input type="radio" name="gender" value="女">女
<br>
爱好:
<input type="checkbox" name="hobit" value="足球">足球
<input type="checkbox" name="hobit" value="篮球">篮球
<input type="checkbox" name="hobit" value="跑步">跑步
<br>
<input type="submit" value="提交">
form>
<hr>
<h3>POST提交方式h3>
<form action="/RequestDemo4" method="post">
用户名:<input type="text" name="username"><br>
密 码:<input type="password" name="password"><br>
性别:
<input type="radio" name="gender" value="男">男
<input type="radio" name="gender" value="女">女
<br>
爱好:
<input type="checkbox" name="hobit" value="足球">足球
<input type="checkbox" name="hobit" value="篮球">篮球
<input type="checkbox" name="hobit" value="跑步">跑步
<br>
<input type="submit" value="提交">
form>
body>
html>
package com.github;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Enumeration;
import java.util.Map;
import java.util.Set;
/**
* request获取参数
* get方式和post方式提交数据,后台获取参数不一样,想办法将get方式和post方式提交获取参数通用
* request.getParameter(String name) ————> String value
* request.getParamerterName() ————> Enurmation ————> Iterator:迭代器
*/
public class RequestDemo4 extends HttpServlet {
// 默认执行get提交方式
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// get方式和post方式获取参数数据是完全不同的
// get方式获取参数数据:
// public String getQureyString()
// http://localhost:8080/testMethod.html?username=xxx&password
// get方式和post方式通用获取参数数据的方法
// 通过表单的name参数值——>获取表单的内容
String username = request.getParameter("username");
String password = request.getParameter("password");
// tomcat以下的版本:遇到参数中文的,获取参数需要手动解码
System.out.println(username+"&"+password);
System.out.println("----------------------------------");
// 方式2
// 获取的所哟参数名称
Enumeration<String> enums = request.getParameterNames();
while(enums.hasMoreElements()) {
String paramName = enums.nextElement();
// 通过参数名称获取参数值
String paramValue = request.getParameter(String.valueOf(paramName));
System.out.println(paramName+" = "+paramValue);
}
System.out.println("----------------------------------");
// 方式3:获取所有的参数对象
// key(参数名称),value:如果只有一个参数:value[0]
Map<String,String[]> parameterMap = request.getParameterMap();
// map集合的遍历
// 1.entrySet():获取当前map集合中的所有的键值对的对象
// 2.keySet():获取所有的键——>遍历
// 1) entrySet()
Set<Map.Entry<String,String[]>> entrySet = parameterMap.entrySet();
for (Map.Entry<String,String[]> entry:entrySet) {
// 通过键值对对象获取所有的键和值
String name = entry.getKey();
String[] value = entry.getValue();
System.out.println(name+" = "+value[0]);
}
System.out.println("----------------------------------");
// 方式4:通过获取参数:获取一个参数(对应多个值)
String[] hobits = request.getParameterValues("hobit");
// 先判断在使用
if (hobits != null) {
for (String hobit:hobits) {
System.out.println("hobit = "+hobit);
}
}
}
// 默认执行post提交
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// post方式手动解码
request.setCharacterEncoding("utf-8");
// Enumeration enums = request.getParameterNames();
// while(enums.hasMoreElements()) {
// String paramName = enums.nextElement();
// // 通过参数名称获取参数值
// java.lang.String paramValue = request.getParameter(java.lang.String.valueOf(paramName));
// // 如果参数对应有多个值,默认获取第一个值
// System.out.println(paramName+" = "+paramValue);
// }
// System.out.println("----------------------------------");
// 一般在doPost方法将doGet方法复用
doGet(request,response);
}
}