【发布时间】:2025-12-19 15:35:09
【问题描述】:
我有一个使用struts 2.1.8 的项目。该项目是使用struts2-convention-plugin注解配置的。这是我在 web.xml 中的 struts 配置:
<filter>
<filter-name>struts2Filter</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2Filter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>struts2Filter</filter-name>
<url-pattern>/struts/*</url-pattern>
</filter-mapping>
struts.xml:
<constant name="struts.convention.default.parent.package" value="borrow-default" />
<constant name="struts.convention.package.locators" value="action" />
<constant name="struts.convention.package.locators.basePackage" value="com.abc.action" />
<constant name="struts.convention.result.path" value="/" />
A.java:
@Namespace("/regist")
public class A extends ActionSupport{
@Action(value="/a", results = {@Result(location = "/a/test.jsp")})
public String execute(){
return SUCCESS;
}
}
这就是问题所在,我可以访问 url http://localhost:8080/a/test.jsp 和 http://localhost:8080/regist/a.action 中的 test.jsp,但我仍然可以访问 url http://localhost:8080/a/test.action 中的同一页面。我不知道为什么会这样,我的配置或代码有什么问题?
我也尝试了一些其他的url,似乎命名空间没有生效。
【问题讨论】:
-
你的 test.jsp 文件保存在哪里。它应该在 WEB-INF 文件夹中,然后才会受到保护。
-
@MohanaRaoSV 它不在 WEB-INF 文件夹中,我现在无法更改目录。
-
为什么不贴包名?
-
@Roman C A类的包是com.abc.action
标签: java struts2 namespaces