当前位置:编程学习 > JS >>

温习一下Struts1.2x

一、struts概述
 
1、Struts实现MVC设计模式
(1)Struts实质上就是在JSPModel2的基础山实现一个MVC框架。
     1)模型:由业务实现业务逻辑的JavaBean或EJB组件构成
     2)控制器:由ActionServlet和Action来实现
     3)视图:由一组JSP文件构成
(2)Struts的结构:
 
 
2、Struts的工作流程
(1)Web应用启动时加载并初始化ActionServlet,ActionServlet从struts-config.xml中读取配置信息,把它们存放到各种配置对象中。
(2)当ActionServlet接收到一个客户请求时,检索和用户请求匹配的ActionMapping实例,如果不存在,就返回用户请求路径无效的信息。
(3)如果ActionForm实例不存在,就创建一个ActionForm对象,把客户提交的表单数据保存到ActionForm对象中。
(4)根据配置信息决定是否需要表单验证。如果需要验证,就调用ActionForm的validate()。
(5)ActionForm的validate()方法
  ①如果返回null或返回一个不包含ActionMessage的ActionErrors对象,就表示表单验证成功。
  ②如果返回一个包含一个或多个ActionMessage的ActionErrors对象,就表示表单验证失败,此时ActionServlet将直接把请求转发给包含用户提交表单的JSP组件。在这种情况下,不会再创建Action对象并调用Action的execute()方法。
(6)ActionServlet根据ActionMapping实例包含的映射信息决定将请求转发给哪个Action。如果相应的Action实例不存在,就先创建这个实例,然后调用Action的execute()方法。
(7)Action的execute()方法返回一个ActionForward对象,ActionServlet再把客户请求转发给ActionForward对象指向的JSP组件。
(8)ActionForward对象指向的JSP组件生成动态网页,返回给客户。
 
二、Struts 1.2 构成
 
1、struts运行需要的jar包
(1)commons-digester.jar 
用于解析配置文件
(2)commons-fileupload.jar 
用于实现文件上传(进行了进一步的封装)
(3)commons-logging.jar 用于日志处理
(4)commons-beanutils.jar 用于POJO的属性赋值、拷贝等
(5)commons-validator.jar 用于表单验证
2、 struts标记库文件(tld)
(1)struts-bean.tld
(2)struts-html.tld
(3)struts-logic.tld
(4)struts-nested.tld
(5)struts-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的路径,在form的action中写的那个路径"  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、主要组件:
(1)ActionServlet组件:充当Struts框架的中央控制器
(2)RequestProcessor组件:充当每个子应用模块的请求处理器
(3)Action组件:负责处理一项具体的业务。
2、ActionServlet
(1)Struts的启动通常从加载ActionServlet开始(如果没有其他Servlet的加载优先级比它高)。ActionServlet在应用一加载时即会被实例化并调用其init方法。
(2)init方法所做的主要工作有: 
  ①加载struts配置文件,并创建用于封装配置信息的ModuleConfig对象 
  ②加载资源文件,并创建用于封装资源文件的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)针对各个模块所创建的M
补充:Web开发 , Jsp ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,