struts中struts-config.xml和web.xml怎么协同工作的

 我来答
就烦条0o
2016-04-19 · 知道合伙人软件行家
就烦条0o
知道合伙人软件行家
采纳数:33315 获赞数:46492
从事多年系统运维,喜欢编写各种小程序和脚本。

向TA提问 私信TA
展开全部
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=要转发的目的页面。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式