(3)HttpServletRequest
HttpSereletRequest对象
请求信息的获取API,在下面的代码中有体现。
注意实体内容用doPost方法
什么方式请求就要用什么方法获取数据GET–doGet post—doPost
编程小问题:当每次修改完代码运行时,要在server中右击要运行的工程,reploy…下(重新部署工程)
<form action="/day10/RequestDemo" method="post">//action:设置表单信息发送存储的URL
用户名<input type="text" name="user" value=""/>
密码<input type="text" name="psw" value=""/>
<input type="submit" value="提交数据"/>
</form>
public class RequestDemo extends HttpServlet {
/*
*
* ①Tomcat服务器接收到浏览器发送的请求数据,然后封装到HttpServletRequest对象中
* 是服务器封装的对象,因为浏览器可能就不是用Java写的
* ②Tomcat服务器调用doGet方法,然后把request对象传入到servlet中
*
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//requestLine(request);
//请求头
//requestHeaders(request);
}
@Override//为了接收post提交的请求
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
InputStream in=req.getInputStream();
//字节流读出
byte [] buf=new byte[1024];
int len=0;
while((len=in.read(buf))!=-1)
{
System.out.println(new String(buf,0,len));
}
}
private void requestHeaders(HttpServletRequest request) {
System.out.println("请求访问的目标地址:"+request.getHeader("host"));//单独取一个消息头信息
//取所有的消息头信息
Enumeration<String> en=request.getHeaderNames();//获取所有的头键值对
while(en.hasMoreElements())
{
String key=en.nextElement();
System.out.println(key+":"+en.nextElement());
}
}
private void requestLine(HttpServletRequest request) {
//从request对象中取出请求数据
//请求行 格式:GET /day09/hello HTTP/1.1
System.out.println("请求方式:"+request.getMethod());
System.out.println("URI:"+request.getRequestURI());
System.out.println("URL:"+request.getRequestURL());
System.out.println("http协议版本:"+request.getProtocol());
}
}