栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

servlet 的原理以及应用,没有多难

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

servlet 的原理以及应用,没有多难

大家好,今天分享一下 servlet 的原理

可以看这个(如果从流程的角度上去解释)

或者这个

看的懂哪个看哪个

如果是从代码实现的角度上

servlet的核心就是在服务器端创建用户请求的对象

我在下面使用大白话讲一遍

用户通过浏览器访问网站

首先使用浏览器向网站的服务器发送http 请求

服务器使用servlet引擎来处理请求,然后会选择响应的servlet 来响应这个请求,并且将响应的结果交给浏览器

servlet 引擎访问servlet的过程分为两种情况

  1. 第一次访问

servlet 引擎创建servlet实例,之后定义servlet init 方法对servlet进行初始化,再调用servlet的service 方法来响应用户请求

2… 第二次访问

再次访问的时候,servlet引擎会自动检查servlet是否已经存在,如果存在,就直接调用servtice法来响应用户请求,不需要再进行初始化

servlet引擎在调用service方法之前,会创建request的请求对象以及response响应对象,service方法会读取request 请求信息,处理service请求,并将处理结果响应到响应对象response中

这就是service方法要做的工作,servlet引擎会将响应对象response中存放的信息通过浏览器发送给用户

在它的整个过程当中,有4 个生命周期

还有关于servlet 的位置层次的理解

接着上次的再来







    
        hi

        ceshi.FirstServlet

    



    
         hi

        /hi
        
    








这是我们上次在web.xml 上写的代码

在这个里面,我们的注意点是


    
         hi

        /hi
        
    

这里的路径可以随便改的

第一个注意点就是

一个servlet可以映射一个地址(像这样)


    
         hi

        /hi
        
    

浏览器的处理结果:

http://localhost:8082/s01/ localhost 代表了我们自己的主机,8082 指的是我们tomcat服务器的端口(默认是8080 ,这是后改的)

s01 : 这是我们在使用idea 连接tomcat时自己配置的路径

这是servlet程序在浏览器上的结果(我们指定了一个映射路径)

同样,我们可以指定多个路径

我们添加了三个路径







    
        hi

        ceshi.FirstServlet

    



    
         hi

        /hi01
        
    

    
         hi
        
        /hi03
        
    
    
         hi
        
        /hi04
        
    







这是hi01的路径

这是hi03的路径

这是hi04的路径

在一个servlet当中, 映射路径不可以重复(就是不可以有两个一样的)

否则将会报错

对于这个路径,我们也可以使用通配符
它的意思就是: 让规定路径下的任何资源,都可以走这个servlet


    
         hi

        /hi01/*
        
    

后面直接写上123 可以的

写上帅哥(帅哥)也可以

它的意思就是: 让规定路径下的任何资源,都可以走这个servlet

路径就写一个通配符的结果 ,就会提到原先的默认主页

这个带着通配符的路径是默认的请求路径,它的优先级也很高

模拟404 报错的网络资源请求

自己随意写一个类 (见名之意就可以了)

package ceshi;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class ServletError extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
       // super.doGet(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doPost(req, resp);
    }
}

和上次一样

这就是一个完整的类

package ceshi;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

public class ServletError extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
       // super.doGet(req, resp);
        resp.setCharacterEncoding("utf-8");      //防止乱码
        resp.setContentType("text/html");      //文本类型
        PrintWriter writer = resp.getWriter();
        writer.print("404");     //这是浏览器当中用户可以看到的东西
        
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doPost(req, resp);
    }
}

同样,我们需要注册







    
        hi

        ceshi.FirstServlet

    



    
         hi

        /hi01
        
    

    
         hi
        
        /hi03
        
    
    
         hi
        
        /hi04
        
    


    
       error     

        ceshi.ServletError

    

    
        error   

        /*     

    







关于404 的注册


    
       error     

        ceshi.ServletError

    

    
        error   

        /*     

    

重启一下tomcat 服务器

后面怎么些都是对的,因为我们注册的时候使用了通配符

好了,有关于servlet 的原理以及应用就到这里了,谢谢大家

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/894900.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号