I have created a little Java Jsp program to learn Java Jsp.But when Itry 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 experiencewith posting problems in stackoverflow.
März 20, 2024 8:11:38 AM org.apache.catalina.startup.VersionLoggerListener logINFORMATION: Server Version: Apache Tomcat/10.1.19März 20, 2024 8:11:38 AM org.apache.catalina.startup.VersionLoggerListener logINFORMATION: Server built: Feb 14 2024 19:36:50 UTCMärz 20, 2024 8:11:38 AM org.apache.catalina.startup.VersionLoggerListener logINFORMATION: Server version number: 10.1.19.0März 20, 2024 8:11:38 AM org.apache.catalina.startup.VersionLoggerListener logINFORMATION: OS Name: Windows 10März 20, 2024 8:11:38 AM org.apache.catalina.startup.VersionLoggerListener logINFORMATION: OS Version: 10.0März 20, 2024 8:11:38 AM org.apache.catalina.startup.VersionLoggerListener logINFORMATION: Architektur: amd64März 20, 2024 8:11:38 AM org.apache.catalina.startup.VersionLoggerListener logINFORMATION: Java Home: C:\Users\hugo\.p2\pool\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_17.0.10.v20240120-1143\jreMärz 20, 2024 8:11:38 AM org.apache.catalina.startup.VersionLoggerListener logINFORMATION: JVM Version: 17.0.10+7März 20, 2024 8:11:38 AM org.apache.catalina.startup.VersionLoggerListener logINFORMATION: JVM Hersteller: Eclipse AdoptiumMärz 20, 2024 8:11:38 AM org.apache.catalina.startup.VersionLoggerListener logINFORMATION: CATALINA_BASE: C:\Users\hugo\eclipse-workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1März 20, 2024 8:11:38 AM org.apache.catalina.startup.VersionLoggerListener logINFORMATION: CATALINA_HOME: C:\Program Files\Apache Software Foundation\Tomcat 10.1März 20, 2024 8:11:38 AM org.apache.catalina.startup.VersionLoggerListener logINFORMATION: Command line argument: -Dcatalina.base=C:\Users\hugo\eclipse-workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1März 20, 2024 8:11:38 AM org.apache.catalina.startup.VersionLoggerListener logINFORMATION: Command line argument: -Dcatalina.home=C:\Program Files\Apache Software Foundation\Tomcat 10.1März 20, 2024 8:11:38 AM org.apache.catalina.startup.VersionLoggerListener logINFORMATION: Command line argument: -Dwtp.deploy=C:\Users\hugo\eclipse-workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebappsMärz 20, 2024 8:11:38 AM org.apache.catalina.startup.VersionLoggerListener logINFORMATION: Command line argument: --add-opens=java.base/java.lang=ALL-UNNAMEDMärz 20, 2024 8:11:38 AM org.apache.catalina.startup.VersionLoggerListener logINFORMATION: Command line argument: --add-opens=java.base/java.io=ALL-UNNAMEDMärz 20, 2024 8:11:38 AM org.apache.catalina.startup.VersionLoggerListener logINFORMATION: Command line argument: --add-opens=java.base/java.util=ALL-UNNAMEDMärz 20, 2024 8:11:38 AM org.apache.catalina.startup.VersionLoggerListener logINFORMATION: Command line argument: --add-opens=java.base/java.util.concurrent=ALL-UNNAMEDMärz 20, 2024 8:11:38 AM org.apache.catalina.startup.VersionLoggerListener logINFORMATION: Command line argument: --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMEDMärz 20, 2024 8:11:38 AM org.apache.catalina.startup.VersionLoggerListener logINFORMATION: Command line argument: -Dfile.encoding=UTF-8März 20, 2024 8:11:38 AM org.apache.catalina.startup.VersionLoggerListener logINFORMATION: Command line argument: -Dstdout.encoding=UTF-8März 20, 2024 8:11:38 AM org.apache.catalina.startup.VersionLoggerListener logINFORMATION: Command line argument: -Dstderr.encoding=UTF-8März 20, 2024 8:11:38 AM org.apache.catalina.startup.VersionLoggerListener logINFORMATION: Command line argument: -XX:+ShowCodeDetailsInExceptionMessagesMärz 20, 2024 8:11:38 AM org.apache.catalina.core.AprLifecycleListener lifecycleEventINFORMATION: 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 initINFORMATION: Initialisiere ProtocolHandler["http-nio-8080"]März 20, 2024 8:11:39 AM org.apache.catalina.startup.Catalina loadINFORMATION: Server initialization in [2164] millisecondsMärz 20, 2024 8:11:39 AM org.apache.catalina.core.StandardService startInternalINFORMATION: Starting service [Catalina]März 20, 2024 8:11:39 AM org.apache.catalina.core.StandardEngine startInternalINFORMATION: Starting Servlet engine: [Apache Tomcat/10.1.19]März 20, 2024 8:11:40 AM org.apache.catalina.startup.HostConfig deployDescriptorINFORMATION: 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 deployDescriptorWARNUNG: 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 ignoredMärz 20, 2024 8:11:40 AM org.apache.catalina.startup.HostConfig deployDescriptorSCHWERWIEGEND: 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 moreCaused 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 moreMärz 20, 2024 8:11:40 AM org.apache.catalina.startup.HostConfig deployDescriptorINFORMATION: 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] msMärz 20, 2024 8:11:40 AM org.apache.coyote.AbstractProtocol startINFORMATION: Starting ProtocolHandler ["http-nio-8080"]März 20, 2024 8:11:40 AM org.apache.catalina.startup.Catalina startINFORMATION: 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;}@Overridepublic 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 annotationpublic class StudentControllerServlet extends HttpServlet {private static final long serialVersionUID = 1L;
private StudentDbUtil studentDbUtil;@Resource(name="jdbc/web_student_tracker")private DataSource dataSource;@Resource(name="")@Overridepublic 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.