Struts串讲

Struts串讲

一、struts概述

1Struts实现MVC设计模式

1Struts实质上就是在JSPModel2的基础山实现一个MVC框架。

1)模型:由业务实现业务逻辑的JavaBeanEJB组件构成

2)控制器:由ActionServletAction来实现

3)视图:由一组JSP文件构成

2

2Struts的工作流程

1Web应用启动时加载并初始化ActionServletActionServletstruts-config.xml中读取配置信息,把它们存放到各种配置对象中。

2)当ActionServlet接收到一个客户请求时,检索和用户请求匹配的ActionMapping实例,如果不存在,就返回用户请求路径无效的信息。

3)如果ActionForm实例不存在,就创建一个ActionForm对象,把客户提交的表单数据保存到ActionForm对象中。

4)根据配置信息决定是否需要表单验证。如果需要验证,就调用ActionFormvalidate()

5ActionFormvalidate()方法

1)如果返回null或返回一个不包含ActionMessageActionErrors对象,就表示表单验证成功。

2)如果返回一个包含一个或多个ActionMessageActionErrors对象,就表示表单验证失败,此时ActionServlet将直接把请求转发给包含用户提交表单的JSP组件。在这种情况下,不会再创建Action对象并调用Actionexecute()方法。

6ActionServlet根据ActionMapping实例包含的映射信息决定将请求转发给哪个Action。如果相应的Action实例不存在,就先创建这个实例,然后调用Actionexecute()方法。

7Actionexecute()方法返回一个ActionForward对象,ActionServlet再把客户请求转发给ActionForward对象指向的JSP组件。

8ActionForward对象指向的JSP组件生成动态网页,返回给客户。

request response

 forward

dispatch

二、Struts 1.2X 构成

1struts运行需要的jar

1commons-digester.jar  用于解析配置文件

2commons-fileupload.jar  用于实现文件上传(进行了进一步的封装)

3commons-logging.jar 用于日志处理

4commons-beanutils.jar 用于POJO的属性赋值、拷贝等

5commons-validator.jar 用于表单验证

2、 struts标记库文件(tld

1struts-bean.tld

2struts-html.tld

3struts-logic.tld

4struts-nested.tld

5struts-tiles.tld

3、配置文件struts-config.xml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">

<struts-config>

  <data-sources />

    <form-beans>

     <form-bean name="xxx" type="ActionForm的类全名">

     <form-bean name="LoginForm" type="basic.LoginForm">

  </form-beans>

  <global-exceptions />

  <global-forwards />

  <action-mappings >

<action path="action的路径,在formaction中写的那个路径"  

type="Action的类全名 name="form的名字

scope="request|session(默认值)">

        <forward name="在自定义的Action中使用的findForward方法的参数

path="跳转页面的路径" redirect="false"重定向,默认false/>

      </action>

  </action-mappings>

  <message-resources parameter="资源文件的名字(不加后缀)" />

</struts-config>

4、资源文件

  <message-resources parameter="ApplicationResources" >

  </message-resources>

使用资源文件的步骤:

(1) 确认资源文件的jar导入

(2) 引入标记库

<%@tagliburi="/WEB-INF/struts-bean.tld" prefix="bean" %>

3) 使用:

ApplicationResources.properties文件以“消息key、消息文本”格式存放数据

eg.

ApplicationResources.properties中:

jsp.user=username

test.jsp中:

<bean:message key="jsp.user"/>

注意:ApplicationResources.properties文件不支持中文,如果想在页面中展示中文只能把中文转为unicode码,命令:native2ascii 原文件名 目标文件名。

国际化:按照浏览器所要求的语言选择资源文件。前面相同,后缀不同。

eg

<message-resources parameter="ApplicationResources" >

  </message-resources>

资源文件名为:ApplicationResources_zh.properties(中文)

  ApplicationResources_en.properties(英文)

也可以加上国家名

 ApplicationResources_zh_CN.properties(中文)

 ApplicationResources_en_US.properties(英文)

注意:资源文件的选择:首先查找和浏览器语言匹配的资源文件,如果找不到则找和服

务器的语言地区相匹配资源文件,如果还是找不到就查找默认不带语言后缀的资源文

件。

三、Struts1.2核心控制流程

1、主要组件:

1ActionServlet组件:充当Struts框架的中央控制器

2RequestProcessor组件:充当每个子应用模块的请求处理器

3Action组件:负责处理一项具体的业务。

2ActionServlet

1Struts的启动通常从加载ActionServlet开始(如果没有其他Servlet的加载优先级比它高)。ActionServlet在应用一加载时即会被实例化并调用其init方法。

2init方法所做的主要工作有: 

1)加载struts配置文件,并创建用于封装配置信息的ModuleConfig对象 

2)加载资源文件,并创建用于封装资源文件的MessageResources对象。

另外,如果有相应配置的话,init方法还将初始化数据源和PlugIn

 注意:

1)如果web.xml有多模块配置,将创建多个ModuleConfig对象和MessageResources对象分别用于封装各个模块的struts配置文件和资源文件。 

eg 多模块:

    <init-param>

      <param-name>config</param-name>

      <param-value>/WEB-INF/struts-config.xml</param-value>

  </init-param>

    <!-- config后面的/ma表示模块名,访问ma模块里的配置文件的action中的url路径位:应用路径/模块名/url.do  -->

   <init-param>

      <param-name>config/ma</param-name>

      <param-value>/WEB-INF/ma/struts-config.xml</param-value>

   </init-param>

 <init-param>

      <param-name>config/mb</param-name>

      <param-value>/WEB-INF/mb/struts-config.xml</param-value>

     </init-param>

或者

    <init-param>

       <param-name>config</param-name>

       <param-value>/WEB-INF/struts-config.xml</param-value>

      </init-param>

     <init-param>

     <param-name>config/catalog</param-name>

     <param-value>/WEB-INF/ma-struts-config.xml</param-value>

     </init-param>

      <init-param>

     <param-name>config/authorize</param-name>

    <param-value>/WEB-INF/mb-struts-config.xml</param-value>

</init-param>

2)针对各个模块所创建的ModuleConfig对象和MessageResources对象将存储在ServletContext中,对应的属性名中有该模块名称的相应标识。 

3ActionServletprocess()方法的主要工作有

1)根据请求信息获知所请求的模块名称,从ServletContext中获得与请求模块对应的的

ModuleConfig对象,并存储到request中。 

2)根据模块信息获得相应的RequestProcessor对象,一个模块对应一个RequestProcessor

对象,RequestProcessor对象将关联与所属模块对应的ModuleConfig;

分享到:
评论

你可能感兴趣的:(Web,xml,bean,jsp,struts)