The servlets named [ClassName] and [com.example.ClassName] are both mapped to the url-pattern [/ClassName] which is not permitted

28 views Asked by At

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.
0

There are 0 answers