谈谈Servlet

Servlet是一个寄存在服务器端的小程序,必须依赖于服务器才能运行,用于在页面和数据库之间桥梁。主要功能在于交互式地浏览和生成数据,生成动态Web内容。本文主要讲解servlet的作用,相关对象等内容

一、servlet的执行流程

  理解servlet执行流程就是理解浏览器请求和服务器响应的过程,浏览器发出请求,服务器接收到请求并创建servlet对象,把该请求交给servlet处理,处理完  后将结果返回给浏览器,具体步骤:

二、HttpServletResponse接口

 这个接口用于封装servlet处理后的响应,而响应中又分为响应头,响应行,响应空行,响应体。响应行中包含协议版本号,状态码和状态信息。

  1、设置响应行中的信息:setStatus(int sc)该方法用于设置响应状态码,例如response.setStatus(404),则当这个servlet执行时无论代码中是否有其他的页    面,最终都会跳转到404页面(资源未找到),查看网页的响应信息,会发现响应行为404,当然还有其他状态码,不过这个方法一般用于设置能成功跳  转的  状态码

  2、SendError( int I ,String str);该方法用于在响应行中设置响应的具体信息。

  对响应头进行设置,主要有两大类方法:以add开头的addHeader(),addIntHeader()等等;以set开头的setHeader(),setIntHeader()等等,他们的区别在于   add方法中可以对一个属性进行多次赋值,不会覆盖,而set方法则会覆盖,值显示最后的一个值。这其中比较常用的属性有Accept-Ranges,适用于下载,  告  诉浏览器是否支持断点下载。常用属性还有如下:

三、HttpServletRequest接口

  与响应相对的是,请求中也是有请求行,请求头,请求空行,请求体

  

四、ServletContext对象

  ServletContext对象表示web应用程序,在每个web应用程序中,有且只有一个ServletContext对象

  获取ServletContext对象有两种方法:通过ServletConfig接口获取,它提供了方法 getServletContext();通过继承的HttpServlet类的父类  GenericServlet获取, GenericServlet类 提供了方法getServletContext();

  ServletContext对象的作用:1、作为ServletContext域对象,存储数据;

                2、获取应用程序初始化参数

                3、获取web应用程序任意资源的绝对路径

五、ServletConfig对象

  它是servlet的配置对象,并且每一个servlet对象都有一个ServletConfig对象,在servlet的配置文件中,可以使用<init-param>标签去为s   Servlet进行初始化

  原理:当servlet配置了初始化参数之后,web容器在创建servlet实例对象时,会自动将这些初始化参数封装到ServletConfig对象中,并在  调用servlet的init方法时,将ServletConfig对象传递给Servlet。所以,可以通过Servlet对象可以得到当前servlet的初始化参数信息。

  通过该对象,

    我们可以获取servlet的名字:getServletName();

    获取Servlet的初始化参数, String getInitParameter("键名");

    获取ServletContext对象 ,getServletContext() 返回Servlet上下文对象, 代表当前的web应用项目

六、servlet的转发与重定向

  转发与重定向其实都是属于跳转,跳转到下一个页面,但是这两种方式是有区别的。

  首先这两种行为的动作发出者不同,转发是由服务器来执行,而重定向则是由浏览器来执行。

  其次,转发是浏览器只发送一次请求,请求头中的地址始终不变;而重定向则是浏览器发送两次或两次以上的请求,并且地址是会发生改  变的。

  重定向适用于跳转时不需要携带参数的,例如登录完后跳转到首页(此时地址发生改变了,由登录页面的地址转到了注册页面的地址);  转发则适用于需要携带参数的情况,例如注册失败后再跳转回注册页面(此时地址并没有发生改变)

  重定向:response.sendRedirect(request.getContextPath()+"/html/login.jsp");

  转发:request.getRequestDispatcher("/html/register").forward(request, response);

七、ServletContext和ServletConfig的区别

  1、ServletConfig的作用域只是自己的那一个Servlet、而ServletContext的作用局是所有的Servlet

  2、ServletConfig只能获取自己的初始化参数,而ServletContext可以获取参数,但是参数配置和ServletConfig是不一样的,并且这个参数是全Servlet共享  的。

  3、ServletConfig因为作用域太小不能set值,而ServletContext可以设置自定义的值供全局使用。

猜你喜欢

转载自www.cnblogs.com/WAXX-JML/p/11865384.html