1.1. ServletContext是Servlet上下文对象,该接口中也有这样的方法
-void setAttribute(String name,Object o)//向ServletContext中添加数据
-Object getAttribute(String name);//从servletContext范围中读取数据
-void removeAttribute(String name)//移除ServletContext范围中的数据
ServletContext是怎样的一个范围?
所有用户共享的一个范围对象,我们一般把servletContext变量命名为:application
可见这个对象代表一个应用,一个webapp只有这样的对象,范围及大;
1.2 . HttpServletRequest接口中常用的方法
-String getParameter(String name)
-Map getParameterMap();
-Enumeration getParameterNames();
-String[] getParameterValues(String name)
-Sting getContextPath()//获取webapp的根路径
-String getMethod()//获取浏览器请求方式
-String getRequestURI()//获取请求的URI
-StringBuffer getRequestURL()//获取请求的URL
-Stirng getRemoteAddr() //获取客户端ip地址
-String getServletPath()//获取servletpath
-void setAttribute(String name,Object o)//向request范围中添加数据
-Object getAttribute(String name);//从request范围中获取数据
-void removeAttribute(String name)//移除request范围中的数据
-RequestDispatcher getRequestDispatcher(String path)//获取请求转发器,让转发器对象指向某个资源
重点: 转发代码:request.getRequestDispatcher("/b").forward(request, response);
-void setCharacterEncoding(String env)
-Cookie[]getCookies()讲Cookiie的时候讲
-HttpSession getSession()讲session的时候讲
1.3. httpServletRequest是一个怎样的范围?
HttpServletRequest类型的变量通常命名为:request, 代表当前的本次请求,
一次请求对应一个request对象,100个请求对应100个请求对象;
请求范围很小,request只能完成同一次请求中传递数据。
案例如下:
AServlet
public class AServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//创建user对象
User user=new User();
user.setUsercode("111");
user.setUsername("zhangsan");
//将User对象存储到request对象中
request.setAttribute("userObj", user);
//从request范围中取出数据
// Object obj=request.getAttribute("userObj");
// response.getWriter().print(obj);
//跳转
//执行完AServlet之后,跳转到BServlet执行,将AServlet和BServlet放到同一次请求当中
//必须使用转发技术
//forward[转发]
//获取请求转发器
// RequestDispatcher dispatcher=request.getRequestDispatcher("/b");
// //调用请求转发器的forward方法即可完成转发
// dispatcher.forward(request, response);
//转发[转发是一次请求]
request.getRequestDispatcher("/b").forward(request, response);
}
}
BServlet
public class BServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
Object obj=request.getAttribute("userObj");
response.getWriter().print(obj);
}
}