Servlet 上下文

 运行在JAVA虚拟机中的每一个WEB应用程序都有一个与之相关的Servlet上下文。JAVA Servlet API提供了一个ServletContext接口表示上下文。Servlet可以用这个接口中的方法与Servlet容器进行通信,例如:得到文件的MIME类型,转发请求,或者向日志文件写入日志信息。

       ServletContext对象是WEB服务器中的一个已知路径的根。例如Servlet上下文被定位到http://localhost:8080/ch02。以/ch02请求路径(上下文路径)开始的所有请求被发送到与此ServletContext关联的WEB应用程序。

       Servlet容器在Web应用程序加载时创建ServletContext对象,ServletContext对象可以被Web应用程序中所有的Servlet所访问。

请求转发

       在Web应用中,Servlet可以用于转发请求,Servlet充当调度员角色,也叫控制器,可以用来将请求转发(request dispatching)给另一个Servlet或JSP页面,甚至是静态HTML页面,然后由它们处理并产生对请求的响应。要完成请求转发,就要用到javax.servlet.RequestDispatcher接口。

       RequestDispatcher对象由Servlet容器创建,用于封装一个由路径所标识的服务器资源。利用RequestDispatcher对象可以把请求转发给其他Servlet或JSP页面。

       void forward(ServletRequest request,

               ServletResponse response)

             throws ServletException,

                 java.io.IOException

       此方法用于将请求从一个Servlet传递给服务器端另一个Servlet,JSP或html文件。将请求传递给其他资源来输出响应。注意:这个方法必须在响应被提交给客户端之前调用,否则将抛出IllegalStateException。在forward方法调用后,原先的响应内容如果没有提交,将被自动清除。

       void include(ServletRequest request,

               ServletResponse response)

             throws ServletException,

                 java.io.IOException

       include方法和forward方法区别在于:调用include方法将请求传递给其他Servlet,被调用的Servlet对该请求做出响应并入到原先的响应对象中,原先的Servlet还可以继续输出响应信息,而利用forward方法将请求转发给其他的Servlet,将由被调用的Servlet负责对请求做出响应,而原先的Servlet的执行则终止。

sendRedirect()和forward()方法区别

         调用sendRedirect()方法实际是告诉浏览器Servlet2所在位置,让浏览器重新访问Servlet2.,在调用此方法时,会在响应中设置Location响应报头。这个过程对浏览器是透明的,浏览器会自动完成新的访问。可以在浏览器地址栏里看到显示的URL是重定向的URL。

       调用forward()方法对浏览器也是透明的,浏览器不知道服务器已经把Servlet1换成了Servlet2,它只知道发出了一个请求,获得了一个响应。可以在浏览器地址栏里看到,显示的URL始终是Servlet1的URL。

       sendRedirect()方法和forward()方法还有一个区别。即使sendRedirect()不但可以在位于同一台主机上的Web应用程序之间进行重定向,而且可以将客户端重定向到其他服务器上的Web应用程序资源上。

       运行在JAVA虚拟机中的每一个WEB应用程序都有一个与之相关的Servlet上下文。JAVA Servlet API提供了一个ServletContext接口表示上下文。Servlet可以用这个接口中的方法与Servlet容器进行通信,例如:得到文件的MIME类型,转发请求,或者向日志文件写入日志信息。

       ServletContext对象是WEB服务器中的一个已知路径的根。例如Servlet上下文被定位到http://localhost:8080/ch02。以/ch02请求路径(上下文路径)开始的所有请求被发送到与此ServletContext关联的WEB应用程序。

       Servlet容器在Web应用程序加载时创建ServletContext对象,ServletContext对象可以被Web应用程序中所有的Servlet所访问。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值