ServletContext和HttpServleRequset

10 ServletContext
1)是一个接口
2)表示servlet上下文对象
3)一个工程只有一个它的实例 在web工程里启动的时候创建 在web工程停止的时候销毁
4)是一个域对象 这里的域是整个web项目 工程
域对象:可以像map一样存取数据的对象 可以添加非基本类型的数据
域:存取数据的操作范围
存:setAttribute 取:getAttribute 删除:removeAttribute

11
ServletContext作用:
1)获取web.xml中配置的上下文参数 context-param
ServletContext context=getServletConfig().getServletContext();//获取方式1
ServletContext context1=getServletContext();//获取方式2
System.out.println(context.getInitParameter("id")); getInitParameter获取初始化参数
System.out.println(context.getInitParameter("username"));
2)获取当前的工程路径 格式: /工程路径
System.out.println(context.getContextPath());
3)获取工程部署在服务器硬盘上的绝对路径 映射到idea代码的web目录 此时如果你想找到图片 就/图片对应的文件夹 以此类推
System.out.println(context.getRealPath("/"));
4)像map一样存取数据
context1.setAttribute("w","hy");
System.out.println("context1"+context1.getAttribute("w"));

因为一个工程只有一个context对象 因此 在context1中存入后
另一个程序如context2也可以访问这个存的键值对 但是呢 如果 我们启动服务器后
直接执行context2 而context2访问的是context1所存入的数据 而context1没有运行 则此时会输出null
只有运行context1后 context2才会输出值 看 10的第3)条


12HttpServleRequset类:
1)作用:每次只要有请求进入服务器 服务器就会把请求过来的hTTP协议信息解析好
并封装到Request对象里 然后传递到service方法(doGet和doPost)让我们使用
可以通过它获取到所有请求的信息 (tomcat创建的 使用完就销毁了)

12.1 常用方法
i. getRequestURI() 获取请求的资源路径
ii.getRequestURL() 获取请求的统一资源定位符(绝对路径) 就是连服务器的ip port都返回了
iii. getRemoteHost() 获取客户端的 ip 地址
idea中 使用localhost访问是127.0.0.1 使用127.0.0.1访问 还是127.0.0.1 使用真实ip访问是真实ip
iv.getHeader() 获取请求头
v. getParameter() 获取请求的参数 如form表单的输入的密码 用户名
vi. getParameterValues() 获取请求的参数(多个值的时候使用) 对于例如多选框 就用它
vii. getMethod() 获取请求的方式 GET 或 POST
viii. setAttribute(key, value); 设置域数据
ix.getAttribute(key); 获取域数据
x. getRequestDispatcher() 获取请求转发对象

12.2 注意事项:
由于post请求得到的中文·数据会导致乱码 所以我们需要在dopost里设置请求的字符集
而且必须在获取数据之前执行才有效
request.setCharacterEncoding("utf-8");


13 请求的转发:服务器接受到请求后 从一个资源跳转到另一个资源 (看图和代码)

14 base标签:设置当前页面中所有相当路径工作时 参照给定的路径来进行跳转 而不是按照浏览器中的目录进行跳转
html页面中: head里 一般写在title下 <base href="http://localhost:8080/Servlet_02/web/a">

ServletContext和HttpServleRequset

上一篇:HttpClient实现https调用


下一篇:分享237个Html模板总有一个适合你