struts中struts-config.xml和web.xml怎么协同工作的
1个回答
展开全部
struts-config.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
<struts-config>
<data-sources />
<form-beans />
<global-exceptions />
<global-forwards />
<action-mappings >
<action path="/HelloWorld/test" type="HelloAction">
<forward name="next" path="/testJsp.jsp" />
</action>
</action-mappings>
<message-resources parameter="com.yourcompany.struts.ApplicationResources" />
</struts-config>
在struts-config.xml文件中,每一个具体的Action都应该有一个<action>标签来定义。
path 指访问当前的Action的URL为/HelloWorld/test,type指实现当前Action的类,这个类应该是继承
自web.xml中定义的org.apache.struts.action.ActionServlet的,因为ActionServlet
本身是一个Servlet,因此,HelloWorld也是一个Servlet。
name=转发的名称,和控制器的联系(HelloAction.java),path=要转发的目的页面。
web.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<!-- 这两行代码是为org.apache.struts.action.ActionServlet命名为action -->
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>3</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>3</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>/HelloWorld/test</url-pattern>
</servlet-mapping>
</web-app>
HelloAction.java文件(控制器):
public class HelloAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception{
return (mapping.findForward("next"));
}
}
解读三个核心文件的联系:
这是一个简单的例子,只是来演示一下配置方便理解原理。
红色的/HelloWorld/test表示了URL-patlern,在IE输入后由web.xml送给对应的servlet (即action)处理,这个action就是struts-config.xml中<action path="/HelloWorld/test" type="HelloAction"> ,这样也就交到了控制器HelloAction.java处理了。
兰色的next表示了struts-config.xml和控制器HelloAction.java的联系,控制器再控制转发页面。
name=转发的名称,和控制器的联系(HelloAction.java),path=要转发的目的页面。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
<struts-config>
<data-sources />
<form-beans />
<global-exceptions />
<global-forwards />
<action-mappings >
<action path="/HelloWorld/test" type="HelloAction">
<forward name="next" path="/testJsp.jsp" />
</action>
</action-mappings>
<message-resources parameter="com.yourcompany.struts.ApplicationResources" />
</struts-config>
在struts-config.xml文件中,每一个具体的Action都应该有一个<action>标签来定义。
path 指访问当前的Action的URL为/HelloWorld/test,type指实现当前Action的类,这个类应该是继承
自web.xml中定义的org.apache.struts.action.ActionServlet的,因为ActionServlet
本身是一个Servlet,因此,HelloWorld也是一个Servlet。
name=转发的名称,和控制器的联系(HelloAction.java),path=要转发的目的页面。
web.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<!-- 这两行代码是为org.apache.struts.action.ActionServlet命名为action -->
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>3</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>3</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>/HelloWorld/test</url-pattern>
</servlet-mapping>
</web-app>
HelloAction.java文件(控制器):
public class HelloAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception{
return (mapping.findForward("next"));
}
}
解读三个核心文件的联系:
这是一个简单的例子,只是来演示一下配置方便理解原理。
红色的/HelloWorld/test表示了URL-patlern,在IE输入后由web.xml送给对应的servlet (即action)处理,这个action就是struts-config.xml中<action path="/HelloWorld/test" type="HelloAction"> ,这样也就交到了控制器HelloAction.java处理了。
兰色的next表示了struts-config.xml和控制器HelloAction.java的联系,控制器再控制转发页面。
name=转发的名称,和控制器的联系(HelloAction.java),path=要转发的目的页面。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询