我在web.xml文件中遇到问题。
我收到错误,本地主机上的服务器Tomcat v8.0服务器无法启动。'当我尝试运行我的应用程序时。但是当标记用于web.xml文件时,可以绕过此错误,如下所示。
但是新问题是,当我在web.xml中使用上下文参数时,它们不能在侦听器类中使用。
ServletContext sc=event.getServletContext();
String database= sc.getInitParameter("Database");
数据库值始终收到null。 删除元素标记和标记时,数据库字符串将提取正确的值。但标签需要servlet标签才能工作。
有人可以告诉我这方面的解决方案。 我在下面给出了web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<element>
<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" version="3.0">
<display-name>A</display-name>
<servlet>
<servlet-name>login</servlet-name>
<servlet-class>com.manage.control.EnrollmentServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>login</servlet-name>
<url-pattern>/EnrollmentServlet</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<listener>
<listener-class>com.test.listener.DeatabaseNameListener</listener-class>
</listener>
<context-param>
<param-name>Database</param-name>
<param-value>jdbc:mysql://localhost:3307/studentmanagement</param-value>
</context-param>
<context-param>
<param-name>DatabaseUserName</param-name>
<param-value>root</param-value>
</context-param>
<context-param>
<param-name>DatabasePassword</param-name>
<param-value>root</param-value>
</context-param>
</web-app>
</element>
答案 0 :(得分:0)
没有这样的标签作为元素。您的web.xml应如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<display-name>A</display-name>
<context-param>
<param-name>Database</param-name>
<param-value>jdbc:mysql://localhost:3307/studentmanagement</param-value>
</context-param>
<context-param>
<param-name>DatabaseUserName</param-name>
<param-value>root</param-value>
</context-param>
<context-param>
<param-name>DatabasePassword</param-name>
<param-value>root</param-value>
</context-param>
<listener>
<listener-class>com.test.listener.DeatabaseNameListener</listener-class>
</listener>
<servlet>
<servlet-name>login</servlet-name>
<servlet-class>com.manage.control.EnrollmentServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>login</servlet-name>
<url-pattern>/EnrollmentServlet</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>
请注意,上下文参数较早,名称空间声明表示Servlet 3.1。以前的订单很重要 - 我不认为它有任何更多,但我仍然命令他们遵循旧的规范。