servlet运行机制、Request内置对象和服务器端跳转

时间:2023-01-21 17:35:25

servlet运行机制:

  当发送一个请求到服务器的时候,容器(Tomcat)会判断该路径属于哪一个 Servlet 进行处理,Servlet 有一个抽象父类“HttpServlet”,这个类是一个模板设计模式的类,其中service 方法是一个模板方法。当接受到请求之后容器会自动调用父类的 service() 方法。

  一个servlet 需要继承“HttpServlet” ,这个类是一个抽象类但是没有抽象方法,当用户发送请求的时候容器调用对应的 servletservlce() 这个模板方法,在该法中判断用户的请求是什么类型,根据类型来确定调用对应的方法(doXXX()方法)

  HttpServlet 是一个模板类,该类中的方法都有默认的实现,如果子类有新的需求就可以选择性的覆写指定的方法即可,这就是一个典型的模板设计模式。

Request内置对象:

  所谓的内置对象就是已经创建好的对象(容器创建的),我们可以直接使用的对象,那么在容器中如果接受到一个用户的请求则会自动创建一个对象来处理客户端发送的一些信息,这个对象就是内置对象,该对象的类型是“javax.servlet.http.HttpServletRequest”,名称就是request,其实在调用 service 方法的时候容器会自动传递该对象给方法。

  既然该内置对象包含了用户发送的一些信息,则可以使用对应的方法将这些信息取得。

Cookie[ ] getCookies(); //取得客户传递的 cookie 信息

String getHeader(String var1); //取得请求头信息,根据请求头名称取得对应的值

Enumeration<String> getHeaderNames(); //按照枚举的方式取得所有的请求头信息

String getMethod();  //取得请求的方式

String getPathInfo(); //取得额外路径,在DEMO去解释

String  getContextPath();  //取得当前项目的根路径

String getQueryString();  //取得 url 地址?后面的内容(参数)

String getRequestURI();  //取得 url 地址

String getServletPath();  //取得Servlet 的映射路径(就是在 web.xml 文件中配置的映射路径)

HttpSession getSession();  //取得sessionn 内置对象

服务器端跳转:

  服务器端跳转又叫做服务器端转发还可以还可以叫做服务端重定向,在大部分的开发中从用户发送请求到看到数据会经历如下的过程:

1、用户发送请求到服务器。

2、服务器会将请求交给对应的控制器(目前是Servlet)处理,在控制器中调用业务层方法取得数据。

3、之后将取得数据保存到request 内置对象。

4、然后在跳转到页面将保存在 request 内置对象中的数据再次取出来之后显示到页面(用户看到信息)。