如何在Struts中找到文件的位置?

时间:2011-04-15 10:02:26

标签: java servlets struts url-pattern

我想知道如何在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一无所知。

提前致谢

2 个答案:

答案 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");
}

请注意,forwardaction元素内的struts-config.xml称为本地转发。全局转发位于action元素之外。

path元素的forward是Struts必须调用的jsp页面的相对路径(以及web / servlet容器)。

希望这能为你解决问题。

答案 1 :(得分:0)

  

我知道.do将是项目中任何文件的扩展名

.do将是网址格式。

每当你点击/yourapp/login.do时,应该在struts中执行特定操作并将其映射到struts-config.xml