JavaWeb学习--三、Servlet01

Servlet

1、简介

- servlet是sun公司开发动态web的技术
  • sun在这些API中提供一个借口叫做servlet,如果想开发一个servlet程序,需要两个步骤
    • 编写一个类,实现servlet借口
    • 吧编写好的java类部署到web服务器中

把实现了Servlet接口的java程序叫做servlet

2、HelloServlet

servlet遭sun公司有两个默认实现类:HttpServlet,GenericServlet

  1. 构建一个maven项目,删掉src目录,以后就在这个项目里面建立moudle,这个空的工程就是主工程

  2. 关于maven父子工程的理解

    父项目中会有

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

    子项目中会有

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

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

  3. maven环境优化

    1. 修改web.xml为最新的

      <?xml version="1.0" encoding="utf-8" ?>
      <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                                   http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
               version="4.0"
               metadata-complete="true">
      
      
      </web-app>
      
      
    2. 将maven结构搭建完整

    3. 编写一个Servlet程序

      1. 编写一个普通类

      2. 实现servlet接口,集成HttpServlet

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

    为什么要映射:我们写的是java程序,但通过浏览器访问,而浏览器需要连接web服务器,所以我们需要在web服务中注册我们写的servlet,还需要给他一个浏览器可以访问的路径

    <!--注册servlet-->
    <servlet>
        <servlet-name>hello</servlet-name>
        <servlet-class>com.kuang.servlet.HelloServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>
    
    
    1. 配置tomcat

    ​ 要配置项目发布路径

3、servlet原理

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

在这里插入图片描述

4、mapping

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

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

  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>*.xxx</url-pattern>
    </servlet-mapping>
    
    1. 优先级问题

    指定了固有的映射路径优先级最高,如果找不到就会走默认的处理请求;

<!--注册servlet-->
<servlet>
    <servlet-name>hello</servlet-name>
    <servlet-class>com.kuang.servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>hello</servlet-name>
    <url-pattern>/hello</url-pattern>
</servlet-mapping>


<!--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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值