各位,今天我按照北京圣思园张龙老师的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
解决方案 »
- C++和j2ee的web之间的通信问题
- 怎么实现b/s模式的远程监控系统
- Hibernate 测并发时的异常 期待高手
- 使用JDBC的Statement删除数据报错
- 关于写WEB应用程序
- JSP页面如何调ActiveX控件?
- 我的my Eclipse 6.5版本里面怎么没有TCP/IP Monitor
- 三个输入框,求乘积的问题。我怎么才能取得正常的值?
- 为什么我的Jbuilder9 不能在菜单"New"中新建一个Servlet?
- JBuilder中建立并运行一个有JavaBean的JSP项目是这么个过程么?
- 如何用htmlparser获取网页上下拉框的选中值?
- 请问有人遇到过这种情况吗:request.getParameter()只能取一位数字
比较安全的配置
<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="/"就行了