服务流程

一、客户端提交请求

http://web-site/login.do

1. 分析扩展名 "do",在 web.xml 中查找到对应的 servlet,如下查到为 action,如果没有则直接查找相应文件。

    <servlet-mapping>
        <servlet-name>action</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>

2. 查到了 action,再在 web.xml 中查对应的 servlet 类,运行该类:

    <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>

3. 根据请求中的信息 "/login",在 struts-config.xml 中查找 action 及对应的类 "www.LoginAction"

  <action-mappings>
    <action path="/login" input="/MemberLogin.jsp" name="loginFormBean"
            type="www.LoginAction">
      <forward name="success" path="/LoginSuccess.jsp"/>
      <forward name="failed" path="/LoginFailed.jsp"/>
    </action>
  </action-mappings>

4. 运行 www.LoginAction 类,该类应返回一个 ActionForward 对象

5. 根据 ActionForward 对象的 name 属性值 "success",查找到的路径是 "/LoginSuccess.jsp",转到第 1 步继续。

二、找到相应文件,如 "/LoginSuccess.jsp"

取得文件源码,解析服务端标签后返回 HTML 内容到客户端。

<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%>
<html:form action="/login456.jsp">
    <bean:message key="fields.userid"/>
    <input type="text" name="userid"/>
    <bean:message key="fields.password"/>
    <input type="password" name="password"/>
    <input type="submit" value="登陆"/>
</html:form>
<html:link page="/login456.do">
  <bean:message key="link.login456"/>
</html:link>

1. 标签库引入

<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%>

2. 解析 <bean:message key="fields.userid"/> 标签

在资源文件 /WEB-INF/classes/XXXX/ApplicationResources.properties 中查找 key 。

将找到的内容替换该标签 "<b>User ID:</b>"

fields.userid=<b>User ID:</b>

2. 解析 <html:link page="/login.do"> 标签

这个是超链接标签,显示结果是:

<a href="/login.do">...</a>