请求对象,响应对象

1  HttpServletRequest

HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求中的所有信息都封装在这个对象中,通过这个对象提供的方法,可以获得客户端请求的所有信息。

1.1 获取请求行信息

getMethod()            |   获取请求方式

getRequestURL()   |  获取完整路径

getRequestURI()    |  获取除了域名或者IP部分的路径

getServletPath()     |  获取Servlet路径。

getContextPath()    |  获取虚拟目录

getQueryString() |获取参数,键=值,即?号后面的部分。 |name=%E5%BC%A0%E4%B8%89&age=18  

getProtocol()           |   获取协议及版本。

getRemoteAddr()    |   返回IP地址。

public class Main extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("UTF-8");
        //获取请求方式
        System.out.println(req.getMethod());
        //获取完整路径
        System.out.println(req.getRequestURL());
        //获取除了域名或者IP部分的路径(接口路径+根路径)
        System.out.println(req.getRequestURI());
        //获取虚拟目录(根路径)
        System.out.println(req.getContextPath());
        //获取参数
        System.out.println(req.getQueryString());
        //返回IP地址
        System.out.println(req.getRemoteAddr());
    }

获取参数的方法

        //获取参数的方法
        String name1 = req.getParameter("name");
        System.out.println(name1);
        String age1 = req.getParameter("age");
        System.out.println(age1);

1.2  获取请求头信息

req.getHeader()

          //获取请求头信息
        String cookie = req.getHeader("Cookie");
        System.out.println(cookie);
        String accept = req.getHeader("Accept");
        System.out.println(accept);

迭代器

   Enumeration<String> headerNames = req.getHeaderNames();
        //判断迭代器是否还有元素
        while(headerNames.hasMoreElements()){
            //拿到元素并且下标往后移动一位
            String name = headerNames.nextElement();
            String value = req.getHeader("name");
            System.out.println(name + "," + value);
        }

1.3  获取请求体信息

请求体主要包含前端发送给后端的数据(参数)。

对于GET请求, 一般不需要请求体, 因为GET参数直接体现在URL上。

对于POST请求, 需要请求体, 请求体里保存POST参数。

方法名:

 BufferedReader getReader()  | 获取字符输入流,只能操作字符数据。

     //字符输入流
     BufferedReader reader = req.getReader();
     //传参类型:x-www-from-urienxoded 可以把请求体里的参数拼接在一起,形成一个字符串
     System.out.println(reader.readLine());
     //传参类型 from-data reader 不是很适用,因为他是用来获取字符流的

ServletInputStream  getInputStream() | 获取字节输入流,可以操作所有类型的数据(文件上传)。

        ServletInputStream inputStream = req.getInputStream();
        byte[] bytes = new byte[1024];
        int num = -1;
        String str = "";
         //可以使用OutPutStream把字节数组保存到本地上,形成上传文件的接口
        while ((num = inputStream.read(bytes)) != -1){
            str += new String(bytes,0,num);
        }
        System.out.println(str);

String getParameter(String name) | 根据参数名获取参数值,get、post通用。

1.4 请求转发

一种服务器内部资源跳转的方法,servlet之间的跳转。(可以理解为函数之间的互相调用)

        //设置目标+转发
        req.getRequestDispatcher("/s05").forward(req,resp);

1.4.1 使用步骤

   通过request请求对象获取请求转发器对象。

   通过RequestDispatcher对象进行转发。

   request.getRequestDispatcher("转发路径").forward(request, response)

1.4.2  特点

   浏览器地址路径不发生变化。

   转发是一次请求。

   只能转发到服务器内部资源。

1.4.3  共享数据

请求转发中涉及到的多个servlet,可以共享数据。

   setAttribute(String name, Object object) // 存储数据

   getAttribute(String name) // 通过键获取数据

   removeAttribute(String name) // 通过键移除数据

2.HttpServletResponse

当客户端通过HTTP协议访问服务器时,如果服务器要给客户端一些相响应的信息,就可以使用HttpServletResponse提供的方法进行设置。

2.1方法

1. void setStatus(int sc) //设置响应状态码

2. void setHeader(String name,String value) //  设置一个带有给定的名称和值的Header

        resp.setHeader("nanme","zhangsan");//张三不能是中文
        resp.setHeader("age","18");

3. void setContentType(String type) // 设置被发送到客户端的响应的内容类型

4. PrintWriter getWriter() // 用于往 `body` 中写入文本格式数据响应状态码:服务器告诉客户端浏览器本次请求响应的一个状态,都是三位数。

响应状态码

服务器告诉客户端浏览器本次请求响应的一个状态,都是三位数。

1. 1xx:服务器接收客户端消息,但是没有接收完成,等待一段时间后,发送1xx状态码

2. 2xx:成功,200

3. 3xx:重定向。302重定向,304访问缓存

4. 4xx:客户端错误。404找不到后端地址,401缺少权限,403权限认证失败

5. 5xx:服务器端错误。500服务器内部错误

2.2 重定向

特点:

1. 地址栏发生变化。

2. 重定向是两次请求,不能使用request对象来共享数据。

3. 重定向可以访问其他站点的资源。

resp.sendRedirect("http://www.baidu.com");

3. ServletContext

ServletContext官方叫Servlet上下文。服务器会为每一个工程创建一个ServletContext对象。这个对象全局唯一,工程内所有的servlet都共享这个对象。所以叫全局应用程序共享对象。

 3.1 获取方式

1. req.getServletContext()

ServletContext ctx = req.getServletContext();

2. this.getServletContext()

3.2 核心方法

 setAttribute(name, value) // 添加数据 

 getArrtibute(name) // 获取数据 

 removeAttribute(name) // 删除数据 

3.3 获取MIME类型

String filename = "a.jpg";

String mimeType = context.getMimeType(filename);

System.out.println(mimeType);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值