`

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;

分享到:
评论

相关推荐

    Struts2串讲

    Struts2是一个强大的基于Model-View-Controller (MVC)架构的Web应用程序开发框架,它在Struts1的基础上融合了Webwork的核心特性,为开发者提供了一套更高效、灵活的开发环境。Struts2的特点包括但不限于以下几个方面...

    struts例子struts例子struts例子struts例子struts例子struts例子

    struts例子struts例子struts例子struts例子struts例子struts例子struts例子struts例子struts例子struts例子struts例子struts例子struts例子struts例子struts例子

    struts包struts包struts包

    struts包struts包struts包struts包struts包struts包struts包struts包

    struts2.0整合Struts 1

    Struts 2整合Struts 1,允许开发者利用Struts 1已有的投资,同时享受Struts 2带来的优势,如增强的类型安全和更强大的拦截器机制。 在《Struts 2权威指南--基于WebWork核心的MVC开发》这本书中,作者李纲深入浅出地...

    struts2jar包

    Struts2是一个强大的Java EE应用程序框架,主要用于构建企业级的Web应用。它的核心是MVC(Model-View-Controller)设计模式,可以帮助开发者组织代码,提高开发效率,并且提供了丰富的特性来支持表单验证、国际化、...

    struts2-core.jar

    struts2-core-2.0.1.jar, struts2-core-2.0.11.1.jar, struts2-core-2.0.11.2.jar, struts2-core-2.0.11.jar, struts2-core-2.0.12.jar, struts2-core-2.0.14.jar, struts2-core-2.0.5.jar, struts2-core-2.0.6.jar,...

    struts1原理,struts2原理,spring mvc原理,struts1和struts2,struts和spring mvc

    Struts、Spring MVC和Struts2是Java Web开发中三个重要的MVC框架,它们都用于构建基于模型-视图-控制器(MVC)设计模式的Web应用程序。下面将分别介绍这三个框架的工作原理,并进行对比。 **Struts1原理:** Struts...

    Struts2漏洞检查工具Struts2.2019.V2.3

    Struts2是一款非常流行的Java Web框架,用于构建企业级应用。然而,随着时间的推移,Struts2在安全方面暴露出了一些重要的漏洞,这给使用该框架的系统带来了潜在的安全风险。"Struts2漏洞检查工具Struts2.2019.V2.3...

    Struts2视频教程

    ### Struts2核心知识点解析 #### 一、Struts2框架概述 - **定义与特点**:Struts2是一款基于MVC(Model-View-Controller)设计模式的Java Web应用程序框架,它继承了Struts1的优点,同时在设计上更加灵活、易用,...

    struts与struts2的区别

    Struts和Struts2是两种不同的Java Web框架,它们都由Apache软件基金会开发,用于构建MVC(模型-视图-控制器)架构的Web应用程序。虽然名字相似,但两者在设计哲学、功能特性以及实现方式上有着显著的区别。 **1. ...

    struts-config.xml struts标准配置文件 struts-config

    struts-config.xml struts标准配置文件 struts-config

    struts1和struts2的jar包

    Struts是Apache软件基金会下的一个开源项目,主要提供MVC(Model-View-Controller)设计模式的实现,用于简化Java Web应用的开发。Struts1和Struts2是两个不同的版本,它们各自拥有独特的特性和功能,但在Java Web...

    Struts2接口文档

    Struts2是一个强大的Java web应用程序开发框架,它基于Model-View-Controller(MVC)设计模式,旨在简化创建用户交互式、数据驱动的web应用的过程。这个“Struts2接口文档”是开发者的重要参考资料,提供了关于...

    Struts升级到Struts2.3.35

    北京时间8月22日13时,Apache官方发布通告公布了Struts2中一个远程代码执行漏洞(cve-2018-11776)。该漏洞可能在两种情况下被触发,第一,当没有为底层xml配置中定义的结果设置namespace 值,并且其上层动作集配置...

    Struts2VulsTools-Struts2系列漏洞检查工具

    该工具的打开路径为:\Struts2VulsTools-2.3.20190927\Test\bin\Release\Text.exe 2019-09-25: 优化部分EXP在部分情况下被WAF拦截的问题,提高检测成功率,优化自定义上传路径exp,文件所在目录不存在时自动创建...

    struts2 总结工程大全

    struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全...

    struts1.3.10 和 struts2.0.14 包

    Struts是Apache软件基金会下的一个开源项目,提供了一个基于MVC(Model-View-Controller)设计模式的Java Web应用程序框架。这个压缩包包含了Struts 1.3.10和Struts 2.0.14两个版本,它们分别代表了Struts框架的发展...

    全网最全Struts 2 全版本漏洞检测工具,最新struts漏洞更新

    Struts 2是一款基于Java的开源MVC框架,它在Web应用开发中广泛使用,但同时也因其复杂的架构和历史遗留问题,成为了网络安全的焦点。这个标题提到的是一个全面的Struts 2漏洞检测工具,旨在帮助开发者和安全专家识别...

    struts1&struts2

    Struts1和Struts2是两个著名的MVC框架,它们都是Apache软件基金会的Apache Struts项目的一部分,用于构建基于Java的Web应用程序。然而,两者在设计和实现上有显著的差异。 1. **架构模式的区别** - **Struts1.x** ...

    在Eclipse中配置Struts2项目(html)手把手教会你 +struts2 标签库介绍(html) + STRUTS2学习文档.pdf + Struts2―表单验证validate(html) + struts2和struts的比较 + struts教程(html)

    在Eclipse中配置Struts2项目(html)手把手教会你 如何在Eclipse中配置Struts2。 struts2 标签库介绍(html)对Struts2的...struts2和struts的比较 让你更清楚的知道struts2和struts的不同之处。 struts教程(html)

Global site tag (gtag.js) - Google Analytics