Servlet中的初始化参数、上下文参数、以及@Resource资源注入
配置初始化参数、上下文参数、以及使用@Resource注解进行资源注入,目的是为了降低代码的耦合度。当项目需求进行变更的时候,不需要反复更改源代码,只需更改web.xml文件即可。
一:Servlet的初始化参数和上下文参数
配置以及使用:
web.xml:
<!-- 配置上下文参数,所有的Servlet中都可以使用 -->
<context-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</context-param> <!-- 初始化参数Servlet -->
<servlet>
<servlet-name>InitParamServlet</servlet-name>
<servlet-class>cn.woo.servlet.InitParamServlet</servlet-class>
<!-- 配置初始化参数(用户名/密码),仅InitParamServlet中可用 -->
<init-param>
<param-name>woo</param-name>
<param-value>123</param-value>
</init-param>
<init-param>
<param-name>unknown</param-name>
<param-value>456</param-value>
</init-param>
<init-param>
<param-name>ljl</param-name>
<param-value>789</param-value>
</init-param>
</servlet> <servlet-mapping>
<servlet-name>InitParamServlet</servlet-name>
<url-pattern>/servlet/InitParamServlet</url-pattern>
</servlet-mapping>
InitParamServlet.java:
public class InitParamServlet extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 获取上下文参数,设置请求和响应的编码格式
ServletContext servletContext = getServletContext();
String encoding = servletContext.getInitParameter("encoding");
req.setCharacterEncoding(encoding);
resp.setCharacterEncoding(encoding);
// 获取用户名密码
String username = req.getParameter("username");
String password = req.getParameter("password");
// 判断用户名和密码是否正确,只有正确的用户才能访问,私密文件
ServletConfig servletConfig = getServletConfig();
// 获取所有初始化参数的名称
Enumeration<String> initParameterNames = servletConfig.getInitParameterNames();
while (initParameterNames.hasMoreElements()) {
// 获取每一个初始化参数名
String name = initParameterNames.nextElement();
// 获取参数名称对应的value
String pwd = servletConfig.getInitParameter(name);
if (name.equals(username) && pwd.equals(password)) {
// 有访问权限的人[转发]
req.getRequestDispatcher("/WEB-INF/notice.html").forward(req, resp);
return;
}
}
// 重新返回登录界面 [转发到index.html]
req.getRequestDispatcher("/index.html").forward(req, resp);
}
}
二:使用@Resource注解,进行资源注入
该注解不需要Servlet主动去读取资源,Tomcat启动的时候会把web.xml文件中配置的信息主动"注入"到Servlet里,该过程是自动完成的。
*:该注解是从JavaEE 5 规范、Tomcat 6.x 开始支持的功能。
配置以及使用:
web.xml (env-entry只能配置java.lang包中标准类型的变量 如:String Integer Double等)
<!-- 注入的String类型的名称 -->
<env-entry>
<env-entry-name>name</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>woo</env-entry-value>
</env-entry> <!-- 注入的Integer类型的年龄 -->
<env-entry>
<env-entry-name>age</env-entry-name>
<env-entry-type>java.lang.Integer</env-entry-type>
<env-entry-value>23</env-entry-value>
</env-entry> <!-- 注入的Double类型的身高 -->
<env-entry>
<env-entry-name>height</env-entry-name>
<env-entry-type>java.lang.Double</env-entry-type>
<env-entry-value>178.5</env-entry-value>
</env-entry> <!-- 注入字符串数组 -->
<env-entry>
<env-entry-name>language</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>汉语,英语,韩语</env-entry-value>
</env-entry>
ResourcesServlet.java
public class ResourcesServlet extends HttpServlet{
/**
*
*/
private static final long serialVersionUID = 1L;
/**
* 注入用户名(name属性名称要和web.xml文件中的env-entry-name名称一致,类型也要一致)
*/
@Resource(name="name")
private String name;
/**
* 注入年龄
*/
@Resource(name="age")
private Integer age;
/**
* 注入身高
*/
@Resource(name="height")
private Double height;
/**
* 注入语言数组信息
*/
@Resource(name="language")
private String language;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//输出注入的资源信息
System.out.println(name);
System.out.println(age);
System.out.println(height);
for (String string : language.split(",")) {
System.out.println(string);
}
}
}
Servlet中的初始化参数、上下文参数、以及@Resource资源注入的更多相关文章
- Servlet中的属性(attribute)和参数(parameter)的区别
1.引子 初学者对属性(attribute)和参数(parameter)容易搞混.没搞清他们的区别,项目中就可能出现一此莫名其妙的问题. 2.两者的区别 1) 属性(attribute) 属性是在后台 ...
- Servlet中获取POST请求的参数
在servlet.filter等中获取POST请求的参数 form表单形式提交post方式,可以直接从 request 的 getParameterMap 方法中获取到参数 JSON形式提交post方 ...
- JavaWeb(一)Servlet中的ServletConfig与ServletContext
前言 前面我介绍了一下什么是servlet,它的生命周期,执行过程和它的原理.这里我们做一个简单的回顾! 什么是Servlet? servlet 是运行在 Web 服务器中的小型 Java 程序(即: ...
- Servlet中的几个重要的对象(转)
讲解四大类,ServletConfig对象,ServletContext对象.request对象,response对象 ServletConfig对象 获取途径:getServletConfig(); ...
- Servlet中读取参数的几种方式
为每一Servlet设置初始化参数 可以为每一个Servlet在对应的web.xml中的Servlet节点下编写初始化参数,格式如下: <init-param> <param-nam ...
- 使用监听器来启动spring -------使用监听器初始化上下文参数
问题: 数据初始化监听器要注入spring容器的对象,必须先启动spring容器才能使用监听器初始化数据. 解决: 使用监听器来启动spring框架 问题:spring框架启动需要哪些参数? 1.需要 ...
- web.xml中在Servlet中获取context-param和init-param内的参数
引自:http://blog.csdn.net/yakson/article/details/9203231 web.xml里面可以定义两种参数:1.application范围内的参数,存放在serv ...
- oracle中有关初始化参数文件的几个视图对比
涉及oracle中有关初始化参数文件的几个视图主要有:v$paraemter,v$parameter2,v$system_parameter,v$system_parameter2,v$spparam ...
- servlet中获取配置文件中的参数.
web.xml (添加init-param) <?xml version="1.0" encoding="UTF-8"?> <web-app ...
随机推荐
- 打印菱形(Print Diamond/Lozenge)
→ ↓ * * * * * * * * * * * * * 总结了一下关于打印菱形的思路. 通常是从循环变量之间的映射关系入手,推导出相应的公式.这 ...
- mysql错误-修改mysql.sock位置
在Mysql下有时候会出现mysql.sock位置错误,导致无法链接数据库. mac下报错的时候: 首先修改my.cnf 位置在/etc/my.cnf下,假如没有的话,去/usr/locate/mys ...
- raid0和raid5的 实验过程
raid:独立的磁盘冗余阵列 创建raid0: 环境准备:准备三块大小相同的磁盘或分区,此处要特别注意:红色字体 [root@localhost6 home]#fdisk /dev/sdd ##对/d ...
- hadoop版本与支持的hbase版本对照…
hadoop版本与支持的hbase版本对照表 分类: hbase2013-05-20 17:19 701人阅读 评论(2) 收藏 举报 HbaseHadoop As of Hive 0.9.0 the ...
- 《Java多线程编程核心技术》读后感(十七)
使线程具有有序性 正常情况下,线程在运行时多个线程之间执行任务的时机时无序的.可以通过改造代码的方式使它们运行具有有序性 package Seven; public class MyThread ex ...
- Javascript实现页面左边的菜单选中项高亮显示
在项目开发过程中,遇到一个问题 在一个模板页面中,Layout.cshtml,页面左边放了一个菜单项menu,每一项都是一个链接到一个新的页面.但所有页面都是用这个模板Layout.cshtml.需要 ...
- ZOJ 3512 Financial Fraud (左偏树)
题意:给定一个序列,求另一个不递减序列,使得Abs(bi - ai) 和最小. 析:首先是在每个相同的区间中,中位数是最优的,然后由于要合并,和维护中位数,所以我们选用左偏树来维护,当然也可以用划分树 ...
- sqlserver2012——EXCEPT差查询
代表第一个select查询结果与第二个select查询结果去除相交后的数据
- HTML5学习笔记(四)语义元素
语义元素能够清楚的描述其意义给浏览器和开发者. 无语义 元素实例: <div> 和 <span> - 无需考虑内容. 语义元素实例: <form>, <tab ...
- MD5 不可逆加密,Des对称可逆加密 ,RSA非对称可逆加密 ,数字证书 SSL
:MD5 不可逆加密2:Des对称可逆加密3:RSA非对称可逆加密4:数字证书 SSL Anker_张(博客园)http://www.cnblogs.com/AnkerZhang/ 1:MD5 不可逆 ...