访问xml文件中的变量(全局和局部)
<一> 获取xml中已定义变量的方式
首先你要明白两个事情:
1、访问全局变量
在servlet文件(java文件)中访问xml中定义的全局变量的方法为:
String global = this.getServletContext().getInitParameter("global");
或(省略this):
String global = getServletContext().getInitParameter("global");
在servlet中的构造函数、Init()初始化函数、doget()函数中运行运行该语句均可实现访问在xml文件中定义的全局变量global,要访问对应的全局变量只需将getInitParameter(“”)引号中的字符串改为你自己在xml文件中定义的全局变量即可
2、访问局部变量
在servlet文件中访问xml中定义的局部变量:
String url = getServletConfig().getInitParameter("url");
或:
String url= this.getInitParameter("url");
或(省略this):
String url= getInitParameter("url");
该语句也可编写在servlet的构造函数、Init()初始化函数或doget()函数中,均能实现访问在xml文件中定义的局部变量
说明:为什么说要明白这两点呢??因为之前在自己进行编程时,总是无法实现访问局部变量(长时间找资料让人怀疑自己),最后我还怀疑因为软件更新太快,已经不支持这种访问方式,但网上只有这一种访问方式,最后在成功实现访问后,想想自己是多么的先入为主和可笑,这种访问方式在笔者当前的 时间是还没有改变的,就算改变了网络上也会有大量的说明,所以在遇到问题时,先不要立刻就质疑规则有问题!!!
在确认了上面的访问方式均没有问题之后,来看接下来的原因
<二> xml文件的配置(基本的定义)
配置局部变量:
<servlet>
<servlet-name>Servlet</servlet-name>
<servlet-class>servlet.jdbcservlet</servlet-class>
<init-param>
<param-name>driver</param-name>
<param-value>com.mysql.jdbc.Driver</param-value>
</init-param>
<init-param>
<param-name>url</param-name>
<param-value>jdbc:mysql://localhost:3306</param-value>
</init-param>
<init-param>
<param-name>user</param-name>
<param-value>root</param-value>
</init-param>
<init-param>
<param-name>password</param-name>
<param-value>root</param-value>
</init-param>
</servlet>
对于这段配置局部变量的解释,上面这段代码有问题,因为没有定义<servlet-mapping></servlet-mapping>
因而在后方加上下面这段xml程序代码(与<servlet> </servlet>
同等级别):
<servlet-mapping>
<servlet-name>Servlet</servlet-name>
<url-pattern>/jdbcservlet</url-pattern>
</servlet-mapping>
说明:<servlet-mapping>
中的<servlet-name>
应与前面<servlet>
中的<servlet-name>
相同;<url-pattern>
是用于指定访问哪个servlet文件的
注意<servlet> </servlet>
和<servlet-mapping>
以及下面的<context-param>
都是同级关系,均是<web-app>
的子标签
我的xml文件中配置全局变量的方式:
<context-param> <!-- 全局变量-->
<param-name>global</param-name>
<param-value>全局参数示例</param-value>
</context-param>
<context-param>
<param-name>schoolName</param-name>
<param-value>xx大学</param-value>
</context-param>
<context-param>
<param-name>college</param-name>
<param-value>计算机学院</param-value>
</context-param>
注意在 <context-param></context-param>
中间配置全局变量,且这个标签在xml文件中是<web-app></weeb-app>
的子标签,与<servlet></servlet>
标签同级别
上面共配置了三个全局变量
<三> 可能引发的错误
(1)<servlet-mapping>
中的<servlet-name>
应与前面<servlet>
中的<servlet-name>
不相同导致这个局部变量无法访问
(2)<servlet-mapping>
中的<url-pattern>
连接位置有误,注意不同文件所处的路径
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/114593.html