#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
- Библиотека драйвера PostgresSQL (jar-файл) не добавлена в ваш путь к классу.
- Вам необходимо предоставить общий доступ к вашему классу обработки базы данных, чтобы проверить код, написанный для подключения к БД.
-
измените web.xml как показано ниже:
<context-param>
<param-name>url</param-name>
<param-value>jdbc:postgresql://localhost/OlapTest</param-value>
</context-param>
J отсутствует. Проверьте ошибку, в которой указано dbc.