400 028 6601

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

servlet基础是什么

servlet基础是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

为武强等地区用户提供了全套网页设计制作服务,及武强网站建设行业解决方案。主营业务为成都网站设计、网站建设、武强网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

什么是servlet

Servlet是在服务器上运行的一个小程序,一个servlet就是一个java类,并且可以通过“请求-响应”编程模型来访问的这个驻留在服务器内存里的servlet程序。如下图所示: servlet基础是什么

比如说浏览器去访问部署在tomcat中的项目,既然是访问,总得有一个访问地址,而且访问后要处理的事情处理完了也需要将该返回的东西给到浏览器,那么这个地址是怎么样的呢?或者说这个请求是谁处理的呢?这里就需要使用到servlet的了,也就是servlet是用来接收浏览器的请求并且最后将结果返回的那一道处理程序。

servlet是javaWeb的三大组件之一,另外两个是Filter(拦截器),Listener(监听器)

tomcat容器等级

tomcat的容器分为四个等级,分别是container容器->engine容器->host(也就是主机容器)->servlet容器,等级是从大到小,也就是前面的容器时包含后面的容器,servlet容器管理context容器,一个context(上下文)对应一个web工程

编写一个简单的servlet的步骤

eclipse中创建一个servlet

添加servl-api.jar包

如果使用第一种方式建立的servlet显示没有导包或者第二种方式时搜索servlet没有结果则说明是没有添加Servlet-api.jar包。 添加方式有两步:

在idea中创建一个servlet

参考文章

servlet的生命周期

从方法层面上看

主要是三个方法 init->service->destory

当tomcat启动时创建servlet实例

上面已经说过在默认情况下,servlet实例是在第一次访问的时候被创建的,也就是说即使tomcat服务器已经启动了,但是只要没有请求过来那么servlet实例还是不会被创建,不过这一点是可以自己修改的,可以在web.xml中修改:


    
    ServletDemo
    
    servletPackage.ServletDemo
    1

需要注意的是load-on-startup这个标签的值必须是大于等于0的整数,所有添加了该标签的servlet,都会在tomcat启动时创建,该元素的值是一个序号,tomcat会使用这个序号给多个servlet排序,然后在tomcat启动时会按照这个顺序来创建servlet的实例对象。

ServletConfig

在使用HttpServlet时会有两个init方法,其中一个含有ServletConfig参数,ServletConfig主要有四个方法,其中有两个方法是获取初始化参数的:分别是getInitParameter和getInitParameterNames

String getServletName();
ServletContext getServletContext();
String getInitParameter(String var1);
Enumeration getInitParameterNames();

初始化参数

上面讲到ServletConfig中有两个方法是获取初始化参数的,那么什么是初始化参数呢?其实就是在servlet标签中的init-param标签里面配置的值:


    
    ServletDemo
    
    servletPackage.ServletDemo
    
        username
        1341234
    
    
        password
        helloworldnas
    
    1

上面的配置文件中在servlet标签里面配置了两个init-param,里面配置的就是初始化参数。(这里只是示例,初始化参数一般在框架中使用的比较多)

获取初始化参数

@Override
public void init(ServletConfig config) throws ServletException {
    String username = config.getInitParameter("username");
    String password = config.getInitParameter("password");
    System.out.println(username + "," + password);
    super.init(config);
}

上面的代码就是在init方法里面通过servletConfig对象获取配置的参数。

servlet路径匹配

关于url-pattern路径匹配有三种方式:

  1. 完全路径匹配 以/开头 比如 /aaa /aaa/bbb

  2. 目录匹配 以/开头 比如 /aaa/* /*

  3. 扩展名匹配 不能以 /开头 例如 *.do, *.action

优先级:完全路径匹配>目录匹配>扩展名匹配

servletContext

既然servletContext是全局的一个对象,那么就可以配置全局的参数,之前在servlet标签里面配置过init-param,但是那里面的参数只是针对那一个servlet有用,如果想要所有的servlet都可以用,那么就需要配置在servletContext中:


    username
    13412432



    
    ServletDemo
    
    servletPackage.ServletDemo
    
        username
        1341234
    
    
        password
        helloworldnas
    
    1

从上面的配置文件中可以看到在context-param中配置的就是全局的servletContext中的值,然后在ServletContext对象中获取,该对象可以从ServletConfig中得到,当然也可以从父类的getServletContext方法中直接获取:

public void init(ServletConfig config) throws ServletException {
    ServletContext servletContext = config.getServletContext();
    String username = servletContext.getInitParameter("username");
    System.out.println(username);
    super.init(config);
}

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注创新互联行业资讯频道,感谢您对创新互联的支持。


分享名称:servlet基础是什么
本文来源:http://mbwzsj.com/article/jespji.html

其他资讯

让你的专属顾问为你服务