你.do
是你的 URL 模式(@Jigar Joshi 提到)要查看它的映射位置,你必须在浏览器上查看你的 URL:
假设你有http://localhost:8080/myapp/login.do
,那么.do
你的 web 容器就会看到它,它会调用你的 Struts Servlet org.apache.struts.action.ActionServlet
。
然后,StrutsActionServlet
将看到您的相对路径/login
(请参阅我如何忽略.do
)并查看它是否映射到您的config
文件(在您的情况下/WEB-INF/struts-config.xml
)。
从那里,StrutsActionServlet
检查是否有与您的相对路径匹配的操作路径,如下所示:
<action path="/login" type="com.myapp.action.LoginAction" name="LoginForm" scope="request">
</action>
如果<action>
找到,Struts 将调用com.myapp.action.LoginAction
类并调用execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception
方法(如果该类只是一个简单的Action
类)。
我希望这有帮助。
在您的<action>
元素中,您可能会发现另一个名为 的元素<forward>
,例如:
<forward name="FHome" path="/content/jsp/home.jsp" />
forwardname
属性基本上是 Struts Action 在返回 时调用的ActionForward
,代码如下:
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
return mapping.findForward("FHome");
}
请记住,元素中的forward
内部称为本地前锋。全球前锋位于元素之外。action
struts-config.xml
action
元素的path
是forward
Struts 必须调用(和 web/servlet 容器)来呈现的 jsp 页面的相对路径。
希望这可以为您解决问题。