- 浏览: 887330 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (687)
- java (127)
- servlet (38)
- struts (16)
- spring (22)
- hibernate (40)
- javascript (58)
- jquery (18)
- tomcat (51)
- 设计模式 (6)
- EJB (13)
- jsp (3)
- oracle (29)
- RUP (2)
- ajax (3)
- java内存管理 (4)
- java线程 (12)
- socket (13)
- path (5)
- XML (10)
- swing (2)
- UML (1)
- JBPM (2)
- 开发笔记 (45)
- Note参考 (15)
- JAXB (4)
- Quartz (2)
- 乱码 (2)
- CSS (2)
- Exception (4)
- Tools (7)
- sqlserver (3)
- DWR (7)
- Struts2 (47)
- WebService (2)
- 问题解决收藏 (7)
- JBOSS (7)
- cache (10)
- easyUI (19)
- jQuery Plugin (11)
- FreeMarker (6)
- Eclipse (2)
- Compass (2)
- JPA (1)
- WebLogic (1)
- powerdesigner (1)
- mybatis (1)
最新评论
-
bugyun:
受教了,谢谢
java 正则表达式 过滤html标签 -
xiongxingxing_123:
学习了,感谢了
java 正则表达式 过滤html标签 -
wanmeinange:
那如果无状态的。对同一个任务并发控制怎么做?比如继承Quart ...
quartz中参数misfireThreshold的详解 -
fanjieshanghai:
...
XPath 元素及属性查找 -
tianhandigeng:
还是没明白
quartz中参数misfireThreshold的详解
Struts串讲
一、struts概述
1、Struts实现MVC设计模式
(1)Struts实质上就是在JSPModel2的基础山实现一个MVC框架。
1)模型:由业务实现业务逻辑的JavaBean或EJB组件构成
2)控制器:由ActionServlet和Action来实现
3)视图:由一组JSP文件构成
(2)
2、Struts的工作流程
(1)Web应用启动时加载并初始化ActionServlet,ActionServlet从struts-config.xml中读取配置信息,把它们存放到各种配置对象中。
(2)当ActionServlet接收到一个客户请求时,检索和用户请求匹配的ActionMapping实例,如果不存在,就返回用户请求路径无效的信息。
(3)如果ActionForm实例不存在,就创建一个ActionForm对象,把客户提交的表单数据保存到ActionForm对象中。
(4)根据配置信息决定是否需要表单验证。如果需要验证,就调用ActionForm的validate()。
(5)ActionForm的validate()方法
1)如果返回null或返回一个不包含ActionMessage的ActionErrors对象,就表示表单验证成功。
2)如果返回一个包含一个或多个ActionMessage的ActionErrors对象,就表示表单验证失败,此时ActionServlet将直接把请求转发给包含用户提交表单的JSP组件。在这种情况下,不会再创建Action对象并调用Action的execute()方法。
(6)ActionServlet根据ActionMapping实例包含的映射信息决定将请求转发给哪个Action。如果相应的Action实例不存在,就先创建这个实例,然后调用Action的execute()方法。
(7)Action的execute()方法返回一个ActionForward对象,ActionServlet再把客户请求转发给ActionForward对象指向的JSP组件。
(8)ActionForward对象指向的JSP组件生成动态网页,返回给客户。
request response
forward
dispatch
二、Struts 1.2X 构成
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方法所做的主要工作有:
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中,对应的属性名中有该模块名称的相应标识。
(3)ActionServlet的process()方法的主要工作有:
1)根据请求信息获知所请求的模块名称,从ServletContext中获得与请求模块对应的的
ModuleConfig对象,并存储到request中。
2)根据模块信息获得相应的RequestProcessor对象,一个模块对应一个RequestProcessor
对象,RequestProcessor对象将关联与所属模块对应的ModuleConfig;
发表评论
-
struts2 拦截器获取 request
2011-11-26 23:23 1039ActionContext actionContext = ... -
Struts2与DWR在项目中的共存解决方案
2011-09-10 22:35 894在struts2.properties中配置即可. strut ... -
struts2 配置文件中,一个package中有多个name属性相同的action的执行
2011-01-26 08:53 1262如果在一个package中有多个name属性相同的action ... -
Struts1.x note
2010-10-26 17:32 1193转自http://javaee-dev.iteye.com/ ... -
密码MD5加密及日期转换器
2010-10-26 10:21 2026今天继续学习bbs项目,汤老师讲了会员注册的实现,要对密码进行 ... -
传智播客erp项目学习,防止表单重复提交及MRP
2010-10-26 09:47 911今天结束了erp的学习, ... -
ActionForm的生命周期浅探
2010-10-21 12:48 1006看了很多的资料书籍,都提了一下ActionForm的生命周期。 ... -
Struts 1.x | <html> 标签库
2010-10-21 12:11 1760html标签库 生成html元 ... -
SSH项目中利用struts的ExceptionHandler处理异常
2010-10-13 17:25 1041一、概述 在Struts1.X的版本中加入 ... -
commons-beanutils包ConvertUtils使用(二)
2010-10-13 16:37 20151.org.apache.commons.beanutils. ... -
org.apache.commons.beanutils.ConvertUtils
2010-10-13 16:33 1360ConvertUtils,这个工具类的职能是在字符串和指定类型 ... -
透析struts中的redirect="true"与redirect="false"
2010-10-13 13:28 1723再struts-config.xml文件的forward下有个 ... -
struts-config.xml的controller 元素
2010-10-13 13:07 1315<controller>用于配置A ... -
防止刷新、重复提交
2010-09-06 10:33 745问题场景:在项目的添加方法中,添加完毕后,当用户再次刷新当前页 ... -
struts中ActionServlet核心处理RequestProcessor.process()
2010-08-29 17:04 1252public void process(HttpServlet ...
相关推荐
Struts2是一个强大的基于Model-View-Controller (MVC)架构的Web应用程序开发框架,它在Struts1的基础上融合了Webwork的核心特性,为开发者提供了一套更高效、灵活的开发环境。Struts2的特点包括但不限于以下几个方面...
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,...
Struts2是一个强大的Java EE应用程序框架,主要用于构建企业级的Web应用。它的核心是MVC(Model-View-Controller)设计模式,可以帮助开发者组织代码,提高开发效率,并且提供了丰富的特性来支持表单验证、国际化、...
Struts2是一款非常流行的Java Web框架,用于构建企业级应用。然而,随着时间的推移,Struts2在安全方面暴露出了一些重要的漏洞,这给使用该框架的系统带来了潜在的安全风险。"Struts2漏洞检查工具Struts2.2019.V2.3...
Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试...
Struts、Spring MVC和Struts2是Java Web开发中三个重要的MVC框架,它们都用于构建基于模型-视图-控制器(MVC)设计模式的Web应用程序。下面将分别介绍这三个框架的工作原理,并进行对比。 **Struts1原理:** Struts...
### Struts2核心知识点解析 #### 一、Struts2框架概述 - **定义与特点**:Struts2是一款基于MVC(Model-View-Controller)设计模式的Java Web应用程序框架,它继承了Struts1的优点,同时在设计上更加灵活、易用,...
struts-config.xml struts标准配置文件 struts-config
Struts2是一个强大的Java web应用程序开发框架,它基于Model-View-Controller(MVC)设计模式,旨在简化创建用户交互式、数据驱动的web应用的过程。这个“Struts2接口文档”是开发者的重要参考资料,提供了关于...
Struts是Apache软件基金会下的一个开源项目,主要提供MVC(Model-View-Controller)设计模式的实现,用于简化Java Web应用的开发。Struts1和Struts2是两个不同的版本,它们各自拥有独特的特性和功能,但在Java Web...
该工具的打开路径为:\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 总结工程大全...
Struts是Apache软件基金会下的一个开源项目,提供了一个基于MVC(Model-View-Controller)设计模式的Java Web应用程序框架。这个压缩包包含了Struts 1.3.10和Struts 2.0.14两个版本,它们分别代表了Struts框架的发展...
Struts 2是一款基于Java的开源MVC框架,它在Web应用开发中广泛使用,但同时也因其复杂的架构和历史遗留问题,成为了网络安全的焦点。这个标题提到的是一个全面的Struts 2漏洞检测工具,旨在帮助开发者和安全专家识别...
在Eclipse中配置Struts2项目(html)手把手教会你 如何在Eclipse中配置Struts2。 struts2 标签库介绍(html)对Struts2的...struts2和struts的比较 让你更清楚的知道struts2和struts的不同之处。 struts教程(html)
Struts是一个开源的Java Web应用程序框架,主要用于构建MVC(Model-View-Controller)模式的Web应用。在Java EE世界中,Struts扮演着至关重要的角色,它简化了开发过程,提高了代码的可维护性和可扩展性。SSH框架是...
Struts-config详解 Struts-config.xml 是Struts框架的核心配置文件,它描述了所有的Struts组件。在这个文件中,我们可以配置主要的组件及次要的组件。下面是struts-config.xml文件的主要元素: 一、struts-config....
Struts2是一个强大的Java web开发框架,用于构建可维护、可扩展且结构良好的应用程序。它在MVC(Model-View-Controller)设计模式的基础上提供了一种实现方式,使得开发者能够更方便地处理用户请求,控制业务逻辑,...
Struts2 项目开发 Struts2 是一个基于 Java Web 的框架,广泛应用于 Web 应用程序的开发。下面将从 Struts2 项目开发的角度,详细介绍 Struts2 框架的应用、开发流程、技术架构、实践经验等方面的知识点。 项目...
北京时间8月22日13时,Apache官方发布通告公布了Struts2中一个远程代码执行漏洞(cve-2018-11776)。该漏洞可能在两种情况下被触发,第一,当没有为底层xml配置中定义的结果设置namespace 值,并且其上层动作集配置...