I have created a little Java Jsp program to learn Java Jsp.But when I try to show the data in the browser I allways get this error message. Can someone please help me with this problem? I just post the error message. Please let me know if you need more information? I almost have no experience with posting problems in stackoverflow.
März 20, 2024 8:11:38 AM org.apache.catalina.startup.VersionLoggerListener log
INFORMATION: Server Version: Apache Tomcat/10.1.19
März 20, 2024 8:11:38 AM org.apache.catalina.startup.VersionLoggerListener log
INFORMATION: Server built: Feb 14 2024 19:36:50 UTC
März 20, 2024 8:11:38 AM org.apache.catalina.startup.VersionLoggerListener log
INFORMATION: Server version number: 10.1.19.0
März 20, 2024 8:11:38 AM org.apache.catalina.startup.VersionLoggerListener log
INFORMATION: OS Name: Windows 10
März 20, 2024 8:11:38 AM org.apache.catalina.startup.VersionLoggerListener log
INFORMATION: OS Version: 10.0
März 20, 2024 8:11:38 AM org.apache.catalina.startup.VersionLoggerListener log
INFORMATION: Architektur: amd64
März 20, 2024 8:11:38 AM org.apache.catalina.startup.VersionLoggerListener log
INFORMATION: Java Home: C:\Users\hugo\.p2\pool\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_17.0.10.v20240120-1143\jre
März 20, 2024 8:11:38 AM org.apache.catalina.startup.VersionLoggerListener log
INFORMATION: JVM Version: 17.0.10+7
März 20, 2024 8:11:38 AM org.apache.catalina.startup.VersionLoggerListener log
INFORMATION: JVM Hersteller: Eclipse Adoptium
März 20, 2024 8:11:38 AM org.apache.catalina.startup.VersionLoggerListener log
INFORMATION: CATALINA_BASE: C:\Users\hugo\eclipse-workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1
März 20, 2024 8:11:38 AM org.apache.catalina.startup.VersionLoggerListener log
INFORMATION: CATALINA_HOME: C:\Program Files\Apache Software Foundation\Tomcat 10.1
März 20, 2024 8:11:38 AM org.apache.catalina.startup.VersionLoggerListener log
INFORMATION: Command line argument: -Dcatalina.base=C:\Users\hugo\eclipse-workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1
März 20, 2024 8:11:38 AM org.apache.catalina.startup.VersionLoggerListener log
INFORMATION: Command line argument: -Dcatalina.home=C:\Program Files\Apache Software Foundation\Tomcat 10.1
März 20, 2024 8:11:38 AM org.apache.catalina.startup.VersionLoggerListener log
INFORMATION: Command line argument: -Dwtp.deploy=C:\Users\hugo\eclipse-workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps
März 20, 2024 8:11:38 AM org.apache.catalina.startup.VersionLoggerListener log
INFORMATION: Command line argument: --add-opens=java.base/java.lang=ALL-UNNAMED
März 20, 2024 8:11:38 AM org.apache.catalina.startup.VersionLoggerListener log
INFORMATION: Command line argument: --add-opens=java.base/java.io=ALL-UNNAMED
März 20, 2024 8:11:38 AM org.apache.catalina.startup.VersionLoggerListener log
INFORMATION: Command line argument: --add-opens=java.base/java.util=ALL-UNNAMED
März 20, 2024 8:11:38 AM org.apache.catalina.startup.VersionLoggerListener log
INFORMATION: Command line argument: --add-opens=java.base/java.util.concurrent=ALL-UNNAMED
März 20, 2024 8:11:38 AM org.apache.catalina.startup.VersionLoggerListener log
INFORMATION: Command line argument: --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
März 20, 2024 8:11:38 AM org.apache.catalina.startup.VersionLoggerListener log
INFORMATION: Command line argument: -Dfile.encoding=UTF-8
März 20, 2024 8:11:38 AM org.apache.catalina.startup.VersionLoggerListener log
INFORMATION: Command line argument: -Dstdout.encoding=UTF-8
März 20, 2024 8:11:38 AM org.apache.catalina.startup.VersionLoggerListener log
INFORMATION: Command line argument: -Dstderr.encoding=UTF-8
März 20, 2024 8:11:38 AM org.apache.catalina.startup.VersionLoggerListener log
INFORMATION: Command line argument: -XX:+ShowCodeDetailsInExceptionMessages
März 20, 2024 8:11:38 AM org.apache.catalina.core.AprLifecycleListener lifecycleEvent
INFORMATION: The Apache Tomcat Native library which allows using OpenSSL was not found on the java.library.path: [C:\Users\hugo\.p2\pool\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_17.0.10.v20240120-1143\jre\bin;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:/Users/hugo/.p2/pool/plugins/org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_17.0.10.v20240120-1143/jre/bin/server;C:/Users/hugo/.p2/pool/plugins/org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_17.0.10.v20240120-1143/jre/bin;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\WirelessCommon\;C:\Program Files (x86)\Universal Extractor;C:\Program Files (x86)\Universal Extractor\bin;C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\130\Tools\Binn\;C:\Program Files (x86)\Microsoft SQL Server\140\Tools\Binn\;C:\Program Files\Microsoft SQL Server\140\Tools\Binn\;C:\Program Files\Microsoft SQL Server\140\DTS\Binn\;C:\Program Files (x86)\Microsoft SQL Server\150\DTS\Binn\;C:\Program Files\MySQL\MySQL Server 8.0\bin;C:\Program Files\Git\cmd;C:\Program Files (x86)\Notepad++;C:\Users\hugo\Desktop\JDK,Maven und GIT\apache-maven-3.6.3\bin;C:\Program Files\nodejs\;C:\Users\hugo\AppData\Local\Programs\Python\Python310\Scripts\;C:\Users\hugo\AppData\Local\Programs\Python\Python310\;C:\Program Files\MySQL\MySQL Shell 8.0\bin\;C:\Users\hugo\AppData\Local\Microsoft\WindowsApps;C:\Program Files (x86)\Notepad++;;C:\Users\hugo\AppData\Local\Programs\Microsoft VS Code\bin;C:\Users\hugo\AppData\Roaming\npm;C:\Users\hugo\eclipse\jee-2023-12\eclipse;;.]
März 20, 2024 8:11:39 AM org.apache.coyote.AbstractProtocol init
INFORMATION: Initialisiere ProtocolHandler["http-nio-8080"]
März 20, 2024 8:11:39 AM org.apache.catalina.startup.Catalina load
INFORMATION: Server initialization in [2164] milliseconds
März 20, 2024 8:11:39 AM org.apache.catalina.core.StandardService startInternal
INFORMATION: Starting service [Catalina]
März 20, 2024 8:11:39 AM org.apache.catalina.core.StandardEngine startInternal
INFORMATION: Starting Servlet engine: [Apache Tomcat/10.1.19]
März 20, 2024 8:11:40 AM org.apache.catalina.startup.HostConfig deployDescriptor
INFORMATION: Deploying deployment descriptor [C:\Users\hugo\eclipse-workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\conf\Catalina\localhost\web-student-tracker.xml]
März 20, 2024 8:11:40 AM org.apache.catalina.startup.HostConfig deployDescriptor
WARNUNG: The path attribute with value [/web-student-tracker] in deployment descriptor [C:\Users\hugo\eclipse-workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\conf\Catalina\localhost\web-student-tracker.xml] has been ignored
März 20, 2024 8:11:40 AM org.apache.catalina.startup.HostConfig deployDescriptor
SCHWERWIEGEND: Error deploying deployment descriptor [C:\Users\hugo\eclipse-workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\conf\Catalina\localhost\web-student-tracker.xml]
java.lang.IllegalStateException: Error starting child
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:686)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:658)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:712)
at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:635)
at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1889)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:123)
at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:530)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:421)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1629)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:303)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:114)
at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:402)
at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:345)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:893)
at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:845)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:171)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1332)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1322)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:145)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:866)
at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:240)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:171)
at org.apache.catalina.core.StandardService.startInternal(StandardService.java:433)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:171)
at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:921)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:171)
at org.apache.catalina.startup.Catalina.start(Catalina.java:757)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:345)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:476)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/web-student-tracker]]
at org.apache.catalina.util.LifecycleBase.handleSubClassException(LifecycleBase.java:419)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:186)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:683)
... 37 more
Caused by: java.lang.IllegalArgumentException: The servlets named [StudentControllerServlet] and [com.luv2code.web.jdbc.StudentControllerServlet] are both mapped to the url-pattern [/StudentControllerServlet] which is not permitted
at org.apache.tomcat.util.descriptor.web.WebXml.addServletMappingDecoded(WebXml.java:354)
at org.apache.tomcat.util.descriptor.web.WebXml.addServletMapping(WebXml.java:347)
at org.apache.catalina.startup.ContextConfig.processAnnotationWebServlet(ContextConfig.java:2539)
at org.apache.catalina.startup.ContextConfig.processClass(ContextConfig.java:2244)
at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:2233)
at org.apache.catalina.startup.ContextConfig.processAnnotationsWebResource(ContextConfig.java:2143)
at org.apache.catalina.startup.ContextConfig.processAnnotationsWebResource(ContextConfig.java:2138)
at org.apache.catalina.startup.ContextConfig.processAnnotationsWebResource(ContextConfig.java:2138)
at org.apache.catalina.startup.ContextConfig.processAnnotationsWebResource(ContextConfig.java:2138)
at org.apache.catalina.startup.ContextConfig.processAnnotationsWebResource(ContextConfig.java:2138)
at org.apache.catalina.startup.ContextConfig.processClasses(ContextConfig.java:1351)
at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1261)
at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:961)
at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:290)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:114)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4782)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:171)
... 38 more
März 20, 2024 8:11:40 AM org.apache.catalina.startup.HostConfig deployDescriptor
INFORMATION: Deployment of deployment descriptor [C:\Users\hugo\eclipse-workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\conf\Catalina\localhost\web-student-tracker.xml] has finished in [189] ms
März 20, 2024 8:11:40 AM org.apache.coyote.AbstractProtocol start
INFORMATION: Starting ProtocolHandler ["http-nio-8080"]
März 20, 2024 8:11:40 AM org.apache.catalina.startup.Catalina start
INFORMATION: Server startup in [1238] milliseconds
```------------------------------------------------------------------------------------------------------------------------------------------------------
A simple Student class which creates a Student object
package com.luv2code.web.jdbc;
public class Student {
private int id;
private String firstName;
private String lastName;
private String email;
public Student(String firstName, String lastName, String email) {
this.firstName = firstName;
this.lastName = lastName;
this.email = email;
}
public Student(int id, String firstName, String lastName, String email) {
this.id = id;
this.firstName = firstName;
this.lastName = lastName;
this.email = email;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Override
public String toString() {
return "Student [id=" + id + ", firstName=" + firstName + ", lastName=" + lastName + ", email=" + email + "]";
}
}
the class which creates the connection to the db:
package com.luv2code.web.jdbc;
import java.sql.Connection; import java.sql.ResultSet; import java.sql.Statement; import java.util.*;
import javax.sql.DataSource;
public class StudentDbUtil {
private DataSource dataSource;
public StudentDbUtil(DataSource thedata) {
dataSource=thedata;
}
public List <Student> getStudent()throws Exception{
List<Student> students=new ArrayList<>();
Connection myConn=null;
Statement myStmt=null;
ResultSet myRs=null;
try {
//get a connection
myConn=dataSource.getConnection();
// create query
String sql="select* from student";
myStmt=myConn.createStatement();
// execute query
myRs=myStmt.executeQuery(sql);
// process result
while(myRs.next()) {
// get data
int id=myRs.getInt("id");
String firstname=myRs.getString("first_name");
String lastname=myRs.getString("last_name");
String email=myRs.getString("email");
// create student
Student tempStudent= new Student(id,firstname,lastname,email);
// add student to list
students.add(tempStudent);
}
return students;
}
finally {
close(myConn,myStmt,myRs);
}
}
private void close(Connection myConn, Statement myStmt, ResultSet myRs) {
try {
if(myRs !=null) {
myRs.close();
}
if(myStmt !=null) {
myStmt.close();
}
if(myConn !=null) {
myConn.close();
}
}
catch(Exception exc){
exc.printStackTrace();
}
}
}
------------------------------------------------------------------------------------------
the servlet class which is the controller and creates I think the problem:
package com.luv2code.web.jdbc;
import jakarta.annotation.Resource; import jakarta.servlet.RequestDispatcher; import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.*;
import javax.sql.DataSource;
@WebServlet("/StudentControllerServlet") <-------------------------- I tryed with and without this annotation public class StudentControllerServlet extends HttpServlet { private static final long serialVersionUID = 1L;
private StudentDbUtil studentDbUtil;
@Resource(name="jdbc/web_student_tracker")
private DataSource dataSource;
@Resource(name="")
@Override
public void init() throws ServletException {
super.init();
// diese Methode wird beim Start von Tocat Server aufgerufen
// hier wird jetzt StudentDbUtil aufgerufen und dann ein DataSource übergeben (DataSource verstehe ich noch nicht
try {
studentDbUtil=new StudentDbUtil(dataSource);
}
catch (Exception exc) {
throw new ServletException(exc);
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
listStudents(request,response);
} catch (Exception e) {
e.printStackTrace();
}
}
private void listStudents(HttpServletRequest request, HttpServletResponse response)throws Exception {
List<Student> students= studentDbUtil.getStudent();
request.setAttribute("STUDENT_LIST", students);
RequestDispatcher dispatcher=request.getRequestDispatcher("/list-students.jsp");
dispatcher.forward(request, response);
}
}
--------------------------------------------------------------------------------------------------
And the Jsp as view:
<%@ page import="java.util., com.luv2code.web.jdbc." %>
Student Tracker App<% // get the students from the request object (sent by servlet) List theStudents = (List) request.getAttribute("STUDENT_LIST"); %>
Like I said in the code. I tryed with and without this line :@WebServlet("/StudentControllerServlet")
I changed the Tomcatserver from 10 to 9.