http status 404

来源:互联网 发布:模拟城市 mac 破解版 编辑:程序博客网 时间:2024/06/05 15:30



http status 404


想写一个struts项目,搭建好环境之后tomcat运行成功,访问却是404,纯项目tomcat也是404,访问页面没有报错,服务器也没有提示错误信息,于是删掉所有页面,struts.xml ,以及struts jar包,项目还是404,纯端口访问都是404.why? 


重新建一个空项目还是404.  



http://localhost:8080/dxm_struts2/

加上网站的项目名称才可以访问,不知道这是tomcat原因还是其他。



java.lang.NoSuchMethodException: dxm.com.action.Hello.execute()    ?

-----------ok ,struts  action默认方法是 execute(), 如果是其他名字的方法需要在struts 配置文件 action 熟悉method中指出。


关于struts 配置文件namespace 属性问题 

<struts>
   <package name="hello"    extends="struts-default">
    <action name="sayHello" class="dxm.com.action.Hello" method="sayHello"> 
    <result name="1">/home.jsp</result>
    </action>
   </package>
</struts>


没有加上namespace 属性值之后,访问地址路径:

 http://192.168.0.140:8080/dxm_struts/sayHello
 

<struts>
   <package name="hello"   namespace="/dxm" extends="struts-default">
    <action name="sayHello" class="dxm.com.action.Hello" method="sayHello"> 
    <result name="1">/home.jsp</result>
    </action>
   </package>
</struts>



上面加上namespace 属性值之后,访问地址变成以下路径:
http://192.168.0.140:8080/dxm_struts/dxm/sayHello,直接访问地址是ok,

但是页面跳转报错如下

There is no Action mapped for namespace [/] and action name [sayHello] associated with context path [/dxm_struts2]. - [unknown location]

struts namespace 有特定的用法。

 
Struts2中关于Action的namespace在很多地方出现,如struts.xml、form标签等等,有些莫名其妙的错误就是由于namespace设置错误造成的。如无法找到匹配的Action,访问不了result指定的页面等等。 
namespace的作用是定义访问Action的url,在不同的namespace中可以定义同名的action,不同的包可以共享同一个namespace,可以通过namespace控制action的访问。 

1. <s:form>标签中如何指定namespace,是否必须指定namespace? 
如果你访问的jsp路径与action的namespace重合,那么并不需要指定namespace,struts2会首先自动寻找跟你jsp路径相同的namespace,如果没有会寻找默认namespace。 
如果form标签中没有指定namespace,那么会使用jsp路径作为namespace,在struts.xml中寻找action。如果form标签中指定了namespace,那么直接使用指定的namespace查找action。 
例: 
访问URL="http://localhost:8080/struts2/MainWeb/login.jsp",中"/MainWeb"为 Web应用程序下的访问路径,如果在login.jsp中的form标签中没有指定namespace,那么默认action的namespace 为"/MainWeb";如果login.jsp中设置了form标签的namespace<s:form namespace="/MainWeb"/>,那么action的namespace则为"/MainWeb"。 

2. 在struts.xml的<package>标签中如何指定namespace? 
在<package>中指定了namespace,不仅为action提供了namespace,也同时规定了result返回结果 的路径。在result中可以使用绝对路径和相对路径对返回结果进行配置,绝对路径以"/"开头,代表了Web应用程序上下文的根目录,相对路径不以" /"开头。绝对路径不受Action的namespace影响,而相对路径则以Action的namespace为根路径。 

3. 举例说明 
默认状态 

Struts.xml代码 
  1. <package name="default" extends="struts-default">  

Jsp代码 
  1. <s:form name="form_login" action="userInfoLogin" theme="simple">  


指定状态 
Struts.xml代码 
  1. <package name="MainWeb" extends="struts-default" namespace="/MainWeb">  

Jsp代码 
  1. <s:form name="form_login" action="userInfoLogin" namespace="/MainWeb" theme="simple">  


 

http://192.168.0.140:8080/dxm_struts/dxm/sayHello

http status 404


想写一个struts项目,搭建好环境之后tomcat运行成功,访问却是404,纯项目tomcat也是404,访问页面没有报错,服务器也没有提示错误信息,于是删掉所有页面,struts.xml ,以及struts jar包,项目还是404,纯端口访问都是404.why? 


重新建一个空项目还是404.  



http://localhost:8080/dxm_struts2/

加上网站的项目名称才可以访问,不知道这是tomcat原因还是其他。



java.lang.NoSuchMethodException: dxm.com.action.Hello.execute()    ?

-----------ok ,struts  action默认方法是 execute(), 如果是其他名字的方法需要在struts 配置文件 action 熟悉method中指出。


关于struts 配置文件namespace 属性问题 

<struts>
   <package name="hello"    extends="struts-default">
    <action name="sayHello" class="dxm.com.action.Hello" method="sayHello"> 
    <result name="1">/home.jsp</result>
    </action>
   </package>
</struts>


没有加上namespace 属性值之后,访问地址路径:

 http://192.168.0.140:8080/dxm_struts/sayHello
 

<struts>
   <package name="hello"   namespace="/dxm" extends="struts-default">
    <action name="sayHello" class="dxm.com.action.Hello" method="sayHello"> 
    <result name="1">/home.jsp</result>
    </action>
   </package>
</struts>



上面加上namespace 属性值之后,访问地址变成以下路径:
http://192.168.0.140:8080/dxm_struts/dxm/sayHello,直接访问地址是ok,

但是页面跳转报错如下

There is no Action mapped for namespace [/] and action name [sayHello] associated with context path [/dxm_struts2]. - [unknown location]

struts namespace 有特定的用法。

 
Struts2中关于Action的namespace在很多地方出现,如struts.xml、form标签等等,有些莫名其妙的错误就是由于namespace设置错误造成的。如无法找到匹配的Action,访问不了result指定的页面等等。 
namespace的作用是定义访问Action的url,在不同的namespace中可以定义同名的action,不同的包可以共享同一个namespace,可以通过namespace控制action的访问。 

1. <s:form>标签中如何指定namespace,是否必须指定namespace? 
如果你访问的jsp路径与action的namespace重合,那么并不需要指定namespace,struts2会首先自动寻找跟你jsp路径相同的namespace,如果没有会寻找默认namespace。 
如果form标签中没有指定namespace,那么会使用jsp路径作为namespace,在struts.xml中寻找action。如果form标签中指定了namespace,那么直接使用指定的namespace查找action。 
例: 
访问URL="http://localhost:8080/struts2/MainWeb/login.jsp",中"/MainWeb"为 Web应用程序下的访问路径,如果在login.jsp中的form标签中没有指定namespace,那么默认action的namespace 为"/MainWeb";如果login.jsp中设置了form标签的namespace<s:form namespace="/MainWeb"/>,那么action的namespace则为"/MainWeb"。 

2. 在struts.xml的<package>标签中如何指定namespace? 
在<package>中指定了namespace,不仅为action提供了namespace,也同时规定了result返回结果 的路径。在result中可以使用绝对路径和相对路径对返回结果进行配置,绝对路径以"/"开头,代表了Web应用程序上下文的根目录,相对路径不以" /"开头。绝对路径不受Action的namespace影响,而相对路径则以Action的namespace为根路径。 

3. 举例说明 
默认状态 

Struts.xml代码 
  1. <package name="default" extends="struts-default">  

Jsp代码 
  1. <s:form name="form_login" action="userInfoLogin" theme="simple">  


指定状态 
Struts.xml代码 
  1. <package name="MainWeb" extends="struts-default" namespace="/MainWeb">  

Jsp代码 
  1. <s:form name="form_login" action="userInfoLogin" namespace="/MainWeb" theme="simple">  


 

http://192.168.0.140:8080/dxm_struts/dxm/sayHello
0 0