javaWeb-servlet

来源:互联网 发布:icc 文件 mac 编辑:程序博客网 时间:2024/06/06 08:59

1:servlet简介:

Servlet是在服务器上运行的小程序,servlet的主要功能在于交互式的浏览和修改数据,生成动态的web内容。

这个过程:

①:客户端发送请求至服务器端

②:服务器将请求信息发送至Servlket

③:Servlet生成响应内容并将其传给服务器,响应内容动态生成,通常取决于客户端的请求

④:服务器将响应返回给客户端


一个Servlet就是java中的一个类,它被用来拓展服务器的性能,服务器上驻留着可以通过”请求-响应“编程模型来访问的应用程序。虽然Servlet可以对任何类型的请求产生响应,但是通常只用来拓展web服务器的应用程序。


2:我们看一下tomcat给我们的servlet示例:

apache-tomcat-7.0.34\webapps\examples

启动tomcat----》访问localhsot:8080/examples

可以从示例中看出,serlvet其实就是一个普通的java类,只不过是继承了HttpServlet,需注意:HttpServlet是在java.servlet.api这个类下,所以需要单独引入servlet-api.jar包


3:我们在浏览器中输入一个路径后,是如何找到这个servlet的那?
     主要是在web.xml中,有如下配置:
简单的说就是当我们访问
http://localhost:8080/examples/servlets/servlet/HelloWorldExample
时,就会通过映射<url-pattern>这个映射找到响应的类。

4:servlet入门案例
①:idea新建一个web项目

②:创建一个HelloWorld类,并继承HttpServlet,并实现父类的方法

③:在web.xml中进行配置

④:访问http://localhost:8080/Helloworld,然后执行的是doget方法

总结:创建一个类,继承HttpServlet----》重写doGet或者(doPost)方法----》在web.xml中配置servelt即可。


5:servlet的体系结构和api详解

①:HttpServlet类

javax,servlet.http.HttpServlet类是一个抽象类,一般需要重写一下方法

doGet:如果servlet支持Http Get请求

doPost:用于Http Post请求

init和destory:用于管理servlet的生命周期内保存的资源

getServletInfo:提供自身servlet的相关信息

②:GenercServletd类

该类是HttpServlet的父类,也是一个抽象类,它主要处理一般的,与协议无关的servlet,所以如果需要编写Http协议请求,需要用HttpServlet

该类实现了servlet的接口,它定义了servlet所有必须实现的方法,所以也可以继承GenercServletd,但是不常见。

③:Servlet接口

a:定义了所有servlet必须实现的方法

b:servlet是运行在web服务器端的小型java程序,servlet通常通过HTTP(超文本传输协议)接受和响应来自web客户端的请求。

c:该接口定义了初始化Servlet的方法,为请求提供的服务的方法和从服务器移除Servlet的方法,这些方法称为生命周期的方法

      它们按照如下顺序调用:

                 ①:构造Servlet,然后用init方法将其初始化

                 ②:处理客户端的请求,调用service方法

                 ③:从服务器移除serlvet,用destory方法

                 ④:获取启动的信息,用getServletConfig方法

                 ⑤:获取servlet自身的信息,用getServletInfo方法

6:Servlet的生命周期

①:加载和实例化servlet,这个操作一般都是动态。然而server通常会提供一个管理者的选项,用于在服务器启动时强制装载和初始化特定的servlet

②:server创建第一个servlet的实例

③:第一次客户端的请求到达服务器

④:服务器调用Servlet的init方法(可配置为服务器创建Servlet实例时被调用,在web.xml中<servlet>标签下配置<load-on-startup>标签,配置的是整型,值越小,Servlet启动的优先级越高)

⑤:一个客户端的请求到达服务器,服务器就会实例化一个servlet实例

⑥:服务器分别创建一个请求对象(处理客户端请求)和响应对象(响应客户端请求)

⑦:服务器激活Servlet的service方法,传递请求和响应的参数

⑧:service()方法获取请求对象的信息,处理请求,访问资源,获取需要的信息

⑨:service()方法使用响应对象的方法,将响应传回server,最后到达客户端

对于更多的请求和响应,服务器回创建更多的请求和响应对象,仍然激活此Servlet的service方法,将这两个对象传递给对象的方法,然后重复上面的过程,但是无需调用init方法,一般Servlet只初始化一次*(只有一个对象),当服务器不需要Servlet的时候,服务器就会调用destory方法

总结:客户端请求该Servlet--》加载Servlet类到内存--->实例化该Servlet----》init()初始化参数----》service()---->destory()


7:URL-Pattern配置详解

a:我们创建servlet,如果想要访问到这个Servlet,那必须在web.xml中进行配置<url-pattern>标签才可以访问

b:<url-pattern>这个标签用于确定我们访问一个Servlet的路径

c:一个Servlet可以配置多个不同的url-pattern路径

d:自从Spring 3.0以后,可以在Servlet上加@WebServlet标签



8:客户端访问Servlet的路径问题

现阶段有多少中方式可以访问服务器的一个资源那?

a:在地址栏上直接输入url   b:超连接方式   c:通过表单提交的方式   d:通过js的location.href方法     e:通过js的window.open等等

不过以上方式只有表单提交才是post方式,别的都是get方式请求


9:Servlet容器和Servlet的关系

a:Servlet的非线程安全,action的线程安全

      因为对提交到同一个Servlet类的多个业务请求,共享一个Servlet对象(即这个Servlet类只能被实例化一次)

      通常对于同一个业务请求,只会有一个servlet实例被容器产生

      线程安全是对多个(线程)用户同时访问同一个对象(实例)的变量,引起线程安全问题,所以Servlet接收和处理,不处理属性。

      而action处理业务时,产生不同的对象,所以线程是安全的


10:ServletConfig的介绍和作用

      ServletConfig是javax.servlet包下的一个接口,它是由servlet容器(Tomcat)创建的,并封装了servlet的相关信息

      


原创粉丝点击