Servlet 及 请求转发与重定向

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Servlet 及 请求转发与重定向相关的知识,希望对你有一定的参考价值。

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 及 请求转发与重定向的主要内容,如果未能解决你的问题,请参考以下文章

Servlet到Servlet的请求转发与重定向的区别

java web005——请求转发与重定向

servlet转发与重定向

servlet转发与重定向区别

servlet之转发与重定向的区别

idea创建简单web项目分析Servlet的请求转发与重定向的区别