servlet context 和 servlet config
servletConfig
Servlet容器初始化一个servlet对象时,会为这个servlet对象创建一个servletConfig对象,该对象中包含了servlet的<init-param>初始化参数信息。Servlet容器在调用servlet对象的init(ServletConfig config)方法时,会把servletConfig对象当做参数传递给servlet对象。Init(ServletConfig config)方法中通过this.config=config将ServletConfig对象保存,之后在service方法中可以通过this.getServletConfig()获取该对象。如果要覆盖 init() 方法,应调用 super.init() 以确保该Servlet得到正确地初始化。
作用:将数据库信息、编码方式等配置信息放在web.xml中,以后修改时不需要修改源代码。
常用方法:
- String getServletName() ,获取当前Servlet在web.xml中配置的名字
- String getInitParameter(String name),获取当前Servlet指定名称的一个初始化参数的值
- Enumeration getInitParameterNames() ,获取当前Servlet所有初始化参数的名字组成的枚举
- ServletContext getServletContext() ,获取代表当前web应用的ServletContext对象
一般开发者创建的Servlet都继承HttpServlet,而HttpServlet是GenericServlet的子类。GenericServlet也实现了getInitParameter()方法,因此Servlet可以直接调用该方法去获取servlet的配置信息,不用通过ServletCofig对象。
ServletContext
容器启动后,会为每一个Web应用创建唯一的一个符合ServletContext接口要求的对象---servlet context。只要不关闭服务器或删除web应用,该servlet context就一直存在。
作用:Web应用范围内存取共享数据;访问web应用的资源文件;Servlet对象之间通过ServletContext对象来实现通讯;获取Servlet容器的相关信息;访问日志信息等。
GenericServlet/ServletConfig/HttpSession/FilterConfig都提供了getServletContext()方法获取ServletContext对象。
绑定数据时,在满足使用条件的情况下,优先使用生命周期短的,提高内存使用率:
request<session<Context
常用方法:
- getAttribute(String name) ,获取绑定在servlet context上的数据。
- getInitParameter(String name) ,获取<context-param>标签中为整个Web应用配置的初始化参数。
- getInitParameterNames() ,一次性获取<context-param>里所有的初始化参数名
- getRealPath(String path) ,获取应用程序内指定资源的绝对路径。
- getResource(String parh),path必须是/开头,代表当前web应用程序的根目录。返回一个代表某个资源的URL对象。
- getResoutceAsStream(String parh),可以使用相对于根目录的路径访问到web目录下的所有文件,而不必知道绝对路径,返回文件流。
//一次性获取Context里所有的初始化参数
Enumeration enumeration = context.getInitParameterNames();
while (enumeration.hasMoreElements()) {
String name = (String) enumeration.nextElement();
String value = context.getInitParameter(name);
System.out.println(name + ";" + value);
}
//通过ServletContext加载资源
ServletContext.getRealPath("/" ) //方法得到Web应用程序的根目录的绝对路径。
String path= this.getServletContext().getRealPath("config.properties");
Properties prop = new Properties(); // 注意导的包是import java.util.Properties;
prop.load(new FileReader(path));
常用概念区分:
- 请求参数 parameter:浏览器发送过来的请求中的参数信息
- 初始化参数 initparameter:在web.xml中为Servlet或ServletContext配置的初始化信息
- 域属性 attribute:四大作用域中存取的键值对
servlet context 和 servlet config的更多相关文章
- Spring Cloud ZooKeeper集成Feign的坑2,服务调用了一次后第二次调用就变成了500,错误:Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is com.n
错误如下: 2017-09-19 15:05:24.659 INFO 9986 --- [ main] s.c.a.AnnotationConfigApplicationContext : Refre ...
- NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config
今天调试SSM框架项目后台JSOn接口,报出来一个让人迷惑的错误:NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config 上网查了一下别人的博 ...
- springMVC: java.lang.ClassNotFoundException: javax.servlet.jsp.jstl.core.Config
springMVC开发web的时候,报错:java.lang.ClassNotFoundException: javax.servlet.jsp.jstl.core.Config 原因:未引入jstl ...
- 报错:严重: Servlet.service() for servlet [jsp] in context with path [/20161116-Struts2-6] threw exception [/index.jsp (line: 13, column: 20) No tag "textfiled" defined in tag library imported with prefix
严重: Servlet.service() for servlet [jsp] in context with path [/20161116-Struts2-6] threw exception [ ...
- Spring的servlet context和application context
Spring lets you define multiple contexts in a parent-child hierarchy. The applicationContext.xml def ...
- Handler processing failed; nested exception is java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config解决
出现这个问题往往伴随 HTTP-500错误 报错信息: HTTP Status - Handler processing failed; nested exception is java.lang. ...
- 报错!!!Servlet.service() for servlet [action] in context with path [/myssh] threw exception [java.lang.NullPointerException] with root cause java.lang.NullPointerException
这个为什么报错啊~~ at com.hsp.basic.BasicService.executeQuery(BasicService.java:33) 这个对应的语句是 Query query = ...
- Servlet.service() for servlet [jsp] in context with path [/Healthy_manager] threw exception [Unable to compile class for JSP] with root cause java.lang.IllegalArgumentException: Page directive: inval
严重: Servlet.service() for servlet [jsp] in context with path [/Healthy_manager] threw exception [Una ...
- INFO Dispatcher:42 - Unable to find 'struts.multipart.saveDir' property setting. Defaulting to javax.servlet.context.tempdir
INFO Dispatcher:42 - Unable to find 'struts.multipart.saveDir' property setting. Defaulting to javax ...
随机推荐
- Async/Await替代Promise的6个理由
译者按: Node.js的异步编程方式有效提高了应用性能:然而回调地狱却让人望而生畏,Promise让我们告别回调函数,写出更优雅的异步代码:在实践过程中,却发现Promise并不完美:技术进步是无止 ...
- 优雅高效的MyBatis-Plus工具快速入门使用
目前正在维护的公司的一个项目是一个ssm架构的java项目,dao层的接口有大量数据库查询的方法,一个条件变化就要对应一个方法,再加上一些通用的curd方法,对应一张表的dao层方法有时候多达近20个 ...
- 将 JSP 中数组传递给 js
<% String[] name = { "w ", "a ", "n ", "g"}; % ...
- Code First约定-Fluent API配置
转自:http://blog.163.com/m13864039250_1/blog/static/2138652482015283397609/ 用Fluent API 配置/映射属性和类型 简介 ...
- Mac 搭建svn本地服务端
首先建立一个svn目录,位置可以随意,以桌面为例 $ mkdir ~/Desktop/svn 新建一个名为proj的目录作为一个repository $ cd ~/Desktop/svn $ mkdi ...
- 手机应用PC端演示工具介绍
写给公司内部用的,所以没什么含量,请免炮轰. 为什么需要在PC端演示? 在Android及IOS系统上开发的手机应用,往往由于设备的限制,无法在演示汇报的场合向在场的众人展示界面,如果有工具可以将手机 ...
- 悬挂else引发的问题
这个问题虽然已经为人熟知,而且也并非C语言所独有,但即使是有多年经验的C程序员也常常在此失误过. 考虑下面的程序片段: if (x == 0) if (y == 0) error(); else{ z ...
- [进程管理]Linux进程状态解析之R、S、D
Linux是一个分时操作系统,能够在一个cpu上运行多个程序,每个被运行的程序实例对应一个或多个进程,这里介绍一下Linux进程状态. Linux是一个多用户,多任务的系统,可以同时运行多个用户的多个 ...
- SpringMVC中使用bean来接收form表单提交的参数时的注意点
这是前辈们对于SpringMVC接收表单数据记录下来的总结经验: SpringMVC接收页面表单参数 springmvc请求参数获取的几种方法 下面是我自己在使用时发现的,前辈们没有记录的细节和注意点 ...
- 蓝桥杯- 移动距离-java
/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...