
1.请求行: GET /request-demo/req1?username=zhangsan HTTP/1.1
String getMethod(): 获取请求方式 : GET
String getContextPath(): 获取虚拟目录(项目访问路径): /requset-demo
StringBuffer getRequsetURL() :获取URL(统一资源定位符):http://localhost:8080/requset-demo/req1
String getRequsetURL(): 获取URL(统一资源标识符) : /requset-demo/req1
String getQueryString(): 获取请求参数(GET方式):username=zhangsan&password=123
2.请求头:
String getHeader(String name): 根据请求头名称,获取值
3.请求体:POST
ServletInputStream getInputStream(): 获取字节输入流
BufferedReader getReader(): 获取字符输入流
4.post或get调用相互的方法 this.doPost(req.resp)
Map
String[] getParameterValues(String name) : 根据名称获取参数值(数组)
String getParamter(String name): 根据名称获取参数值(单个值)
req.setCharactorEncoding("UTF-8")
- package com.itheima.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("/demo5")
- public class ServletDemo5 extends HttpServlet {
- @Override
- protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- req.setCharacterEncoding("UTF-8");
- System.out.println("哈哈哈"+req.getParameter("username"));
- }
- }
通用方法get/post: new String(username.getBytes("ISO-8859-1"),"UTF-8")
- package com.itheima.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;
- import java.nio.charset.StandardCharsets;
-
- @WebServlet("/demo6")
- public class ServletDemo6 extends HttpServlet {
- @Override
- protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- String regStr = new String(req.getParameter("username").getBytes("ISO-8859-1"), "UTF-8");
- System.out.println("哈哈哈"+regStr);
- }
- }
实现方式:req.getRequsetDispatcher("资源B路径").forward(req,resp);
请求转发资源间共享数据:使用Requset对象
Void setAttribute(String name,Object o): c存储数据到requset域中
Object getAttribute(String name):根据key,获取值
void removeAttribute(String name):根据Key,删除该键值对
- @WebServlet("/demo7")
- public class ServletDemo7 extends HttpServlet {
- @Override
- protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- System.out.println("demo7");
-
- //存储数据
- req.setAttribute("msg","hello");
-
- //请求转发
- req.getRequestDispatcher("/demo8").forward(req,resp);
- }
- }
- @WebServlet("/demo8")
- public class ServletDemo8 extends HttpServlet {
- @Override
- protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- System.out.println("demo8");
-
- //获取数据
- System.out.println("demo8"+req.getAttribute("msg"));
- }
- }
相应行:HTTP/1.1 200 OK
响应头:Content-Type:text/html
响应体:
实现方式一:resp.setStatus(302) resp.setHeader("Location","资源B的路径")
简化:resp.sendRedirect("资源B的路径")
- @WebServlet("/demo9")
- public class ServletDemo9 extends HttpServlet {
- @Override
- protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- System.out.println("demo9");
- //方式一
- // resp.setStatus(302);
- // resp.setHeader("Location","/web-demo/demo1");
- //简化
- resp.sendRedirect("/web-demo/demo1");
- }
- }
明确路径谁使用?
1.浏览器使用:需要加虚拟目录(项目访问路径)
2.服务端使用:不需要加虚拟目录
练习: