- 浏览: 821937 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (488)
- struts1 (4)
- spring (13)
- extjs (36)
- mysql (3)
- sqlserver (2)
- oracle (37)
- 杂谈 (11)
- 面试相关 (35)
- Java基础知识总结 (5)
- Java重要知识点 线程和io流知识点 (6)
- 服务器相关 (1)
- 生活 (1)
- jsp (7)
- servlet (2)
- junit (3)
- struts2 (9)
- 开发必备 (4)
- 使用开发工具总结的知识 (4)
- ibatis (12)
- ajax (2)
- dwr (2)
- jquery (1)
- 设计模式 (4)
- Lucene的学习 (5)
- 经验总结 (19)
- mysql全文搜索相关 (7)
- hibernate (33)
- Sphinx (1)
- log4j的总结 (1)
- 敏捷开发 (9)
- 持续集成 (15)
- UML使用总结 (1)
- Scrum (1)
- OO(面向对象编程) (1)
- struts1和struts2总结 (1)
- 数据库加密 (1)
- 多线程和Socket编程 (6)
- PowerDesigner (2)
- 权限相关 (1)
- ant应用总结 (4)
- 面试必知知识点总结 (6)
- io流与nio流总结 面试相关 (1)
- 敏捷管理工具的使用 (7)
- hsqldb相关 (1)
- svn源码相关 (2)
- debug调试技巧总结 (1)
- hibernate和ibatis对比相关 (6)
- eclipse mylyn 插件的使用总结 (2)
- fisheye使用总结 (2)
- java泛型总结 (1)
- ssh整合总结 (10)
- SpringSide的学习总结 (1)
- JPA学习总结 (2)
- RoR 总结 (2)
- 模型驱动 总结 (1)
- Oracle SQL优化技巧 (4)
- 数据库相关资料 (1)
- oracle练习相关 (4)
- PowerDesigner 使用总结 (2)
- Struts实现国际化相关 (2)
- 权限框架 Spring Security (1)
- freemarker使用总结 (1)
- jsp servlet总结相关 (3)
- Java NIO总结 (1)
- 自己学习必须 (3)
- 蝴蝶容器相关 (2)
- eclipse插件的使用 (1)
- myeclipse的使用 (1)
- flex相关 (1)
- javaeye重生后总结的知识点 (2)
- 公司学习总结 (3)
- JAXB 相关 (1)
- ECSide (1)
- EdoJs 企业ajax框架 (1)
- RSA加密算法 (1)
- jbpm相关 (1)
- JMF原理 (1)
- MyEclipse使用总结 (1)
- Funsion Charts 相关总结 (3)
- 常用知识2011 (2)
- Flex与Java整合 (1)
- IBM WebSphere相关 (1)
- jQuery使用技巧 (2)
- 2011年面试相关知识点总结 (2)
- sqlserver开发相关 (8)
- eclipse 打jar相关 (2)
- Oracle/Mysql/SqlServer比较 (1)
- WebService Axis1.4开发相关 (4)
- 进制数的转换 总结 (1)
- WebService Axis2.0开发相关 (0)
- iteye Struts2 Spring Hibernate整合相关 (3)
- iteye osgi资料相关总结 (1)
- iteye ifos相关相关 (1)
- iteye 国际化相关 (1)
- iteye Hibernate缓存机制 (4)
- iteye Struts2 总结 (1)
- iteye Struts标签总结 (0)
- iteye web配置文件大全 (6)
- iteye Efs 框架总结 (1)
- iteye sql优化 (2)
- iteye 大数据量高并发的数据库优化 (1)
- iteye 开发相关 (1)
- iteye s1sh 和 s2sh整合中的问题以及解决 (1)
- iteye s1sh整合实例 (1)
- iteye s2sh整合实例 (1)
- iteye 面试相关 基础篇 (1)
- iteye Android相关 (1)
- iteye 面试相关 Web篇 (1)
- iteye Sql Server相关 (0)
- iteye struts1与struts2比较 (1)
- iteye jquery 和Struts2 (0)
- iteye struts2与其他插件整合 (0)
- iteye jquery 开发相关 (1)
- iteye eclipse结合spket(Ext,Jquery)开发相关 (0)
- iteye myeclipse 使用技巧相关 (0)
- iteye Memcached 缓存系统相关 (0)
- iteye 常用软件相关 (0)
- iteye 最新技术预览 AjaxSwing (0)
- iteye struts上传下载相关 (0)
- iteye 新技术相关 (0)
- test (0)
- iteye 开发Java游戏相关 (0)
- iteye Java反编译 (0)
- iteye XML解析相关 (0)
- iteye 压缩ZIP相关 (0)
- iteye 面试相关 (0)
- iteye Android开发相关 (4)
- csdn (0)
- e-inoc (0)
- iteye http错误码对应说明 (0)
- iteye 面试扩展知识点 (0)
- iteye oracle面试相关 存储过程,触发器,游标等 (0)
- iteye english study (0)
- iteye starflow工作流引擎 (0)
- iteye IBM WebSphere Application Server Toolkit使用相关 (0)
- iteye spring3 (0)
- iteye mybatis (0)
- iteye js技巧总结 (0)
- iteye SEO优化相关 (2)
- iteye QUI网页界面集成框架 (1)
- iteye AjaxAnywhere (1)
- iteye Nutz相关 (1)
- iteye ibatis技巧 (0)
- iteye dwz (0)
- 128个ajax/javascript框架 (0)
- iteye 2012 Java Swing教程 (1)
- iteye 码头集装箱相关 (1)
- iteye swing (2)
- 兼职工作 (0)
- 2012 新总结的面试相关知识点 常用知识点 (1)
- 淘宝网店相关 (0)
- oracle 常用函数 2012新总结 (1)
- 我的时尚潮流屋 (0)
- 2012 年 面试新总结知识 (1)
- 技巧 (1)
- 2013总结 (1)
- 2015工作相关 (3)
- springmvc (5)
- EasyPR-Java (1)
- java (2)
- editplus 4.0 注册码 (1)
- android (1)
- oracle连接数据库相关 (1)
- 编程资料总结 (2)
- 20160808 (1)
- visio 2013 (1)
最新评论
-
drew926:
泛型的类型参数可以有多个?这是java哪个版本支持的?
java泛型总结 -
listenan:
赞!非常感谢。
Scrum总结 -
cwscwj:
写的很深刻,谢谢,看了一遍,过段时间打算再看一遍。
Scrum总结 -
hwedwin:
w
Struts 2中的OGNL\EL的使用总结 -
lanni2460:
不错 很好 支持……
sqlserver三个驱动包下载
Struts2总结
1.全局的逻辑控制器为一个过滤器,负责过滤所有的请求。该过滤器引用的API类为 org.apache.struts2.disapatcher.FilterDispatcher 2.MVC:页面请求(jsp)——>逻辑控制器(Filter)——>业务控制器(Action)——>业务逻辑组件——>业务处理/DAO 3.struts2的配置文件放在classpath下。 4.struts2的类型转换: a.继承DefaultTypeConverter, 覆盖父类的public Object convertValue(Map context, Object value, Class toType)方法 b.继承StrutsTypeConverter, 覆盖父类的public Object convertFromString(Map context, String[] values, Class toClass) 该方法负责转换从页面传递过来的数据。 覆盖父类的public String convertToString(Map context, Object o) 该方法负责将Action中处理好的数据转换成相应格式的字符串。 5.struts2的数据验证: a.使用编码方式进行验证。业务控制器Action继承ActionSupport类,重写public void validate()方法。 在该方法中进行数据验证。若Action中处理业务的方法为test,则可以编写public void validateTest() 方法,来对test方法的数据进行验证。(系统在进行validateTest方法后,会接着执行validate方法,然后 才执行相应的业务代码。) 若严重出错,则可以调用addFieldError或者调用addActionError方法,增加相应的错误提示信息。 b.使用配置xml文件进行验证。验证文件的名字为:×××Action-validation.xml。验证的方式包含字段验证和非字段验证。 其中字段验证表示对某个字段进行某些类型的验证。非字段验证表示用某个类型的验证来验证,某个字段。两种方式 底层实现一样,只是表现方式不同,字段验证方式比较直观。 验证的类型有一下几种:required,requiredstring,int,date,double,expression,fieldexpression email,url,visitor,conversion,stringLength,regex(正则表达式)。 对验证类型可以指定shourt-circuit参数为true,来执行短路验证。 如果Action中执行业务的方法为test,则可以通过编写×××Action-test-validation.xml方法来对test方法的数据进行 验证。且执行完test方法的私有验证文件后,还会执行默认的验证文件×××Action-test-validation.xml的验证。 c.struts2进行客户端的验证。首先需要使用struts2的标签库,且标签库的theme属性不能为simple,然后设置标签的 validate属性为true。 注意:struts2的客户端验证依赖于服务器的验证配置文件。 6.struts2的拦截器。struts2的拦截器是struts2的核心,其底层实现使用了Java的反射机制与动态代理。在struts2的配置文件中 为一个Action引入了一个拦截器,则配置的默认拦截器不会被调用,需要手工配置到该Action中。 实现struts2拦截器的方法: a.实现Interceptor接口,并实现init,destrory以及intercept方法。 b.继承AbstractInterceptor类,覆盖intercept方法。 c.继承MethodFilterInterceptor类,覆盖intercept方法。该类可以对特定的方法进行拦截。 拦截器栈可以包含拦截器和拦截器栈。 7.文件的上传和下载: a.使用apache组织开发的commons-fileupload和commons-io包,并且按需要配置fileUpload拦截器和相应的上传参数, 比如上传文件的类型,上传文件的大小。多文件的上传可以使用js代码来在页面修改上传文件的列表,在Action中 则用三个列表分别来保存文件对象(file),文件名(fileName),以及文件类型(fileContentType)。 b.文件下载使用流进行读取:return ServletActionContext.getServletContext.getResourceAsStream("文件名") 并将Action的结果返回类设定为stream,即流。按需要配置相应的参数。 8.struts2的国际化。struts2国际化的底层实现用到了Java基础类库中的Locale(地区)和ResourceBundle(消息资源)两个类。 struts2的国际化主要用在一下几个地方: a.jsp页面:使用struts2的标签时,指定标签的key属性(对应消息资源文件中的key)。 使用<s:text name="key"> <s:param></s:param> </s:text> 标签取得消息资源信息。 还可以用<s:i18n name="basename"></s:i18n>标签来指定特定的消息资源文件。 b.Action中:调用getText(key)或者getText(key,args)方法取得消息资源文件中的消息资源。 c.xml验证文件中:指定message元素的key属性(对应消息资源文件中的key)。(怎么传参数?) d.类型转换过程中:通过查看xwork包的源代码可以找到:ge.properties文件中可以找到如下的键值对: xwork.default.invalid.fieldvalue=Invalid field value for field "{0}". 在消息资源文件中重新指定该键值对即可。 另外在struts.properties中设定键值对struts.i18n.encoding=GBK,可以解决中文乱码问题。 9.struts2的异常处理。在Action中,我们的业务逻辑处理方法都对抛出异常进行了声明。具体的异常对应具体的处理结果。 在action配置中: <action name="upload" class="uploadAction"> <result name="exception"></result> <exception-mapping result="exception" exception="具体的异常类型"></exception-mapping> </action> 还可以配置全局的异常处理: <global-exception-mappings> <exception-mapping result="" exception=""></exception-mapping> </global-exception-mappings> struts2的其他东西: 1.对于struts.xml中的package: a.设置<package abstract="true">,则表明该包中没有action的配置,只定义一个基础公共的组件。 b.package的namespace可以将不同的请求路径分隔开,在多人合作项目中用到比较多。当接收到一个请求, 若在当前的namespace中没有相应的请求地址,则会到默认的namespace中去寻找匹配的地址。 2.模型驱动机制(ModelDriven),将一个Action中的各个参数封装成为一个JavaBean(类似struts1.x中的 ActionForm)。需要实现ModelDriven<T>接口,并实现getModel方法。当一个Action实现 ModenDriven接口后, 该Action会被ModenDrivenInterceptor拦截,进行相应的参数设置。 3.防止表单的重复提交:在jsp的表单中设置<s:token name="***"></s:token>标签。并且在相应的Action 中设置token拦截器和名为invalid.token的返回结果。相应出错信息的key为 struts.message.invalid.token。 配置该key,来实现国际化。 4.struts2中Action与Servlet容器的耦合。主要有三种方式: a.实现ServletRequestAware或ServletResponseAware接口。并提供对request或者response熟悉的设置方法。 b.使用ActionContext(但不能获得response对象)。改方法方便单元测试。 c.使用ServletActionContext。ServletActionContext是ActionContext的子类。 首选使用ActionContext,其次ServletActionContext。 5.整合多个struts配置文件,在struts2的配置文件中使用include元素包含其他的配置文件。用于多模块开发。 6.可以在web.xml中对struts2的核心过滤器FilterDispatcher设置初始化参数(不推荐使用)。 7.动态方法调用(DynamicMethodInvocation). a.action配置中指定:<action name="×××" method=""> b.在客户端即页面指定:<s:form action="method!actionName"> c.使用通配符:<action name="*Login" class="com.action.LoginAction" method="{1}">, 若Action的url为helloLogin,则调用LoginAction的hello来处理业务。此种方法简化了配置,但是 使得程序不明了,不提倡使用该方法。 8.struts2的结果类型。在struts2-core包中,有几种struts2已经配置好的结果类型。 其中默认的类型为dispatcher,此外还有:redirectAction,chain,freemaker,httpheader,redirect, redirectAction,stream,velocity,xslt,plainText。 9.struts2与spring的整合。导入struts2-spring-plugin包,在web.xml中设置spring的监听器, spring监听器对应的API类为:org.springframework.web.context.ContextLoaderListener。 struts2-spring-plugin包为我们将struts2的对象工厂设置为spring的IoC容器,其代码为: <struts> <bean type="com.opensymphony.xwork2.ObjectFactory" name="spring" class="org.apache.struts2.spring.StrutsSpringObjectFactory" /> <!-- Make the Spring object factory the automatic default --> <constant name="struts.objectFactory" value="spring" /> <package name="spring-default"> <interceptors> <interceptor name="autowiring" class="com.opensymphony.xwork2.spring.interceptor.ActionAutowiringInterceptor"/> <interceptor name="sessionAutowiring" class="org.apache.struts2.spring.interceptor.SessionContextAutowiringInterceptor"/> </interceptors> </package> </struts> 很明显,将struts.objectFactory定位为 org.apache.struts2.spring.StrutsSpringObjectFactory 其余的工作就交给spring的IoC容器去做了。 另外:当我们需要增加spring的配置文件时,需要在web.xml中设定contextConfigLocation参数。代码如下: <context-param> <param-name>contextConfigLocation</param-name> <param-value>其他的spring配置文件名,用逗号隔开</param-value> </context-param> 需要注意的一些地方 1.存储fieldError的是一个LinkedHashMap<String,ArrayList>;而actionError则存储在一个ArrayList中。 ActionSupport中的getFieldError方法返回的是一个新的集合。该集合是原fieldError集合的一个副本。 在struts2的源代码中返回的是:new LinkedHashMap(internalGetFieldError),即一个新的集合对象。 所以执行代码:this.getFieldErrors.put("username","ErrorMsg");不会影响原fieldError集合的数据。 2.若一个Action注册了PreResultListner,则会在该Action返回的时候调用相应结果验证的逻辑代码。 3.struts2-core包中的default.properties和struts-default.xml文件保存了一些struts2默认的配置。 可以在自己的struts配置文件中对相应的配置进行覆盖或重新设值。比如修改请求的后缀名:在struts.properties 中加入: struts.action.extension = do 则将struts2请求的后缀名修改成了struts1中的do后缀名的形式。 4.在配置文件中配置struts.multipart.saveDir来设定上传文件时的临时文件的存储位置。需要定期清理该路径下的文件。
发表评论
-
Struts 2中的OGNL\EL的使用总结
2010-09-27 21:57 2958Struts 2中的OGNL\EL的使用 ... -
struts国际化处理
2010-09-26 21:19 1078struts国际化处理 STRUTS提供了很好的国际化的支 ... -
Struts国际化处理
2010-09-26 20:42 959Struts国际化处理 Struts国际化处理一 一、 ... -
Struts2总结
2010-09-25 23:17 2157Struts2总结 一、Struts2 ... -
Struts2的Preparable接口
2010-09-21 11:33 1499Struts2的Preparable接口 Struts2的 ... -
struts2总结之 OGNL表达式
2010-08-23 15:45 1036struts2总结之 OGNL表达式 一直在写博客,但总 ... -
解决struts2标签自动换行的问题。
2010-08-20 20:36 2200在struts2的<s:form>里面配置一个th ... -
struts
2010-08-01 19:32 1454struts1与struts2本质区别 1 在Action实 ...
相关推荐
struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全...
本总结将深入探讨Struts2的核心概念、关键功能和实用技术,以帮助开发者全面理解并熟练运用这一框架。 一、Servlet模板 在Struts2中,Servlet模板是一种处理请求和响应的方式。它通过拦截器链对请求进行处理,然后...
在本项目总结中,我们将深入探讨Struts2的核心特性、工作原理以及如何在实际项目中应用。 一、Struts2框架基础 1. 动态方法调用(Dynamic Method Invocation,DMI):Struts2允许通过URL直接调用Action类的方法,...
【Velocity语法以及整合struts2总结】 Velocity是一个开源的Java模板引擎,它是Apache软件基金会的Jakarta项目的一部分。Velocity将HTML代码与业务逻辑分离,使得开发者可以专注于内容和设计,而不用关心数据如何...
【JSP到Struts2总结】 JSP(Java Server Pages)是基于Java技术的一种服务器端网页编程技术,用于创建跨平台、跨Web服务器的动态网页。JSP网页由HTML、JavaScript、Java程序片段(scriplet)和JSP标记(tag)组成。...
struts2 总结入门学习文档 教你如何白手起家搭建Struts2开发环境、编写第一个struts2应用helloworld、属性介绍、接口、拦截器介绍、struts2标签等。93页
根据提供的文件信息,我们可以整理出关于Struts2框架的一些关键知识点。尽管原文中的信息较为零散且不完整,但还是可以从中提炼出一些有价值的内容。接下来,我们将详细探讨这些知识点。 ### Struts2简介 Struts2...
Struts2是一个强大的MVC(Model-View-Controller)框架,是Java EE应用程序开发中的重要组成部分。它在Struts1.x的基础上进行了大量的改进和优化,提供了更高效、更灵活的架构设计,使得开发者能够更容易地构建和...
本笔记将全面总结Struts2的核心概念、主要功能以及实际开发中的应用。 一、Struts2概述 Struts2是Apache软件基金会下的一个开源项目,它继承了Struts1的优点并解决了其存在的问题,如性能和灵活性。Struts2的核心是...
Struts2是一个强大的MVC框架,它提供了许多功能来简化Web应用开发,包括类型转换、属性访问、文件上传以及拦截器等。以下是基于标题和描述的详细知识点: **一、局部类型转换** 在Struts2中,我们可以自定义类型...
Struts2,servlet模板,反射、xml解析、过滤器,IoC方式