struts散发请求的过程与相关配置

struts分发请求的过程与相关配置

 struts散发请求的过程与相关配置

/02_struts分发请求的过程与相关配置
按照mvc模式设计出的web层框架,其实就是一个大大的servlet,
我们可以在web.xml文件中将符合某种特征所有请求交给这个Servlet处理,
这个servlet再参照一个配置文件(struts-config.xml)将各个请求分配给不同的action去处理
根据struts提供的例子http://localhost:8080/struts-mailreader-1.3.10/Logon.do

<form id="LogonForm" method="post" action="/struts-mailreader-1.3.10/SubmitLogon.do;
jsessionid=FAD709E61ABC01E37FBF31FDF3D6CAAA" onsubmit="return validateLogonForm(this);">
	

查看源代码后知道提交后交给/SubmitLogon.do。
在web.xml文件中查找/SubmitLogon.do没有找到,有通配符*.do

<!-- Action Servlet Configuration -->
    <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>1</load-on-startup>
    </servlet>

    <!-- Action Servlet Mapping -->
    <servlet-mapping>
        <servlet-name>action</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>

action对应一个叫ActionServlet的类;
查询struts-config.xml中/SubmitLogon;不能加.do。后缀名可以改变

 <!-- Process a user logon -->
        <action
                path="/SubmitLogon"
                type="org.apache.struts.apps.mailreader.actions.LogonAction"
                name="LogonForm"
                scope="request"
                cancellable="true"
                validate="true"
                input="Logon">
            <exception
                    key="expired.password"
                    type="org.apache.struts.apps.mailreader.dao.ExpiredPasswordException"
                    path="/ChangePassword.do"/>
            <forward
                    name="Success"
                    path="/MainMenu.do"/>
        </action>

而注册页面的转到/SaveRegistration.do却找不到,有*号通配符防止膨胀
 <action path="//BaseAction"
                input="Input"
                type="org.apache.struts.apps.mailreader.actions.{1}Action"
                name="{1}Form"
                scope="request">
            <forward
                    name="Success"
                    path="/{1}.jsp"/>
            <forward
                    name="Input"
                    path="/{1}.jsp"/>
</action>

<action
                path="/Save*"
                extends="//BaseAction"
                parameter="Save"
                cancellable="true"
                validate="true">  //是否需要校验
            <forward
                    name="Success"
                    path="/MainMenu.do"/>
 </action>
 
03_struts封装请求参数的过程与相关配置
将参数封装成formbean对象(就是一个java类),这个类的每一个属性对应一个请求参数。Formbean有一个validata的方法

struts散发请求的过程与相关配置