Servlet2

Servlet2

HttPServletRequest 类

这个类的作用:
每次只要有请求进入 Tomcat 服务器,Tomcat 服务器会把请求过来的 HTTP 协议信息解析好封装到 Request 对象 中。传递到 service 方法(doGet 和 doPost)中给我们使用。我们可以通过 HttpServletRequest 对象,获取到所 有请求的信息。

HttpServletRequest 类的常用方法

  1. getRequestURI( ) 获取请求的资源路径
  2. getRequestURL( ) 获取请求的统一资源定位符(绝对路径)
  3. getRemoteHost( ) 获取客户端的ip地址
  4. getHeader( ) 获取请求头
  5. getParameter( ) 获取请求的参数
  6. getParameterValues( ) 获取请求的参数(多个值的时候使用)
  7. getMethod( ) 获取请求的方式(GET或POST)
  8. setAttribute( key , value ) 设置域数据
  9. getAttribute( key , value ) 获取域数据
  10. getRequestDispatcher( ) 获取请求转发对象
package eighteven;

import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;

public class RequestAPIServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //getRequestURI( )			获取请求的资源路径
        System.out.println("URI = >" + req.getRequestURI());
        //getRequestURL( )            获取请求的统一资源定位符(绝对路径)
        System.out.println("URL = >" + req.getRequestURL());
        //getRemoteHost( )     获取客户端的ip地址
        System.out.println("客户端ip地址为" + req.getRemoteHost());
        //getHeader( )             获取请求头
        System.out.println("请求头user_Agent为:"+ req.getHeader("user-Agent"));
        //getMethod( )              获取请求的方式(GET或POST)
        System.out.println("请求方式为:" + req.getMethod());


    }
}
package eighteven;

import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;

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.getParameter("hobby");
        System.out.println("用户名为:" + username + "密码是:" + password + "爱好:" + hobby);
    }
}

解决doPost中获取中文参数乱码

req.setCharacterEncoding("UTF-8");

请求的转发

什么是请求的转发?
请求转发是指,服务器收到请求后,从一次资源跳转到另一个服务器资源的操作叫请求转发。

请求转发:

//请求转发必须要以斜杠打头     斜杠表示地址为  http://ip:port/工程名/ ,  映射到IDEA代码的Web目录
RequestDispatcher requestdispatcher =  req.getRequestDispatcher("/servlet2");
//走向servlet2
requestdispathcer.forward(req,resp);

base 标签的作用

base标签可以设置当前页面中所有相对路径工作时,参照哪个路径来进行跳转

web 中 / 的不同意义

/ 被浏览器解析,得到的地址是:http://ip:port/

​ 被服务器解析,得到的地址是:http://ip:port/工程路径

HttpServletResponse 类

作用:
HttpServletResponse 类 和 HttpServletRequest 类一样。每次请求进来,Tomcat服务器都会创建一个 Response对手传递给 Servlet 程序去使用。HttpServletRequest 表示请求过来的信息,HttpServletResponse 表示所有响应的信息,我们如果设置返回给客户端的信息,都可以通过 HttpServletResponse 对象来进行设置

两个输出流的说明
字节流 getOutputStream( ) 常用于下载(传递二进制数据)
字符流 getWriter( ) 常用于回传字符串(常用)

如何往客户端回传数据

package eighteven;

import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;
import java.io.PrintWriter;

public class ParameterServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        PrintWriter writer = resp.getWriter();
        writer.write("response content!!");
    }
}

可通过设置响应头,设置浏览器也使用UTF-8字符集

resp.setHeader("Content-Type","text/html;charset=UTF-8");

请求重定向

请求重定向,是指客户端给服务器发请求,然后服务器告诉客户端说:我给你一些地址,你去新地址访问。叫请求重定向。

重定向不会共享 Request 中的数据
并且可以访问工程外的资源

package eighteven;

import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;
import java.io.PrintWriter;

public class ParameterServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("到此一游");
        //设置响应状态码302
        resp.setStatus(302);
        //设置响应头
        resp.setHeader("Location","http://localhost:8080/Dongtai_war_exploded/response2");
    }
}





package eighteven;

import jakarta.servlet.Servlet;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;

public class response2 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setCharacterEncoding("UTF-8");
        resp.setHeader("Content-Type","text/html;charset=UTF-8");
        resp.getWriter().write("收到收到over!!!");
    }
}

请求重定向第二种方法(推荐使用)

resp.sendRedirect("http//localhost:8080");
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值