【JavaWeb】Servlet学习笔记-2

目录

一、Servlet原理

二、Servlet映射路径mapping的理解

三、用mapping通用地址简单处理404


一、Servlet原理

     

        1.客户端发送http请求(request)到web容器,之后web容器会产生两个对象Request和Response。

        2.调用Servlet的service(ServletRequest,ServletResponse )方法,将请求的信息对象Request作为参数传入。

        3.我们自己写的servlet类重写的doGet或者doPost方法就是接收传入的请求信息并处理,之后再将响应的信息交给Response。

        4.web容器通过读取Response对象获取响应信息再响应给客户端

二、Servlet映射路径mapping的理解

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


     <servlet-mapping>
        <servlet-name>HelloServlet</servlet-name>
        <url-pattern>/helloServlet</url-pattern>
    </servlet-mapping>

        2.一个Servlet还可以指定多个映射地址

    <servlet-mapping>
        <servlet-name>HelloServlet</servlet-name>
        <url-pattern>/helloServlet</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>HelloServlet</servlet-name>
        <url-pattern>/helloServlet1</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>HelloServlet</servlet-name>
        <url-pattern>/helloServlet2</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>HelloServlet</servlet-name>
        <url-pattern>/helloServlet3</url-pattern>
    </servlet-mapping>

        3.一个Servlet还可以指定通用映射路径

                ①:

    <servlet-mapping>
        <servlet-name>HelloServlet</servlet-name>
        <url-pattern>/helloServlet/*</url-pattern>
    </servlet-mapping>

        /*表示为/后面加任何地址都行

                ②:

    <servlet-mapping>
        <servlet-name>HelloServlet</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>

        此时运行TomCat不会打开默认的index.jsp页面,而是访问servlet程序(少用这种情况)。并且之后可以输入任何地址都会访问servlet程序。

        

        4.可以指定映射路径的后缀

                ①:

    <servlet-mapping>
        <servlet-name>HelloServlet</servlet-name>
        <url-pattern>*.flj</url-pattern>
    </servlet-mapping>

        注意:这里不能是/*.flj,不然会报错

三、用mapping通用地址简单处理404

        1.创建ErrorServlet类重写方法

public class ErrorServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //以html响应给客户端
        resp.setContentType("text/html");
        resp.setCharacterEncoding("utf-8");

        PrintWriter writer = resp.getWriter();
        writer.println("<h1>404<h1>");
    }
}

        2.在web.xml中使用通配符/*注册Servlet

    <!--注册servlet-->
    <servlet>
        <servlet-name>HelloServlet</servlet-name>
        <servlet-class>com.kuang.servlet.HelloServlet</servlet-class>
    </servlet>
    <!--servlet的映射路径-->
    <servlet-mapping>
        <servlet-name>HelloServlet</servlet-name>
        <url-pattern>/helloServlet</url-pattern>
    </servlet-mapping>
    
    <!--注册ErrorServlet-->
    <servlet>
        <servlet-name>ErrorServlet</servlet-name>
        <servlet-class>com.kuang.servlet.ErroeServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>ErrorServlet</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>

        注意:制定了固有的映射路径优先级最高,因此我们访问/helloServlet时不会访问ErrorServlet程序,而若是访问其他没有设置的映射地址则会访问ErrorServlet,不再是默认的404报错页面。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值