pageContext, request,session,application 对象都有这些方法,称为域对象

Object getAttribute(String name)

Enumeration getAttributeNames()

removeAttribute(String name)

void setAttribute(String name,Object o)

pageContext:属性的作用范围仅限于当前JSP页面

request:仅限于同一个请求

session:限于一次会话(浏览器打开直到关闭是一次会话)

application:属性的作用范围限于当前web应用。只要在一处设置属性,在其他各处的JSP或Servlet中都可以获取到


请求的转发和重定向:

1.区别:请求的转发只发出了一次请求,而重定向则发出了两次请求

//转发:地址栏为/forwardServletimportjava.io.IOException;importjavax.servlet.RequestDispatcher;importjavax.servlet.ServletException;importjavax.servlet.annotation.WebServlet;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;/***ServletimplementationclassForwardServlet*/@WebServlet("/forwardServlet")publicclassForwardServletextendsHttpServlet{privatestaticfinallongserialVersionUID=1L;/***@seeHttpServlet#doGet(HttpServletRequestrequest,HttpServletResponseresponse)*/protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{//TODOAuto-generatedmethodstubresponse.getWriter().append("Servedat:").append(request.getContextPath());//请求的转发//1.调用HttpServletRequest的getRequestDispatcher()方法获取RequestDispatcher对象//调用getRequestDispatcher()需要传入要转发的地址Stringpath="testServlet";RequestDispatcherrequestDispatcher=request.getRequestDispatcher("/"+path);//2.调用HttpServletRequest的forward(request,response)进行请求的转发requestDispatcher.forward(request,response);}}//重定向:地址栏为testServletimportjava.io.IOException;importjavax.servlet.ServletException;importjavax.servlet.annotation.WebServlet;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;/***ServletimplementationclassRedirectServlet*/@WebServlet("/redirectServlet")publicclassRedirectServletextendsHttpServlet{privatestaticfinallongserialVersionUID=1L;/***@seeHttpServlet#doGet(HttpServletRequestrequest,HttpServletResponseresponse)*/protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{//TODOAuto-generatedmethodstubresponse.getWriter().append("Servedat:").append(request.getContextPath());//执行请求的重定向,直接调用response.sendRedirect(path)方法,path为重定向的地址Stringpath="testServlet";response.sendRedirect(path);}/***@seeHttpServlet#doPost(HttpServletRequestrequest,HttpServletResponseresponse)*/protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{//TODOAuto-generatedmethodstubdoGet(request,response);}}

在最终的Servlet中,转发的request对象和中转的那个request是同一个对象,重定向的则不是。

转发:/ 代表的是当前web应用的根目录;重定向:代表的是当前web站点的根目录