没有为命名空间 / 和操作名称 hello 映射的操作

2024-02-03

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;
   }
}

索引.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>

我在 Struts 中为 hello World 示例编写了这段代码,但我收到错误:

HTTP 状态 404 - 没有为命名空间/和操作名称索引映射的操作。

我是 struts 新手,尝试了解 struts Mvc 框架,但我不知道我在这里犯了错误,我缺少这个,请帮助我如何修复它


  1. 使用新的过滤器

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

    而不是旧的

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

    除非您使用的是非常旧的 Struts2 版本(例如 2.0)。

  2. 您的 web.xml 部署描述符混乱了:您说它是 3.0,然后链接 2.5 xmlns:web。

    如果您有 Servlet 3.0 容器 (Java EE 6),请使用:

    <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">
    

    如果您有 Servlet 2.5 容器 (Java EE 5),请使用:

    <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. 在包声明中指定名称空间,这样当您添加新包时就不会出现问题:

    <package name="helloworld" extends="struts-default" namespace="/" >
    
  4. 如果是,则无需在 Action config 中指定方法execute(),如果是则无需指定结果"success":

    <action name="hello" class="com.tutorialspoint.struts2.HelloWorldAction" >
        <result>/HelloWorld.jsp</result>
    </action>
    
  5. 如果可能的话,最好使用 HTML5 DOCTYPE 和 UTF-8 CharSet。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

没有为命名空间 / 和操作名称 hello 映射的操作 的相关文章

随机推荐

  • PHP 与 GET 请求的切换

    我正在为我的网站构建一个简单的管理区域 我希望 URL 看起来像这样 http mysite com admin home http mysite com admin settings http mysite com admin users
  • R grep 多列搜索模式

    我有一个数据框 如下所示 Col1 Col2 Col3 A B C D E F G H I 我试图保持与 Col2 中的 B 或 Col3 中的 F 匹配的行 以获得 Col1 Col2 Col3 A B C D E F I tried d
  • 如何使用 vb.net 将数据获取到数据库(类、模块和表单)

    我希望标题足以理解我的问题 我已经安装了运行 ADO NET 所需的东西 我的模块中已经有一个连接字符串 并且我的类中已经有一个数据查询 Imports System Data Imports System Data OleDb Modul
  • 如何使用 Razor MVC 显示文件夹中的图像?

    我正在使用 Razor MVC 我想显示 Content uploads 文件夹中的图像 我想出了以下解决方案 foreach FileInfo fileInfo in new DirectoryInfo Server MapPath Co
  • MSEdge 无法启动:崩溃(chrome 无法访问)

    我是 Selenium python 的初学者 我尝试使用以下代码使用现有配置文件 默认 调用 Edge 浏览器 但一旦执行开始 它就会抛出以下异常 有人可以帮我解决这个问题吗 我错过了什么吗 edge options webdriver
  • 当鼠标位于旋钮图像上时,如何将图像放在 jslider 的旋钮图像上

    当鼠标位于旋钮图像上时 我需要将图像放在 jslider 的旋钮图像上 我做过这样的事情 slider new Slider s new mySliderUI slider slider png slider setUI s slider
  • 在 Puppet 中迭代哈希键/值

    我正在尝试使用 Puppet 来更新 ASP NET web config 中的任意应用程序设置列表 用于部署目的 但我陷入了困境 主要是因为我是一个真正的 puppet 专家 我有这个 yaml 文件 hiera appSettings
  • “复数或单数生成的对象名称”设置是什么意思?

    设置新的实体数据模型时 可以选择 x 将生成的对象名称复数或单数化 我注意到这也是 LINQ 中的一个选项 另外 现在我正在研究 ADO NET 实体框架 我注意到它还有 DEFAULT 来 复数或单数生成的对象名称 设置 实体数据模型 时
  • Android Studio 中按 Enter 键换行?

    我刚刚开始使用 Android Studio 当我编辑 activity main xml 时 我无法通过按 Enter 键转到新行 另外 我尝试插入新字母 但新字母刚刚被替换 所以我到处点击以使输入键起作用 然后突然我得到了新的一行 我不
  • 如何使用MinGW Windres编译资源文件?

    我的最终目标是设置使用 MinGW gcc g 编译的可执行文件的版本 在属性 gt 详细信息中显示 但现在我想用 Windres 编译一个资源文件 以便稍后能够手动链接它 但是当我使用此命令时出现以下错误 windres resource
  • 通过批处理文件(.bat)编译 Inno Setup 项目

    在我的工作项目中 我们必须使用 Inno Setup 创建 4 个安装程序 这样 我必须逐个文件运行 这最终会占用我更多的时间 文件 iss setup prog 01 iss setup prog 02 iss setup prog 03
  • 解析 HTTParty 响应

    我正在使用 HTTParty 提取 Facebook 用户的书籍列表 但在解析响应时遇到问题 Facebook 以这种方式返回数据 data name Title category Book id 21192118877902 create
  • Mac上像Cloud App一样自动截图上传

    云应用程序 http getcloudapp com 有这个巧妙的功能 当新的屏幕截图添加到桌面时 它会自动上传它们 有什么想法如何做到这一点吗 您可以自己做类似的事情 而无需太多编程方式 在操作系统中 您可以配置 文件夹操作 http w
  • Android自定义视图组委托addView

    我想实现自定义ViewGroup就我而言 源自FrameLayout但我希望从 xml 添加的所有子视图不直接添加到此视图中 而是添加到FrameLayout包含在这个习俗中ViewGroup 让我举个例子来说明这一点
  • 缺少必需的模块 Firebase - Jenkins 构建错误

    我已经配置了 jenkins 来构建我的 ios swift 应用程序 我用过 xcode 版本 8 1 和 swift 版本 3 我是 Jenkins 的新手 并继续集成过程 根据我的控制台输出 我认为构建成功 因为控制台输出像这样打印
  • java.lang.UnsupportedOperationException:AdapterView 中不支持 addView(View, LayoutParams)

    我正在使用网上找到的 Expandable ListView 示例 活动 public class ExpandableListViewActivity extends ExpandableListActivity strings for
  • utf8mb4_unicode_ci 与 utf8mb4_bin

    首先让我们看看我是否做对了 字符集是一组符号和编码 排序规则是用于比较字符集中字符的一组规则 我应该使用 utf8mb4 因为 mysql utf8 是一种欺诈 最多 3 字节 而不是 PHP 中真正的最多 4 字节真正的 utf8 字符集
  • 打字稿和传播运算符?

    function foo x number y number z number console log x y z var args number 0 1 2 foo args 为什么我在 Typescript Playground 中收到
  • 多个 Activemq 远程代理的 Spring 配置

    如何在spring上下文中配置多个远程activemq代理 不同的IP地址 以下是 1 个远程代理的配置 我正在使用camel来创建路由 用于在多个远程代理中的不同队列中生成和使用消息 根据以下路由 系统如何知道每个队列属于哪个远程代理 项
  • 没有为命名空间 / 和操作名称 hello 映射的操作

    package com tutorialspoint struts2 public class HelloWorldAction private String name public String execute throws Except