码迷,mamicode.com
首页 > 其他好文 > 详细

Servlet 及 请求转发与重定向

时间:2018-02-10 00:04:54      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:接收   pattern   编写   启动   str   send   对象   std   context   

Servlet

Java编写的服务器端程序,处理客户端的http请求并将其结果发送到客户端。

Servlet容器Tomcat
最熟悉的是容器就是tomcat。在tomcat中,server-包含-service-包含-connector+container+other

最核心的组件:

Connector接收TCP请求,创建responserequest对象,分配线程给container处理

Containerservlet容器,责任链模式的子容器:engine--host--Context--wrapper

一个wrapper负责一个servlet,装载,初始化,执行,回收

Context是运行servlet基本环境,功能是管理里面的servlet实例。一个Context对应一个web工程。

生命周期:Lifecycle接口控制,最高组件是server,所以server.startup;server.shutdown;

ServletFilterListener

一个应用的初始化入口是web.xml,首先需要将其中各个配置项属性设置到Context容器中,包括servletfilterlistener

Servlet

方法:init();如果不设置load-on-startup,则在被调用之后才初始化

service();参数:ServletRequestServletResponse:描述一次请求和响应的类,作用是在服务器收到请求后,将请求穿过容器传递给servlet处理。我们创建自己的servlet类是经常使用的HttpServletRequest继承于它。

destroy();

如何找到正确的servlet(即wrapper容器)并且执行它?

Tomcat7中,由一个http.mapper类管理,它保存了所有子容器信息。

mapper类为什么可以保存所有子容器信息?

mapperListener类作为一个监听者加到每个子容器中。

Filter:拦截 请求和响应发送到servlet之前被调用

方法:

init();容器启动后即初始化

doFilter();参数:ServletRequestServletResponseFilterChain

destroy()

<servlet-mapping><filter-mapping>中都有<url-pattern>配置项,servlet-mapping中以url配置,filter-mapping中以url或者servlet名称配置。

Listener:监听 1.生命周期的变化  2.属性的变化

Servlet的请求转发与重定向:

Servlet可以将发送给自己的某个请求转发给另外一个url地址,这个地址可以是htmljspservlet等。

1. 转发,forward()

request.getRequestDispatcher (/url"). forward(request, response);//转发到url

转发在服务器端完成,浏览器并不知道这个操作,浏览器的地址栏不改变,并且转发和转发到的界面可以共享request里的数据。

2. 重定向,sendRedirect()

response.sendRedirect(request.getContextPath()+/url"); //重定向到url,客户端第二次发送请求会直接请求服务器根目录,所以需要getContextPath得到当前容器目录

服务器返回一个重定向路径,客户端重新发出请求,浏览器的地址栏改变,request中的变量全部失效,两个界面不能共享数据。


Servlet 及 请求转发与重定向

标签:接收   pattern   编写   启动   str   send   对象   std   context   

原文地址:http://blog.51cto.com/13580976/2070811

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!