我正在尝试更新使用struts2,jsp和标准servlet构建的简单Web应用程序。 我正在尝试将网址重定向到特定操作,但似乎无法让它正常工作。 例如,正确的网址是:
http://localhost:8080/theapp/lookup/search.action
这是我的web.xml:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd"><web-app>
<display-name>theapp</display-name>
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
这是我的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">
<default-action-ref name="search" />
<action name="search" method="search" class="com.theapp.SearchAction" >
<result>index.jsp</result>
<result name="input" >index.jsp</result>
<result name="error" type="redirect">site_locator_mobile/error.action</result>
</action>
这里的问题是,如果我没有像上面那样指定正确的url,我只获取index.jsp文件,但是没有正在处理index.jsp中的任何属性,因为信息是包含在servlet中。
如果有人刚进入,我想要的是:
http://localhost:8080/theapp/lookup/
他们将被带到:
http://localhost:8080/theapp/lookup/search.action
由于
答案 0 :(得分:0)
也许您可以将servlet指定为欢迎文件:
<welcome-file-list>
<welcome-file>search.action<welcom-file>
<welcome-file-list>
注意:有些人报告说实际上必须存在一个名为search.action
的文件才能生效。
另一个选择是让您的index.jsp
重定向到search.action
并使用其他结果jsp:
<% response.sendRedirect("search.action"); %>
编辑:还可以直接向web.xml
添加过滤器映射指令,将/theapp/lookup/
的请求重定向到/theapp/lookup/search.action
但似乎更复杂。
答案 1 :(得分:0)
这可能听起来很愚蠢,但是你可以发布struts.xml文件的全部内容吗?您是否已将名称空间添加到struts xml文件中。您正在尝试查找myApp / lookup / someAction.action。我认为你应该为你的包定义一个名称空间。