初识servlet

3.1Servlet简介

  • Servlet就是sun公司开发动态web的一门技术
  • Sun在这些APi中提供一个接口叫做:Servlet,如果你想开发一个Servlet程序,只需要完成两个小步骤:
  • 编写一个类,实现Serlet接口
  • 把开发好java类部署到web服务器中。

把实现了Servlet接口的Java程序叫做,Servlet

3.2HelloServlet

Serlvet接口Sun公司有两个默认的实现类:HttpServlet,GenericServled

  1. 构建一个普通的Maven项目,等理面的sc目录,以后我们的学习就在这个项目里面建立Moudel;这个空的工程就题Maven主工程;

  2. 关于Maven父子工程的理解;
    父项目中会有

      <modules>
              <module>servlet-01</module>
          </modules>
    

    子项目会有

        <parent>
            <artifactId>javaweb-02-servlet</artifactId>
            <groupId>com.kuang</groupId>
            <version>1.0-SNAPSHOT</version>
        </parent>
    

    父项目中的java子项目可以直接使用

    son extends father
    

    3.Maven环境优化

    1. 修改web.xml为最新的
    2. 将maven的结构搭建完整
      .

    4.编写一个Servlet程序

    1. 编写一个普通类

    2. 实现Servlet接口,这里我们直接继承HttpServlet

           public class HelloServlet extends HttpServlet {
      
               //由于get或者post只是请求实现的不同的方式,可以相互调用,业务逻辑都一样;
               @Override
               protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
                   //ServletOutputStream outputStream = resp.getOutputStream();
                   PrintWriter writer = resp.getWriter(); //响应流
                   writer.print("Hello,Serlvet");
               }
      
               @Override
               protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
                   doGet(req, resp);
               }
           }
      

    5.编写Servlet的映射
    为什么需要映射:我们写的是JAVA程序,但是要通过浏览器访问,而浏览器需要连接web服务器,所以我们需
    要再web服务中注册我们写的Servlet,还需给他一个浏览器能够访问的路径;

         <!--注册Servlet-->
          <servlet>
              <servlet-name>hello</servlet-name>
              <servlet-class>com.kuang.servlet.HelloServlet</servlet-class>
          </servlet>
          <!--Servlet的请求路径-->
          <servlet-mapping>
              <servlet-name>hello</servlet-name>
              <url-pattern>/hello</url-pattern>
          </servlet-mapping>
    

3.3Servlet原理

Servlet是由Web服务器调用,web服务器在收到浏览器请求之后,会:

  1. 一个Servlet可以指定一个映射路径

          <servlet-mapping>
              <servlet-name>hello</servlet-name>
              <url-pattern>/hello</url-pattern>
          </servlet-mapping>
    
  2. 一个servlet可以指定多个映射路径

          <servlet-mapping>
              <servlet-name>hello</servlet-name>
              <url-pattern>/hello</url-pattern>
          </servlet-mapping>
          <servlet-mapping>
              <servlet-name>hello</servlet-name>
              <url-pattern>/hello2</url-pattern>
          </servlet-mapping>
          <servlet-mapping>
              <servlet-name>hello</servlet-name>
              <url-pattern>/hello3</url-pattern>
          </servlet-mapping>
          <servlet-mapping>
              <servlet-name>hello</servlet-name>
              <url-pattern>/hello4</url-pattern>
          </servlet-mapping>
          <servlet-mapping>
              <servlet-name>hello</servlet-name>
              <url-pattern>/hello5</url-pattern>
          </servlet-mapping>
    
  3. 一个servlet可以指定通用映射路径

          <servlet-mapping>
              <servlet-name>hello</servlet-name>
              <url-pattern>/hello/*</url-pattern>
          </servlet-mapping>
    
  4. 默认请求路径

           <!--默认请求路径-->
           <servlet-mapping>
               <servlet-name>hello</servlet-name>
               <url-pattern>/*</url-pattern>
           </servlet-mapping>
    
  5. 指定一些后缀或者前缀等等…

    
      <!--可以自定义后缀实现请求映射
          注意点,*前面不能加项目映射的路径
          hello/sajdlkajda.qinjiang
          -->
      <servlet-mapping>
          <servlet-name>hello</servlet-name>
          <url-pattern>*.qinjiang</url-pattern>
      </servlet-mapping>
    
  6. 优先级问题
    指定了固有的映射路径优先级最高,如果找不到就会走默认的处理请求;

      <!--404-->
      <servlet>
          <servlet-name>error</servlet-name>
          <servlet-class>com.kuang.servlet.ErrorServlet</servlet-class>
      </servlet>
      <servlet-mapping>
          <servlet-name>error</servlet-name>
          <url-pattern>/*</url-pattern>
      </servlet-mapping>
    
posted @ 2021-11-05 21:04  AlsosHleeu  阅读(40)  评论(0)    收藏  举报