JAVA maven创建web项目,把Spring框架配置文件放在srcmainresources中读取不到配置文件

JAVA maven创建web项目,把Spring框架配置文件放在srcmainresources中读取不到配置文件,第1张

classpath:是从类路径里查找配置文件,也就是/WEB-INF/classes目录下找SpringMVC-servletxml。

你写了classpath了,不会从web-info下找,而是去web-inf/classes下面找,所以找不到。

服务器(Tomcat)读取资源文件

方式一:采用流+Properties

当工程部署到Tomcat中时,按照上边方式,则会出现找不到该文件路径的异常。经搜索资料知道,Java工程打包部署到Tomcat中时,properties的路径变到顶层(classes下),这是由Maven工程结构决定的。由Maven构建的web工程,主代码放在src/main/java路径下,资源放在src/main/resources路径下,当构建为war包的时候,会将主代码和资源文件放置classes文件夹下,并且,此时读取文件需要采用流(stream)的方式读取,并通过JDK中Properties类加载,可以方便的获取到配置文件中的信息,如下。

采用Spring注解

如果工程中使用Spring,可以通过注解的方式获取配置信息,但需要将配置文件放到Spring配置文件中扫描后,才能将配置信息放入上下文,然后在程序中可以使用 @Value进行获取properties文件中的属性值。

采用Spring配置

也可以在Spring配置文件中读取属性值,赋予类成员变量。

地址错误。两种解决方式:

1、获得文件时,不要调用getClassLoader()方法。因为该调用该方法后,会默认在项目根路径下,寻找需要读取的文件。但是你的configproperties在根目录下的CESHI包下,所以最终导致路径错误。

图1

2、如果要使用getClassLoader()方法,则可以添加上包名称,即:CESHI/configproperties。

图2

JAVA与XML文件,可以说是软件开发的“黄金搭档”,而如何使用JAVA完成对XML文件的读取,是我们首先要解决的问题。

一、XML文件

这个示例文件包括了用来打开ORACLE数据库的各种参数

<xml version="10" encoding="UTF-8">

<dbmsg>

<dbinfo>

<drivername>oraclejdbcdriverOracleDriver</drivername>

<sConnStr>jdbc:oracle:thin:@118822580:1521:VOUCHERDB</sConnStr>

<username>SYS AS SYSDBA</username>

<password>voucherdb</password>

</dbinfo>

</dbmsg>

二、编写类名为ReadXml的类,用于解析XML文件

我们要在应用程序中打开数据库,就必须完成对该文件中drivername、sConnStr、username、password的读取,通过查找有关资料,笔者编制了以下程序,用于读取文件名为filename的XML文件。

package voucherbasic;

import javaioFileInputStream;

import javaioFileNotFoundException;

import javaioIOException;

import javaioInputStream;

import javaxxmlparsersDocumentBuilder;

import javaxxmlparsersDocumentBuilderFactory;

import javaxxmlparsersParserConfigurationException;

import orgw3cdomDocument;

import orgw3cdomElement;

import orgw3cdomNode;

import orgw3cdomNodeList;

import orgxmlsaxSAXException;

public class ReadXml {

private String drivername;

private String sConnStr;

private String username;

private String password;

public String getDrivername() {

return drivername;

}

public String getSConnStr() {

return sConnStr;

}

public String getUsername() {

return username;

}

public String getPassword() {

return password;

}

public void setDrivername(String drivername) {

thisdrivername = drivername;

}

public void setSConnStr(String connStr) {

sConnStr = connStr;

}

public void setUsername(String username) {

thisusername = username;

}

public void setPassword(String password) {

thispassword = password;

}

public ReadXml(String fileName){

DocumentBuilderFactory domfac=DocumentBuilderFactorynewInstance();

try {

DocumentBuilder dombuilder=domfacnewDocumentBuilder();

InputStream is=new FileInputStream(fileName);

Document doc=dombuilderparse(is);

Element root=docgetDocumentElement();

NodeList dbinfo=rootgetChildNodes();

if(dbinfo!=null){

for(int i=0;i<dbinfogetLength();i++){

Node db=dbinfoitem(i);

for(Node node=dbgetFirstChild();node!=null;node=nodegetNextSibling()){

if(nodegetNodeType()==NodeELEMENT_NODE){

if(nodegetNodeName()equals("drivername")){

setDrivername(nodegetFirstChild()getNodeValue());

}

if(nodegetNodeName()equals("sConnStr")){

setSConnStr(nodegetFirstChild()getNodeValue());

}

if(nodegetNodeName()equals("username")){

setUsername(nodegetFirstChild()getNodeValue());

}

if(nodegetNodeName()equals("password")){

setPassword(nodegetFirstChild()getNodeValue());

}

}

}

}

}

} catch (ParserConfigurationException e) {

// TODO Auto-generated catch block

eprintStackTrace();

} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

eprintStackTrace();

} catch (SAXException e) {

// TODO Auto-generated catch block

eprintStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

eprintStackTrace();

}

}

}

这个以ReadXml命名的类,使用了参数为文件名的构造方法,用户只要将配置文件我名称传递给该方法,就可以完成对XML文件的解析,进而完成对相应参数数的读取。

三、如何获取XML文件全路径并读取配置参数

获取XML文件全路径的方法有两个,一是在servlet中获取,二是在单独的JAVA类中获取。

1在servlet中获取XML文件的全路径并读取配置参数

程序片段String dirPath = getServletContext()getRealPath( "/WEB-INF");

String fileName = dirPath + "/connxml";

ReadXml xm = new ReadXml(fileName);

String DriverName = xmgetDrivername();

String connStr = xmgetSConnStr();

String user = xmgetUsername();

String pas = xmgetPassword();

将这段程序添加到servlet中dopost()之后即可完成参数的读取

2在单独的JAVA类中获取全路径并读取配置参数

程序片段

String dirpath = SystemgetProperty("userdir");

String xmlFile = dirpath + "/WebRoot/WEB-INF/connxml";

ReadXml rdxml = new ReadXml(xmlFile);

String driverName = rdxmlgetDrivername();

String sConnStr = rdxmlgetSConnStr();

String userName = rdxmlgetUsername();

String passWord = rdxmlgetPassword();

注:配置文件connxml保存在webroot/WEB-INF目录中。

以上就是关于JAVA maven创建web项目,把Spring框架配置文件放在src/main/resources中读取不到配置文件全部的内容,包括:JAVA maven创建web项目,把Spring框架配置文件放在src/main/resources中读取不到配置文件、请java大神看看我这个配置文件怎么读取不了、java如何读取XML配置文件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9510779.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存