我想知道如何在Struts中找出文件的位置。 文件的位置 以下是该计划的一部分:
<filter-mapping>
<filter-name>LoginFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
我知道.do
将是项目中任何文件的扩展名,但我没有得到它的位置。我对struts一无所知。
提前致谢
答案 0 :(得分:3)
您的.do
是您的网址格式(@Jigar Joshi提到),要查看其映射位置,您必须在浏览器上查看您的网址:
假设您拥有http://localhost:8080/myapp/login.do
,那么您的网络容器会看到.do
并且它会调用您的Struts Servlet org.apache.struts.action.ActionServlet
。
然后,Struts ActionServlet
会看到您的相对路径/login
(请参阅我如何忽略.do
)并查看它是否已映射到您的config
文件中(你的案件/WEB-INF/struts-config.xml
)。
从那里开始,Struts ActionServlet
检查是否存在与您的相对路径匹配的操作路径,如下所示:
<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" />
转发name
属性基本上是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必须调用的jsp页面的相对路径(以及web / servlet容器)。
希望这能为你解决问题。
答案 1 :(得分:0)
我知道.do将是项目中任何文件的扩展名
否,.do
将是网址格式。
每当你点击/yourapp/login.do
时,应该在struts中执行特定操作并将其映射到struts-config.xml