Как вызвать файл свойств при загрузке проекта через web.xml в Java? - PullRequest
0 голосов
/ 02 ноября 2018

Я создал файл свойств и загружаю соединение с базой данных только из этого файла. То, что я делаю, использует контекст сервлета, я получаю ресурс и этот код я написал на своей странице входа в систему ( login.jsp ), как это

    <%ServletContext servletContext = getServletContext();
InputStream input = getServletContext().getResourceAsStream("/WEB-INF/db.properties");
 if (input != null) {
     InputStreamReader isr = new InputStreamReader(input);
     BufferedReader reader = new BufferedReader(isr);
     PrintWriter writer = response.getWriter();
     String text;
     while ((text = reader.readLine()) != null) {
/*      System.out.println(text + "\n"); */
         servletContext.setAttribute(text.split("=")[0], text.split("=")[1]);

     }
 }
%>

Таким образом, он принимает значения из моего файла свойств всякий раз, когда пользователь входит в систему, но я хочу загрузить свой файл свойств через web.xml, чтобы при загрузке проектов или запуске сервера загружалось соединение из этого файла свойств. только один раз, когда пользователь входит в систему, он вызывает файл свойств.

Итак, вот мой класс соединения Java, в котором я присваиваю значения из файла свойств:

ServletContext servletContext = getServletContext();
        String driverDB = servletContext.getAttribute("driver").toString();
        String conn_urlDB = servletContext.getAttribute("conn_url").toString();
        String userNameDB = servletContext.getAttribute("userName").toString();
        String passwordDB = servletContext.getAttribute("password").toString();
DBConnection.getDataBaseProperty(driverDB, conn_urlDB, userNameDB, passwordDB);

web.xml ниже

    <?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>TouchPoint</display-name>

  <welcome-file-list>
    <welcome-file>Login.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
    <display-name>LoginServlet</display-name>
    <servlet-name>LoginServlet</servlet-name>
    <servlet-class>com.touchpoint.controller.LoginServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>LoginServlet</servlet-name>
    <url-pattern>/LoginServlet</url-pattern>
  </servlet-mapping>
  <servlet>
    <servlet-name>LogoutServlet</servlet-name>
    <servlet-class>com.touchpoint.controller.LogoutServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>LogoutServlet</servlet-name>
    <url-pattern>/LogoutServlet</url-pattern>
  </servlet-mapping>
</web-app>

1 Ответ

0 голосов
/ 02 ноября 2018

ServletContextListener - это ответ для вас,

Вы можете проверить это сообщение в блоге для лучшего понимания https://www.journaldev.com/1945/servletcontextlistener-servlet-listener-example

поместите ваши строки конфигурации в файл web.xml и получите уведомление о запуске сервера через servletContextListener

вот выдержка из этого поста:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>ServletListenerExample</display-name>

  <context-param>
    <param-name>DBUSER</param-name>
    <param-value>pankaj</param-value>
  </context-param>
  <context-param>
    <param-name>DBPWD</param-name>
    <param-value>password</param-value>
  </context-param>
  <context-param>
    <param-name>DBURL</param-name>
    <param-value>jdbc:mysql://localhost/mysql_db</param-value>
  </context-param>

  <listener>
    <listener-class>com.journaldev.listener.AppContextListener</listener-class>
  </listener>

Вам необходимо создать новый класс, который будет прослушивать событие запуска сервера:

public class AppContextListener implements ServletContextListener {

    public void contextInitialized(ServletContextEvent servletContextEvent) {
        ServletContext ctx = servletContextEvent.getServletContext();

        String url = ctx.getInitParameter("DBURL");
        String u = ctx.getInitParameter("DBUSER");
        String p = ctx.getInitParameter("DBPWD");
}}
...