servlet基础是什么


servlet基础是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Servlet是在服务器上运行的一个小程序,一个servlet就是一个java类,并且可以通过“请求-响应”编程模型来访问的这个驻留在服务器内存里的servlet程序。如下图所示: 比如说浏览器去访问部署在tomcat中的项目,既然是访问,总得有一个访问地址,而且访问后要处理的事情处理完了也需要将该返回的东西给到浏览器,那么这个地址是怎么样的呢?或者说这个请求是谁处理的呢?这里就需要使用到servlet的了,也就是servlet是用来接收浏览器的请求并且最后将结果返回的那一道处理程序。servlet是javaWeb的三大组件之一,另外两个是Filter(拦截器),Listener(监听器)tomcat的容器分为四个等级,分别是container容器->engine容器->host(也就是主机容器)->servlet容器,等级是从大到小,也就是前面的容器时包含后面的容器,servlet容器管理context容器,一个context(上下文)对应一个web工程自定义的类,该类有三种实现方式方式一就是编写一个类之后去实现Servlet接口(必须重写该接口里面所有的抽象方法)方式二就是编写一个类继承GenericServlet抽象类(重写生命周期的service方法),GenericServlet抽象类实现了Servlet接口,还实现了GenericConfig接口,GenericServlet其实是定义的一个一般的、与协议无关的servlet。方式三就是编写一个类去继承HttpServlet抽象类(没有抽象方法,根据页面的提交方式重写doGet或者doPost方法),HttpServlet这是基于http协议的,也是使用的最多的。如果是继承HttpServlet抽象类就需要重写doGet()或者doPost()方法,这里取决于使用哪种方式提交,get请求就重写doGet,post请求就重写doPost(但是需要注意的是并不是只有这两种提交方式,还有put,delele请求)。这里只是重写doGet或者doPost方法是因为即使重写service方法,但是service方法里面也是调用的doGet或者doPost方法,所以不需要重写service方法至于为什么不重写doPut或doDelete等方法,是因为最常用的是doPost和doGet,而且使用doPost方法也能实现doDelet和doPut请求的功能,所以也是没有必要。在web.xml中注册servlet,主要配置的是servlet和servlet-mapping标签后面的url-pattern其实是我们配置的访问路径,比如这里配置的是/hello,那么在访问的时候就需要是http://ip:端口/项目名/hello, 这样就可以对应到这里的url-pattern,然后通过servlet-mapping里面的servlet-name找到与之匹配的servlet标签里面的servlet-name,这样就可以找到servlet标签里面的servlet-class(也就是请求的处理类)。第一种方式就是直接new一个servlet(这里建立的方式其实是实现HttpServlet抽象类) 第二种则是在创建类的时候实现Servlet接口 如果使用第一种方式建立的servlet显示没有导包或者第二种方式时搜索servlet没有结果则说明是没有添加Servlet-api.jar包。 添加方式有两步:在eclipse中配置tomcat 在window->perference中添加 第二步就是添加将tomcat添加到运行环境 添加方式是选中项目右键打开Properties->java Bulid path->Libraries->Add Libraries->Server Runtime,选择tomcat服务器即可。参考文章主要是三个方法 init->service->destory当servlet被第一次访问的时候init会被调用,说明servlt的实例默认情况下是第一次访问的时候被创建的。(但是可以自己修改),该实例只会被创建一次。说明servlet的实例是单例的。service方法是只要有请求就会被调用当服务器关闭时destory方法会被调用上面已经说过在默认情况下,servlet实例是在第一次访问的时候被创建的,也就是说即使tomcat服务器已经启动了,但是只要没有请求过来那么servlet实例还是不会被创建,不过这一点是可以自己修改的,可以在web.xml中修改:需要注意的是load-on-startup这个标签的值必须是大于等于0的整数,所有添加了该标签的servlet,都会在tomcat启动时创建,该元素的值是一个序号,tomcat会使用这个序号给多个servlet排序,然后在tomcat启动时会按照这个顺序来创建servlet的实例对象。load-on-startup元素标记容器是否在启动的时候就加载这个servlet(实例化并调用其init()方法)。它的值必须是一个整数,表示servlet应该被载入的顺序当值为0或者大于0时,表示容器在应用启动时就加载并初始化这个servlet;当值小于0或者没有指定时,则表示容器在该servlet被选择时才会去加载。正数的值越小,该servlet的优先级越高,应用启动时就越先加载。当值相同时,容器就会自己选择顺序来加载。在使用HttpServlet时会有两个init方法,其中一个含有ServletConfig参数,ServletConfig主要有四个方法,其中有两个方法是获取初始化参数的:分别是getInitParameter和getInitParameterNames上面讲到ServletConfig中有两个方法是获取初始化参数的,那么什么是初始化参数呢?其实就是在servlet标签中的init-param标签里面配置的值:上面的配置文件中在servlet标签里面配置了两个init-param,里面配置的就是初始化参数。(这里只是示例,初始化参数一般在框架中使用的比较多)上面的代码就是在init方法里面通过servletConfig对象获取配置的参数。关于url-pattern路径匹配有三种方式:完全路径匹配 以/开头 比如 /aaa /aaa/bbb目录匹配 以/开头 比如 /a 香港云主机aa/* /*扩展名匹配 不能以 /开头 例如 *.do, *.action优先级:完全路径匹配>目录匹配>扩展名匹配web容器在启动时,它会为每一个 web容器应用程序创建一个对应的servletContext对象,它代表当前web应用由于一个web应用中所有的servlet公用一个servletContext对象,因此servlet对象之间可以通过servletContext对象来实现通讯,servletContext对象通常被称为context域对象。既然servletContext是全局的一个对象,那么就可以配置全局的参数,之前在servlet标签里面配置过init-param,但是那里面的参数只是针对那一个servlet有用,如果想要所有的servlet都可以用,那么就需要配置在servletContext中:从上面的配置文件中可以看到在context-param中配置的就是全局的servletContext中的值,然后在ServletContext对象中获取,该对象可以从ServletConfig中得到,当然也可以从父类的getServletContext方法中直接获取:看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注开发云行业资讯频道,感谢您对开发云的支持。

相关推荐: 笔记本电脑关机蓝屏怎么办

这篇文章主要介绍笔记本电脑关机蓝屏怎么办,文中介绍的非常详细 香港云主机,具有一定的参考价值,感兴趣的小伙伴们一定要看完!首先右键点击桌面计算机图标,选择属性,然后在弹出的窗口中,点击左侧的“高级系统设置”。此时在弹出的系统属性窗口中,切换到高级选项卡,点击启…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 08/12 12:35
下一篇 08/12 12:36

相关推荐