There is no Action mapped for namespace / and action name hello

18,668
  1. Use the new filter

    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>
            org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
        </filter-class>
    </filter>
    

    instead of the old one

    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>
            org.apache.struts2.dispatcher.FilterDispatcher
        </filter-class>
    </filter>
    

    unless you are using a very old version of Struts2 (2.0 for example).

  2. Your web.xml deployment descriptor is messed up: you are saying it is 3.0, then linking 2.5 xmlns:web.

    If you have a Servlet 3.0 Container (Java EE 6) use:

    <web-app          xmlns="http://java.sun.com/xml/ns/javaee"
                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
                             http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
                    version="3.0">
    

    If you have a Servlet 2.5 Container (Java EE 5) use:

    <web-app          xmlns="http://java.sun.com/xml/ns/javaee"
                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
                             http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
                    version="2.5">
    
  3. Specify namespace in your package declaration, so when you will add new packages you won't have problems:

    <package name="helloworld" extends="struts-default" namespace="/" >
    
  4. No need to specify the method in Action config if it is execute(), and no need to specify the result if it is "success":

    <action name="hello" class="com.tutorialspoint.struts2.HelloWorldAction" >
        <result>/HelloWorld.jsp</result>
    </action>
    
  5. Better using HTML5 DOCTYPE and UTF-8 CharSet if possible.

Share:
18,668
user2794306
Author by

user2794306

Updated on June 04, 2022

Comments

  • user2794306
    user2794306 almost 2 years
    package com.tutorialspoint.struts2;
    
    public class HelloWorldAction{
       private String name;
    
       public String execute() throws Exception {
          return "success";
       }
    
       public String getName() {
          return name;
       }
    
       public void setName(String name) {
          this.name = name;
       }
    }
    

    index.jsp

    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
       pageEncoding="ISO-8859-1"%>
    <%@ taglib prefix="s" uri="/struts-tags"%>
       <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
    "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>Hello World</title>
    </head>
    <body>
       <h1>Hello World From Struts2</h1>
       <form action="hello">
          <label for="name">Please enter your name</label><br/>
          <input type="text" name="name"/>
          <input type="submit" value="Say Hello"/>
       </form>
    </body>
    </html>
    

    struts.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts PUBLIC
       "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
       "http://struts.apache.org/dtds/struts-2.0.dtd">
    <struts>
    <constant name="struts.devMode" value="true" />
       <package name="helloworld" extends="struts-default">
    
          <action name="hello" 
                class="com.tutorialspoint.struts2.HelloWorldAction" 
                method="execute">
                <result name="success">/HelloWorld.jsp</result>
          </action>
       </package>
    </struts>
    

    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>Struts 2</display-name>
       <welcome-file-list>
          <welcome-file>index.jsp</welcome-file>
       </welcome-file-list>
       <filter>
          <filter-name>struts2</filter-name>
          <filter-class>
             org.apache.struts2.dispatcher.FilterDispatcher
          </filter-class>
       </filter>
    
       <filter-mapping>
          <filter-name>struts2</filter-name>
          <url-pattern>/*</url-pattern>
       </filter-mapping>
    </web-app>
    

    HelloWorld.jsp

    <%@ page contentType="text/html; charset=UTF-8" %>
    <%@ taglib prefix="s" uri="/struts-tags" %>
    <html>
    <head>
    <title>Hello World</title>
    </head>
    <body>
       Hello World, <s:property value="name"/>
    </body>
    </html>
    

    This code i have write for hello World Example In Struts But i am getting Error :

    HTTP Status 404 - There is no Action mapped for namespace / and action name index.

    am new in struts and try to Understand struts Mvc Framw work But i dont know here am doing Mistake where am Missing this please help me how i will Fix it