一、Request流程
package cn.itcast.web.servlet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("*.do")
public class ServletDemo4 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("demo4---");
System.out.println(req);
}
}
结果如下:
二、request对象功能
获取请求消息数据
获取请求行数据:GET/day_03/demo1?name = zhangsan HTTP/1.1
方法:
获取请求方式:GET
String getMethod()
获取虚拟目录: /day_03(重点)
String getContextPath()
获取Servlet路径:/demo1
String getServletPath()
获取get方式请求参数:name=zhangsan
String getQueryString()
获取请求的URI :/day_03/demo1(重点)
String getRequestURI(): /day_03/demo1
StringBuffer getRequestURL(): http://localhost/day_03/demo1
获取协议以及版本:HTTP/1.1
String getProtocal()
获取客户机的IP地址:
String getRemoteAddr
以下为具体操作实现:
此处插入一个问题:idea新建目录下没有create new servlet
解决:点击file->project structure-> Facts
选中你要在哪个Web项目中新建servlet,将Source Roots勾上(我的一开始是勾上的,但是没有servlet,于是我取消勾选后又重选了,就可以了)
结果如下:
package cn.itcast.web.servlet.request;
/*
* 演示Request对象获取请求行数据
*/
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet( "/RequestDemo1")
public class RequestDemo1 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 1、获取请求方式
String method = request.getMethod();
System.out.println(method);
// 2、获取虚拟目录
String contextPath = request.getContextPath();
System.out.println(contextPath);
// 3、获取Servlet路径 :
String servletPath = request.getServletPath();
System.out.println(servletPath);
// 4、获取get方式的请求参数
String queryString = request.getQueryString();
System.out.println(queryString);
// 5、获取请求URL
String requestURI = request.getRequestURI();
StringBuffer requestURL = request.getRequestURL();
System.out.println(requestURI);
System.out.println(requestURL);
// 6、协议
String protocol = request.getProtocol();
System.out.println(protocol);
// 7、获取用户IP地址
String remoteAddr = request.getRemoteAddr();
System.out.println(remoteAddr);
}
}
测试结果:
还可以RequestDemo1?name=zhangsan&age = 14
关于URL和URI
URL:统一资源定位符:http://localhost/day_04/demo1(范围比URI小)
URI:统一资源标志符 day_04/demo1