常用方法:
- getRequestURI() 获取请求的资源路径
- getRequestURL() 获取统一资源定位符(绝对路径)
- getRemoteHost() 获取客户端的ip地址
- 使用localhost访问,得到的客户端ip地址是===>127.0.0.1
- 使用127.0.0.1访问,得到的客户端ip地址是===>127.0.0.1
- 使用真实ip访问,得到的客户端ip地址是===>真实的客户端ip
- getHeader() 获取请求头
- getMethod() 获取请求的方式GET或POST
public class ParameterServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//获取请求参数
String username = req.getParameter("username");
String password = req.getParameter("password");
String[] hobby = req.getParameterValues("hobby");
System.out.println("用户名:"+username);
System.out.println("密码:"+password);
System.out.println("兴趣:"+ Arrays.toString(hobby));
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("UTF-8");
System.out.println("-----------------------post--------------------");
//获取请求参数
String username = req.getParameter("username");
String password = req.getParameter("password");
String[] hobby = req.getParameterValues("hobby");
System.out.println("用户名:"+username);
System.out.println("密码:"+password);
System.out.println("兴趣:"+ Arrays.toString(hobby));
}
}
请求的转发
什么是请求的转发?
请求转发是指:服务器收到请求后,从一个资源跳转到另一个资源的操作,叫请求转发。
模拟请求转发:
public class Servelt1 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//获取请求的参数
String username = req.getParameter("username");
System.out.println("在servlet1中查看参数:"+username);
//传递至servlet2
req.setAttribute("key","servlet1的证明");
//问路:servlet2怎么走
/**
* 请求转发必须以斜杠打头,斜杠表示:http://ip:port/工程名/ 映射到IDEA代码的web目录
*/
RequestDispatcher requestDispatcher = req.getRequestDispatcher("/servlet2");
requestDispatcher.forward(req,resp);
}
}
public class Servelt2 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//获取请求的参数(办事的材料)查看
String username = req.getParameter("username");
System.out.println("在servlet2中查看参数:"+username);
//查看有servlet1的证明
Object key1 = req.getAttribute("key");
System.out.println("是否有证明:"+key1);
//servlet2处理自己的业务
System.out.println("servlet2处理自己的业务");
}
}
请求转发的特点:
- 浏览器地址栏没有变化
- 他们是依次请求
- 他们共享Request域中的数据
- 可以转发到WEB-INF目录下
- 不能访问工程以外的资源