• Servlet---请求的分发处理、HttpServlet实现程序、IDEA创建Servlet程序、Servlet继承体系


    前言

    (113条消息) Servlet基础详细版--手动实现Servlet(idea)_我爱布朗熊的博客-CSDN博客

    接着上面链接继续

    目录

    一、请求的分发处理

    1.GET

    2.POST

    3.在service方法中辨别GET请求和POST请求

    二、通过继承HttpServlet实现Servlet程序

    三、使用IDEA创建Servlet程序(这种方式更快更好用)

    三、Servlet类的继承体系


    一、请求的分发处理

       获取请求的方式、做判断、做处理(三步)

       1.GET

    在webapp包下创建A.html程序(如果放在WEB-INF下回出现错误) 

    1. <body>
    2. <form action="http://localhost:8080//web_Tomcat_war_exploded/hello" method="get">
    3. <input type="submit">
    4. form>
    5. body>

    运行项目,然后进入到A.html页面之下

     点击提交,控制台会出现下面的现象

        第一次点击提交查询时,会运行构造方法,初始方法以及service方法,以后若在点击提交查询按钮时,仅仅运行service方法

    2.POST

    1. <form action="http://localhost:8080//web_Tomcat_war_exploded/hello" method="post">
    2. <input type="submit">
    3. form>

      其他操作和GET操作一样

    我们发现效果也和GET一样

    3.在service方法中辨别GET请求和POST请求

       既然GET请求和POST请求都会运行service方法,那我们怎么辨别呢?

    1. /**
    2. * service方法专门用来处理请求和响应的
    3. * @param servletRequest
    4. * @param servletResponse
    5. * @throws ServletException
    6. * @throws IOException
    7. */
    8. @Override
    9. public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
    10. System.out.println("3 service方法");
    11. // 将类型强转换(因为他有getMethod方法)
    12. HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
    13. // 获取请求的方式
    14. String method = httpServletRequest.getMethod();
    15. System.out.println(method);
    16. if("GET".equals(method)){
    17. System.out.println("处理GET请求");
    18. }else if("POST".equals(method)){
    19. System.out.println("处理POST请求");
    20. }
    21. }

      通过上面getMethod()方法我们便可以区别开GET请求和POST请求,但是上面那个代码后续不好维护,我们可以再修改的不臃肿一点。

       将GET处理和POST处理分别写成一个方法。

    1. /**
    2. * service方法专门用来处理请求和响应的
    3. * @param servletRequest
    4. * @param servletResponse
    5. * @throws ServletException
    6. * @throws IOException
    7. */
    8. @Override
    9. public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
    10. System.out.println("3 service方法");
    11. // 将类型强转换(因为他有getMethod方法)
    12. HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
    13. // 获取请求的方式
    14. String method = httpServletRequest.getMethod();
    15. System.out.println(method);
    16. if("GET".equals(method)){
    17. doGet();
    18. }else if("POST".equals(method)){
    19. doPOST();
    20. }
    21. }
    22. // 处理GET请求
    23. public void doGet(){
    24. System.out.println("处理GET请求");
    25. }
    26. // 处理POST请求
    27. public void doPOST(){
    28. System.out.println("处理POST请求");
    29. }

    二、通过继承HttpServlet实现Servlet程序

        这是从前实现Servlet程序的实现

    (113条消息) Servlet基础详细版--手动实现Servlet(idea)_我爱布朗熊的博客-CSDN博客

     一般在实际项目开发中,都是使用继承HttpServlet类的方式去实现Servlet程序

    1.编写一个类去继承HttpServlet类

    2.根据业务需要重写doGet或doPost方法

    3.到web.xml中配置Servlet程序的访问地址

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>Titletitle>
    6. head>
    7. <body>
    8. <form action="http://localhost:8080//web_Tomcat_war_exploded/hello2" method="post">
    9. <input type="submit">
    10. form>
    11. body>
    12. html>
    1. //Http这个类中已经将get请求和post请求分发好了
    2. public class Servlet extends HttpServlet {
    3. /**
    4. * doGet()在get请求的时候调用
    5. * @param req
    6. * @param resp
    7. * @throws ServletException
    8. * @throws IOException
    9. */
    10. @Override
    11. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    12. System.out.println("hello doGet方法");
    13. }
    14. /**
    15. * doPost()在post请求的时候调用
    16. * @param req
    17. * @param resp
    18. * @throws ServletException
    19. * @throws IOException
    20. */
    21. @Override
    22. protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    23. System.out.println("hello doPost方法");
    24. }
    25. }
    1. <servlet>
    2. <servlet-name>Servletservlet-name>
    3. <servlet-class>com.company.web_tomcat.Servletservlet-class>
    4. servlet>
    5. <servlet-mapping>
    6. <servlet-name>Servletservlet-name>
    7. <url-pattern>/hello2url-pattern>
    8. servlet-mapping>

    效果图

     

     

     

    三、使用IDEA创建Servlet程序(这种方式更快更好用)

    这种方式更快,直接帮我们生成

    下图中  New->Servlet   直接生成 

     选用非注解的形式创建

    1. <servlet>
    2. <servlet-name>Servlet3servlet-name>
    3. <servlet-class>com.company.web_tomcat.Servlet3servlet-class>
    4. servlet>
    5. <servlet-mapping>
    6. <servlet-name>Servlet3servlet-name>
    7. <url-pattern>/hello4url-pattern>
    8. servlet-mapping>

     

    测试

    1. <body>
    2. <form action="http://localhost:8080//web_Tomcat_war_exploded/hello4" method="post">
    3. <input type="submit">
    4. form>
    5. body>
    1. public class Servlet3 extends HttpServlet {
    2. @Override
    3. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    4. System.out.println("hello doGet");
    5. }
    6. @Override
    7. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    8. System.out.println("hello doPost");
    9. }
    10. }

     

    三、Servlet类的继承体系

     

  • 相关阅读:
    Python logging 模块详解
    Morris遍历
    zemax---艾里斑
    主干网络篇 | YOLOv8 更换主干网络之 VanillaNet |《华为方舟实验室最新成果》
    移动支付新时代——低代码如何对接支付宝和微信支付
    Swin_Unet & Trans_UNet & Unet & Deeplabv3网络推理时间对比
    第4章 漏洞扫描
    冒泡排序代码
    内蒙古科技大学计算机考研资料汇总
    钟汉良日记:百善孝为先,其它都靠边
  • 原文地址:https://blog.csdn.net/weixin_51351637/article/details/126210187