Struts.xml命名空间namespace的配置和应用

力力尼 2013-04-05 05:41:03
各位,今天我按照北京圣思园张龙老师的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"居然可以,而我的怎么试总是不可以。这就郁闷了。我究竟是哪里做错了?
以下是报错信息:
...全文
124 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
力力尼 2013-04-05
  • 打赏
  • 举报
回复
你说的那种安全配置是可以,不过教程上说明,<form> 的action 值为/namespaceAction.action时,发出请求的页面是在webroot/thenamespace目录下,那请求会映射到struts.xml中对应命名空间namespace为“thenamespace”的action(name="namespaceAction").而且返回的页面output.jsp也会在相对应的命名空间namespace下找!
  • 打赏
  • 举报
回复
这是你form标签路径配置的问题。 比较安全的配置 <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="/"就行了

81,114

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧