各位,今天我按照北京圣思园张龙老师的Struts2视频教程,有关于命struts.xml名空间的配置和应用;具体要求如下:
1、前台页面:input.jsp、output.jsp(位于webroot下的thenamespace文件夹下);
2、单击input.jsp页面上的"提交"按钮,发出请求:namespaceAction.action;
3、服务器接受请求跳转到output.jsp;
我配置了struts.xml的命名空间namespace如下:
struts.xml的配置:
<package name="hello" extends="struts-default" namespace="/thenamespace">
<action name="namespaceAction" class="com.zxp.test1.NameSpaceAction">
<result name="success">output.jsp</result>
</action>
</package>前台页面input.jsp的表单是<form action="namespaceAction.action">
<input type="submit" value="提交"/>
</form> 我总觉得配置文件没有写错,不过就是运行后单击input.jsp上的“提交”按钮,提示404,找不到相对应的Action.我看了浏览器的请求地址是:http://127.0.0.1:8080/struts2/namespaceAction.action?
问题就在这里,每次请求地址应该是:http://127.0.0.1:8080/struts2/thenamespace/namespaceAction.action?
因此我修改了form表单的action为:thenamespace/namespaceAction.action;单击提交之后,output.jsp页面显示出来了。
但我发现视频教程里form的action="namespaceAction.action"居然可以,而我的怎么试总是不可以。这就郁闷了。我究竟是哪里做错了?
以下是报错信息:
strutsnamespace
1、前台页面:input.jsp、output.jsp(位于webroot下的thenamespace文件夹下);
2、单击input.jsp页面上的"提交"按钮,发出请求:namespaceAction.action;
3、服务器接受请求跳转到output.jsp;
我配置了struts.xml的命名空间namespace如下:
struts.xml的配置:
<package name="hello" extends="struts-default" namespace="/thenamespace">
<action name="namespaceAction" class="com.zxp.test1.NameSpaceAction">
<result name="success">output.jsp</result>
</action>
</package>前台页面input.jsp的表单是<form action="namespaceAction.action">
<input type="submit" value="提交"/>
</form> 我总觉得配置文件没有写错,不过就是运行后单击input.jsp上的“提交”按钮,提示404,找不到相对应的Action.我看了浏览器的请求地址是:http://127.0.0.1:8080/struts2/namespaceAction.action?
问题就在这里,每次请求地址应该是:http://127.0.0.1:8080/struts2/thenamespace/namespaceAction.action?
因此我修改了form表单的action为:thenamespace/namespaceAction.action;单击提交之后,output.jsp页面显示出来了。
但我发现视频教程里form的action="namespaceAction.action"居然可以,而我的怎么试总是不可以。这就郁闷了。我究竟是哪里做错了?
以下是报错信息:
strutsnamespace
比较安全的配置
<form action="${pageContext.request.contextPath}/thenamespace/namespaceAction.action" method="post">
action的访问路径:http://127.0.0.1:8080/struts2/thenamespace/namespaceAction.action
所以action的值也是这个。
如果你的<form> 的action 值为/namespaceAction.action,则访问路径为
http://127.0.0.1:8080/struts2/namespaceAction.action。所以要把<package name="hello" extends="struts-default" namespace="/thenamespace">中的namespace改为namespace="/"就行了