Сервлет, инициализирующий параметры базы данных из web.xml

#java #xml #servlets #context-param

#java #xml #сервлеты #context-param

Вопрос:

У меня проблема с моими контекстными параметрами в моем веб-приложении. Мои методы

  getServletContext().getInitParameter("pass");
  

Возвращает значение null.
Вот мой 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/web-app_2_5.xsd" 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>Log4jWebDemo1</display-name>
<context-param>
    <param-name>log4j-config-location</param-name>
    <param-value>WEB-INF/log4j.properties</param-value>
</context-param>
    <context-param>
        <param-name>url</param-name>
        <param-value>dbc:postgresql://localhost/OlapTest</param-value>
    </context-param>
    <context-param>
        <param-name>name</param-name>
        <param-value>org.postgresql.Driver</param-value>
    </context-param>
    <context-param>
        <param-name>usr</param-name>
        <param-value>postgres</param-value>
    </context-param>
    <context-param>
        <param-name>pass</param-name>
        <param-value>admin</param-value>
    </context-param>
  <servlet>
    <servlet-name>Hello World</servlet-name>
    <servlet-class>pl.javastart.servlets.HelloWorldServlet</servlet-class>

  </servlet>
  <servlet-mapping>
    <servlet-name>Hello World</servlet-name>
    <url-pattern>/test</url-pattern>
  </servlet-mapping>
</web-app>
  

И мой сервлет:

 public class HelloWorldServlet extends HttpServlet {
       private static final long serialVersionUID = 1L;
       private String url2 = ""; 
       private String driver = ""; 
       private String username = ""; 
       private String password = ""; 

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {


        PrintWriter out = response.getWriter();
        url2 = getServletContext().getInitParameter("url");
        driver = getServletContext().getInitParameter("name");
        username = getServletContext().getInitParameter("usr");
        password = getServletContext().getInitParameter("pass");

        DatabaseHandling d1 = new DatabaseHandling(driver,url2,username,password);

        d1.createConnection(out);

        }
}
  

После выполнения моего приложения он выдает

java.lang.Исключение NullPointerException

Комментарии:

1. Можете ли вы вставить полную трассировку стека исключений?

2. Уже сделал это, мой друг

3. можете ли вы показать код класса обработки базы данных

4. Я думаю, что это избыточно, когда я вручную помещаю строковые значения там, где я выполняю getServletContext().getInitParameter(); , приложение работает нормально

5. перед вызовом обработки базы данных d1 = новая обработка базы данных (драйвер, url2, имя пользователя, пароль); в этой строке просто выводятся все строковые значения.

Ответ №1:

Может быть несколько возможностей, которые приводят к исключению NullPointerException

  1. Библиотека драйвера PostgresSQL (jar-файл) не добавлена в ваш путь к классу.
  2. Вам необходимо предоставить общий доступ к вашему классу обработки базы данных, чтобы проверить код, написанный для подключения к БД.
  3. измените web.xml как показано ниже:

    <context-param>
    <param-name>url</param-name>
    <param-value>jdbc:postgresql://localhost/OlapTest</param-value>
    </context-param>

J отсутствует. Проверьте ошибку, в которой указано dbc.