后台学习之---ServletContext学习
来源:互联网 发布:淘宝c店手机端图片尺寸 编辑:程序博客网 时间:2024/06/05 11:10
ServletContext五大作用
- 获取web的上下文路径
- java.lang.String getContextPath()
- 获取全局参数
- 和域对象相关
- 请求转发
- 读取web项目的资源文件
1. 获取web的上下文路径介绍
/** * java.lang.String getContextPath() * 获取web上下文路径:项目在tomcat服务器中的运行路径 */ //1.1 获取servletContext对象 ServletContext servletContext = this.getServletContext(); //1.2 获取路径 String path = servletContext.getContextPath(); //1.3 打印出路径 response.getWriter().write(path); //结果是 :/day09(项目在tomcat服务器中的运行路径,不是项目开发时的路径) //简单使用场景:避免硬编码,获取路径更加灵活,请求重定向: //response.sendRedirect("/day09/index.jsp"); response.sendRedirect(servletContext.getContextPath()+"index.jsp");
2. 获取全局参数
首先在项目的WEB-INF的web.xml中配置全局参数
(是在servlet配置的外层,web-app的根目录下)
在该网站下所有的servlet都可以获得该参数,servletConfig则只能访问自己的,从参数配置的位置就可以看出来。
<!-- 全局参数配置 --> <context-param> <param-name>AAA</param-name> <param-value>aaa</param-value> </context-param> <context-param> <param-name>BBB</param-name> <param-value>bbb</param-value> </context-param>
参数加载过程:
- tomcat服务器会把整个web.xml文件信息封装到sevletContext中。
- 在init方法中会接收该对象
- 通过getServletContext()方法得到该对象
获取方法
//得到指定参数 String initParameter = getServletContext().getInitParameter("AAA"); System.out.println(initParameter); //得到所有参数 Enumeration<String> initParameterNames = getServletContext().getInitParameterNames(); while(initParameterNames.hasMoreElements()){ String name = (String) initParameterNames.nextElement(); String value = getServletContext().getInitParameter(name); System.out.println(name+"---"+value); }
域对象
什么是域对象:
域对象是用来共享数据,保存数据,获取数据用的
ServletContext就是一个域对象。
(servlet有三个域对象 HttpServletRequest,HttpSession)
/** * 把数据存到ServletContext域对象 */ ServletContext context = this.getServletContext(); context.setAttribute("name", "yangqing");
/** * 从ServletContext域对象中取出数据 */ ServletContext context = this.getServletContext(); String name = (String) context.getAttribute("name"); }
4. 请求转发
ServletContext context = this.getServletContext(); RequestDispatcher dispatcher = context.getRequestDispatcher("/index.jsp"); dispatcher.forward(request, response);
Servlet中请求转发和重定向的区别:
* 请求转发 getRequestDispatcher("/index.jsp"); * 1 地址栏地址不会发生改变 * 2 只能转发到该项目的资源 * 3 浏览器向服务器发出一次请求,可以使用请求作为域对象来进行数据传递。* 重定向 response.sendRedirect("/day09/index.jsp"); * 1 地址栏发生变化,变成重定向后的地址 * 2 可以跳转到其他项目的资源 * 3 浏览器想服务器发出两次请求,那么不能使用请求来作为域对象来传递数据。
Servlet中请求转发和重定向执行过程:
读取web项目的资源文件
第一种:/** * getRealPath 获取资源文件的真是路径 * 不能使用绝对路径 */ String realPath = this.getServletContext().getRealPath("/WEB-INF/classes/aa.properties"); System.out.println(realPath);第二种: /** * getResourceAsStream 获取资源文件的输入流 */ InputStream asStream = this.getServletContext().getResourceAsStream("/WEB-INF/classes/aa.properties");第三种: /** * getResource(); 获取资源文件的URL */ URL url = this.getServletContext().getResource("/WEB-INF/classes/aa.properties");
0 0
- 后台学习之---ServletContext学习
- Servlet学习之八ServletContext
- 学习ServletContext
- ServletContext学习
- J2EE学习开始之 ServletContext与ServletConfig
- Servlet技术之ServletContext接口(学习笔记)
- 学习笔记:ServletContext接口
- ServletContext的学习
- ServletContext学习总结
- servlet学习笔记---servletContext
- Web后端学习之——Java ServletContext 详解
- ServletContext与ServletConfig对比学习
- 转载 servletContext内容的学习
- 学习笔记,javaWeb中的servletContext
- 20160410servlet学习笔记servletContext
- 六、ServletContext和ServletConfig学习
- java_web 学习记录(五):ServletContext
- DevExpress学习之ASPxGridView后台增加列
- cpu cache line 原理
- 欢迎使用CSDN-markdown编辑器
- Golang1.7动态库的使用,C和Golang的动态库以及使用
- 一致性哈希算法(consistent hashing)
- BZOJ - 1609/USACO - Feb08 Silver Eating Together 麻烦的聚餐 重庆一中高2018级竞赛班第九次测试 2016.9.10 Problem 2
- 后台学习之---ServletContext学习
- 设计模式——观察者模式(C++)
- 时钟一:51单片机用替换的方法在数码管上显示时钟
- jdbc连接mysql数据库出现中文乱码需要注意的问题
- 多重部分和
- linux ubuntu samba 服务器
- CSDN写博客添加代码两种方法
- FFmpeg浅尝辄止(一)——工欲善其事,必先利其器
- effective stl 第12条: 切勿对STL容器的线程安全性有不切实际的依赖