SSH总结错误

来源:互联网 发布:小米看电视直播软件 编辑:程序博客网 时间:2024/05/16 08:20
SSH错误

      今天在调试一个基础的Struts2框架小程序。总是提示"There is no Action mapped for namespace / and action name"的错误。上网查询后发现这是一个初学者经常碰到的问题,导致错误的原因主要有两种。总结如下:

 1.错误:

      一、struts.xml文件错误。这种错误又分为以下几种:1,struts.xml文件名错误。一定要注意拼写问题;2,struts.xml文件放置路径错误。一定要将此文件放置在src目录下。编译成功后,要确认是否编译到classes目录中;3,struts.xml文件内容错误。下面给出一个正确的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>    <package name="default" namespace="/" extends="struts-default">        <action name="login" class="com.wanggc.struts2.sample.Struts2Action">        <result name="success">/jsp/result.jsp</result>        </action>    </package></struts>

   二、如果排除了struts.xml文件的问题,还有一种可能就是,在web.xml文件中的<welcome-file>信息中是否配置了自己工程的启动页面。如果没有配置,地址栏中要输入完成的url,如:http://localhost:8080/Struts2Sample/jsp/login.jsp,后面的资源详细信息不输入的时候也会报这个错误,我就是栽在这个问题上的(^_^)。
2.错误:
不要把Struts.xml放在包里面
3.错误:
<includefile="com/zhiyou/b/action/struts.xml"></include>
解决问题
<packagename="user" 是否与包下得struts.xml重名了

(1)type="dispatcher" 为默认,用于jsp页面跳转
<result name="success">/index.jsp</result> 
完整的写法为: 
<result name="success" type="dispatcher"> 
    <param name="location">/index.jsp</param> 
</result>

(2)type="redirect" 重定向到jsp、action、外部网址

<result name="success" type="redirect">/index.jsp</result> 
<result name="success" type="redirect">/login.do</result> 
<result name="success" type="redirect">http://www.baidu.com</result>

重定向时带参数处理方法:

1.type="redirect": 
<result name="success" type="redirect">/login.do?userId=${userId }</result> 
2.type="redirect-action": 
见(3)

(3)type="redirect-action" 重定向到另外一个action 

<result name="success" type="redirect-action"> 
    <param name="actionName">login.do</param> 重定向action名
    <param name="userId">userId</param>带的参数

转自:http://sky-chi.iteye.com/blog/1487134

</result>

(4)type="chain" 用于action跳转。 

<action name="action1" class="org.Action1"> 
    <result name="success" type="chain">action2.do</result> 
</action> 
<action name="action2" class="org.Action2"> 
    <result name="success">login.jsp</result> 
</action>
(5)type="plaintextj" 跳转显示源代码

<result name="err" type="plaintext"> 
    <param name="location">具体的位置</param> 
    <param name="charSet">字符规范(如GBK)</param> 
</result>
4.错误:

    项目用的是struts 2.3.15.3 这个版本,项目中有用到 struts2-json-plugin-2.3.15.3.jar 这个jar包。当把log4j的日志级别调为error时,没出现问题。当把日志级别调为debug时,就会出现 Java.lang.NoSuchFieldException: DEFAULT_PARAM.....但项目依然可以正常运行。

      这是这个版本struts2的一个bug问题,在org.apache.struts2.json.JSONResult  这个类中 是没有这个 DEFAULT_PARAM   属性的。 
打开源码看一下,就明白了,这个异常信息不影响使用。如果要去除这个异常信息,可以找到源码,拷贝出来,在项目中自己创建一个同样的类,路径和类名都要一样,然后在类中加上 public static final String DEFAULT_PARAM = "status";这个属性就OK了。