你.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内部称为本地前锋。全球前锋位于元素之外。actionstruts-config.xmlaction
元素的path是forwardStruts 必须调用(和 web/servlet 容器)来呈现的 jsp 页面的相对路径。
希望这可以为您解决问题。