HttpServletRequest 类有什么作用
每次只要有请求进入 Tomcat服务器, Tomcat 服务器就会把请求过来的 HTTP 协议信息解析好封装到 Request 对象中. 然后传递到 service 方法 (doGet 和 doPost) 中给我们使用, 我们可以通过 HttpServletRequest 对象, 获取到所有请求的信息.
HttpServletRequest 类的常用方法
- getRequestURI() 获取请求的资源路径
- getRequestURL() 获取请求的同意资源定位符(绝对路径)
- getRemoteHost() 获取客户端 ip 地址
- getHeader 获取请求头
- getParameter() 获取请求的参数
- getParameterValues() 获取请求的参数(多个值的时候使用)
- getMethod() 获取请求的方式 GET 或 POST
- setAttribute(key, value); 设置域数据
- getAttribute(key); 获取域数据
- getRequestDispatcher(); 获取请求转发对象
public class ParameterServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("doGet....");
//获取请求的参数
String username = req.getParameter("username");
String password = req.getParameter("password");
String[] hobbies = req.getParameterValues("hobby");
System.out.println("用户名:" + username + "\n密码:" + password + "\n兴趣爱好:" + Arrays.asList(hobbies));
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//设置请求体的字符集为 UTF-8 ,从而解决post请求的中文乱码问题
req.setCharacterEncoding("UTF-8");
System.out.println("doPost...");
//获取请求的参数
String username = req.getParameter("username");
String password = req.getParameter("password");
String[] hobbies = req.getParameterValues("hobby");
System.out.println("用户名:" + username + "\n密码:" + password + "\n兴趣爱好:" + Arrays.asList(hobbies));
}
}
请求的转发
什么是请求的转发?
- 请求转发是指, 服务器收到请求后, 从第一次资源跳转到另一个资源的操作叫做请求转发.
public class Servlet1 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("key1","柜台1");
// servlet2 怎么走
// RequestDispatcher requestDispatcher = req.getRequestDispatcher("/servlet2");
RequestDispatcher requestDispatcher = req.getRequestDispatcher("/WEB-INF/form.html");
//RequestDispatcher requestDispatcher = req.getRequestDispatcher("http://www.baidu.com");
//走向servlet2
requestDispatcher.forward(req,resp);
}
}
public class Servlet2 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String username = req.getParameter("username");
System.out.println("在servlet1中 查看参数 : " + username);
//查看 servlet1 是否盖章
Object key1 = req.getAttribute("key1");
System.out.println("柜台1是否有章: " + key1);
//处理自己的业务
System.out.println("处理自己的业务...");
}
}
base 标签的作用