servlet 读取web.xml参数
1初始化参数init-param
init-param是配置在web.xml的<servlet>标签里的,也就是说,是归该servlet单独所有的。
实例
<servlet>
<servlet-name>ContextParamServlet</servlet-name>
<servlet-class>com.servlet.ContextParamServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>InitParamServlet</servlet-name>
<servlet-class>com.servlet.InitParamServlet</servlet-class>
<init-param>
<param-name>harry</param-name>
<param-value>3324</param-value>
</init-param>
<init-param>
<param-name>kitty</param-name>
<param-value>3124</param-value>
</init-param>
<init-param>
<param-name>rixiang</param-name>
<param-value>1992</param-value>
</init-param>
</servlet>
servlet程序中读取:
package com.servlet; import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; public class InitParamServlet extends HttpServlet { private static final long serialVersionUID = 1L; public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException,IOException{ response.setCharacterEncoding("UTF-8");
request.setCharacterEncoding("UTF-8"); response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML>");
out.println(" <HEAD><TITLE>请登录查看 Notice 文件</TITLE></HEAD>");
out.println("<style>body, td, div {font-size:12px; }</style>");
out.println(" <BODY>"); out.println("<form action='" + request.getRequestURI() + "' method='post'>");
out.println("帐号:<input type='text' name='username' style='width:200px; '> <br/>");
out.println("密码:<input type='password' name='password' style='width:200px; '> <br/><br/>");
out.println("<input type='submit' value=' 登录 '>");
out.println("</form>"); out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
} public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException,IOException{
String username = request.getParameter("username");
String password = request.getParameter("password");
@SuppressWarnings("rawtypes")
Enumeration params = this.getInitParameterNames();
while(params.hasMoreElements()){
String usernameParam = (String)params.nextElement();
String passnameParam = this.getInitParameter(usernameParam);
if(usernameParam.equalsIgnoreCase(username)
&& passnameParam.equals(password)){
request.getRequestDispatcher("/WEB-INF/notice.html").forward(request, response);
return;
}
}
this.doGet(request, response);
}
}
效果:


2上下文参数,context-param
context-param是所有servlet公有的
<context-param>
<param-name>upload folder</param-name>
<param-value>attachment</param-value>
</context-param>
<context-param>
<param-name>allowed file type</param-name>
<param-value>.gif,.jpg,.bmp</param-value>
</context-param>
servlet程序读取:
package com.servlet; import java.io.IOException;
import java.io.PrintWriter; import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; public class ContextParamServlet extends HttpServlet{
private static final long serialVersionUID = 1L; public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException,IOException{
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML>");
out.println(" <HEAD><TITLE>读取文档参数</TITLE></HEAD>");
out.println(" <link rel='stylesheet' type='text/css' href='../css/style.css'>");
out.println(" <BODY>");
out.println("<div align=center><br/>");
out.println("<fieldset style='width:90%'><legend>所有的文档参数</legend><br/>"); ServletContext servletContext = this.getServletConfig().getServletContext(); String uploadFolder = servletContext.getInitParameter("upload folder");
String allowedFileType = servletContext.getInitParameter("allowed file type"); out.println("<div class='line'>");
out.println(" <div align='left' class='leftDiv'>上传文件夹</div>");
out.println(" <div align='left' class='rightDiv'>" + uploadFolder + "</div>");
out.println("</div>"); out.println("<div class='line'>");
out.println(" <div align='left' class='leftDiv'>实际磁盘路径</div>");
out.println(" <div align='left' class='rightDiv'>" + servletContext.getRealPath(uploadFolder) + "</div>");
out.println("</div>"); out.println("<div class='line'>");
out.println(" <div align='left' class='leftDiv'>允许上传的类型</div>");
out.println(" <div align='left' class='rightDiv'>" + allowedFileType + "</div>");
out.println("</div>"); out.println("</fieldset></div>"); out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}
}
效果

3资源注射@Resource
不需要servlet主动去读取,tomcat启动时会把web.xml里配置的信息主动注射到servlet里。
只需要@Resource注解。
<env-entry>
<env-entry-name>hello</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>
Hello, Welcome to the JavaEE Resource Injection.
</env-entry-value>
</env-entry> <env-entry>
<env-entry-name>i</env-entry-name>
<env-entry-type>java.lang.Integer</env-entry-type>
<env-entry-value>30</env-entry-value>
</env-entry> <env-entry>
<env-entry-name>persons</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>
Helloween, Cobain, Roses, Axl,
</env-entry-value>
</env-entry>
servlet程序读取
package com.servlet; import java.io.IOException;
import java.io.PrintWriter; import javax.annotation.Resource;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; public class InjectionServlet extends HttpServlet{
private static final long serialVersionUID = -8526907492073769090L; // 注入的 字符串
private @Resource(name="hello") String hello;
// 注入的 整数
private @Resource(name="i") int i; // 注入更常见的写法
@Resource(name="persons")
private String persons; public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { response.setCharacterEncoding("UTF-8");
request.setCharacterEncoding("UTF-8"); response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML>");
out.println(" <HEAD><TITLE>资源注入</TITLE></HEAD>");
out.println("<style>body {font-size:12px; }</style>"); out.println("<b>注入的字符串</b>:<br/> - " + hello + "<br/>");
out.println("<b>注入的整数</b>:<br/> - " + i + "<br/>");
out.println("<b>注入的字符串数组</b>:<br/>"); for(String person : persons.split(",")){
out.println(" - " + person + "<br/>");
} out.println(" <BODY>");
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}
}
效果

servlet 读取web.xml参数的更多相关文章
- Servlet中Web.xml的配置详解
1 定义头和根元素 部署描述符文件就像所有XML文件一样,必须以一个XML头开始.这个头声明可以使用的XML版本并给出文件的字符编码. DOCYTPE声明必须立即出现在此头之后.这个声明告诉服务器适用 ...
- Servlet中Web.xml的配置详解(一)
1 定义头和根元素 部署描述符文件就像所有XML文件一样,必须以一个XML头开始.这个头声明可以使用的XML版本并给出文件的字符编码.DOCYTPE声明必须立即出现在此头之后.这个声明告诉服务器适用的 ...
- Servlet中web.xml 以及 <url-pattern>总结
web.xml中添加Servlet配置信息 使用Eclipse创建Servlet,会自动的在WEB-INF下的web.xml中声明,但是有的时候需要我们手动的写入配置信息,以下就是Servlet在we ...
- 读取web.xml中设置的参数
以获取Filer元素里设置的参数为例 先在web.xml文件中配置如下 <?xml version="1.0" encoding="UTF-8"?> ...
- servlet中用注解的方式读取web.xml中的配置信息
在学习servletContext的时候,我们知道了可以在web.xml中通过<context-param>标签来定义全局的属性(所有servlet都能读取的信息),并在servlet中通 ...
- Servlet 使用ServletContext共享数据,读取web.xml配置
ServletContext对象 session和cookie,对于每一个请求用户来说,都是不同的,因为要保证隐私安全. 而有一些数据,可以让所有用户共享,此时就可以用ServletContext对象 ...
- Servlet中Web.xml配置详解(二)
5.2 分配JSP初始化参数给JSP页面提供初始化参数在三个方面不同于给servlet提供初始化参数.1)使用jsp-file而不是servlet-class.因此,WEB-INF/web.xml文件 ...
- 【转】Servlet与web.xml的配置
Web.xml常用元素<web-app><display-name></display-name>定义了WEB应用的名字<description>< ...
- servlet中web.xml配置详解
Web.xml常用元素 <web-app> 所有部署描述符文件的顶层(根)元素 <display-name></display-name>定义了WEB应用的名字 & ...
随机推荐
- unity3d 射弹基础案例
小白本来想学cocos2dx的,然而c++难学就算了,cocos2dx对新手来说简直坑爹,于是乎转战unity3d学习js,在写出第一个游戏后兴致高多了哎. 回顾一下编辑的过程:1.建立一个cube作 ...
- WCF第二天
消息 : 消息是一个独立的数据单元,它可能由几个部分组成,包括消息正文和消息头. 服务 : 服务是一个构造,它公开一个或多个终结点,其中每个终结点都公开一个或多个服务操作. 终结点 ...
- 把 TBytes 转换为十六进制字符串
function BytestoHexString(ABytes: TBytes; len: Integer): AnsiString; begin SetLength(Result, len*) ...
- Linux编程下EAGAIN和EINTR宏的含义及处理
Linux中的EAGAIN含义 在Linux环境下开发经常会碰到很多错误(设置errno),其中EAGAIN是其中比较常见的一个错误(比如用在非阻塞操作中). linux下使用write\send ...
- 项目Windows服务安装命令:
sc create YY.SmsPlatform.RemoteDataCenter binPath= "E:\YY.SmsPlatform\YY.SmsPlatform.RemoteData ...
- Java 技术体系图
Java 程序员 高级特性 反射.泛型.注释符.自动装箱和拆箱.枚举类.可变 参数.可变返回类型.增强循环.静态导入 核心编程 IO.多线程.实体类. 集合类.正则表达式. XML 和属性文件 图形编 ...
- Excel表格常用的函数,留着备用
1. vlookup(lookup_value, table_array, col_index_num, boolean) -- 查找匹配函数 lookup_value: 你要去匹配的值 table_ ...
- memalign vs malloc - 使用O_DIRECT参数open一个文件并读写
听说使用odirect参数打开文件时能够以扇区的单位进行读写. 于是open了一个块设备文件/dev/sdo,当然还要带上读写参数O_RDWR 然后进行读写时出错了. 找了一会发现问题根本在于读写的b ...
- FreeBSD_11-系统管理——{Part_6 - SYSCTL}
sysctl 常见参数 Name Type Changeable 示例 & 示意 kern.ostype string no FreeBSD kern.osrelease string no ...
- MapReduce: 一种简化的大规模集群数据处理法
(只有文字没有图,图请参考http://research.google.com/archive/mapreduce.html) MapReduce: 一种简化的大规模集群数据处理法 翻译:风里来雨里去 ...