`
文章列表
策略模式: 定义了算法族,分别封装起来,让他们之间可以相互替换,让算法的变化独立于使用算法的客户。    个人理解:    需要做一件事情,但事情的内容是不确定的,可能是事情A,可能是事件B,由某些条件决定   在程序中体现为: public class Person { public void doOneThing(事件类型){ if(事件类型 ==事情A){ //这样做 }else if(事件类型 ==事情B){ //这样这样做 }else { //....... }   }

类的设计--继承

    博客分类:
  • OOD
使用继承可以做到:      1.代码的复用      2.对外部调用类,呈现多态, 即变化      3.父类代码的修改可以影响所有子类(子类未覆盖父类方法情况下)   1.抽取所有子类 中相同的(通用的)的功能,形成独立的方法,放到父类里,利用继承的特性,所有子类自动具有该方法的能力。       对于某些不需要些方法的的子类,在子类中可以选择覆盖该方法而形成空方法,或方法内抛出异常等。       对于某些需要该方法而与父方法语义不完全相同的,可以选择覆盖父类方法  2.继承关系中,部分子类中都有相同的(通用的)功能,则可以抽取而形成独立的方法置于新建的子类中,需要该功 ...
1. WEB-INF/lib 下添加SLF4J及 logback的 jar包     SLF4J下载地址:http://www.slf4j.org/download.html     logback下载载址:http://logback.qos.ch/download.html     jar包名:logback-access-1.1.2.jar,logback-classic-1.1.2.jar,logback-core-1.1.2.jar,slf4j-api-1.7.7.jar   2.在web.xml中配置使用SLF4J    <filter> ...

logback 日志

官方文档:http://logback.qos.ch/manual/index.html  logback will try to configure itself using the files  logback-test.xml or logback.xml if found on the class path 日志输出级别(level): TRACE < DEBUG < INFO <  WARN < ERROR.

Result

Action方法被调用后,返回结果字符串,用它来匹配xml中定义的resultType的name属性,如果匹配上则使用该Result来处理结果:渲染页面、下载文件等等。   public Result createResult() throws Exception { if (explicitResult != null) { Result ret = explicitResult; explicitResult = null; return ret; } ...
Interceptor 作用:在Action执行前或执行后,执行某些代码,也以决定是否继续调用其它Interceptor及Action. public class TestInterceptor extends AbstractInterceptor{ @Override public String intercept(ActionInvocation invocation) throws Exception { // TODO Auto-generated method stub //在之后的Interceptor和Action执行前,可以执行某些代码 ...
1.启动需要的Bean:   builder.factory(ObjectFactory.class, Scope.SINGLETON); builder.factory(ActionFactory.class, DefaultActionFactory.class, Scope.SINGLETON); builder.factory(ResultFactory.class, DefaultResultFactory.class, Scope.SINGLETON); builder.factory(InterceptorFactor ...
<struts>           <!--用于对bean的定义,置于Contatiner中-->         <bean type="类型" name="实现类名称(为空则取默认值default)" class="实现类全路径" static="true/false(是否只是静态注入)" scope="default|request|session|singleton|thread"/>                  <const ...
ContainerProvider 功能 1、处理XML中bean元素:调用ContanerBuilder.factory方法,设置实现类的与工厂的关系,以便Container能够实现类的创建并注入依赖。 2、处理多个properties文件及xml文件中的contstant元素:将所有属性与值关系都存入ContainerProperties。   (ContainerProperties的constant方法会调用ContanerBuilder.constant方法注入常量工厂,以便bean中需要常量注入时使用)          

PackageProvider

PackageProvider 用于将struts xml中的package元素转成PackageConfig对象。    由DefaultConfiguration 调用PackageProvider.loadPackages()方法,生成多个PackageConfig对象。 由DefaultConfiguration 对PackageConfig对象处理生成RuntimeConfiguration。   RuntimeConfiguration在struts处理请求流程中被使用,struts解析请求的url而生成namesapce 和 actionName,从RuntimeCo ...

Validator

对Action中属性值进行校验,如果Action扩展了ValidationAwareSupport(或实现了ValidationAware),则Action.addActionError(String anErrorMessage) 或 Action.addFieldError(String fieldName, String errorMessage) 被调用,来保存校验失败的信息。       
struts 国际化资源文件的分成两类: 1.全局的国际化资源文件    默认加载的:org/apache/struts2/struts-messages    配置加载的 struts.xml中配置:     <constant name="struts.custom.i18n.resources" 
ResourceBundle 用于加载properties文件,并通过key获取文件中的值。 通过静态方法实例化ResourceBundle: static ResourceBundle getBundle(String baseName, Locale locale) baseName 由两部分组成:类路径+properties文件的基本名称   匹配的properties文件名依次为: properties文件的基本名称+"_"+locale.getLanguage()+"_"+locale.getCountry+".p ...
Ognl 中NullHandler   1.用于方法调用返回值为null时的处理,可以生成一个对象代替方法返回值。   2.用于属性取值时返回值为null时的处理,可以生成一个对象为该属性赋值再返回。  举例:   如前台页面提交user.name=yanlei,但Action中的user对象为null,则可以新建user对象,赋给Action,再把user对象的name属性赋值=yanlei.        Struts 加载扩展的NullHandler  :             Struts 中在OgnlValueStackFactory中调用OgnlRuntime.se ...
Ognl 中MethodAccessor 用于调用类实例的方法或类的静态方法    Struts 加载扩展的PropertyAccessor  :             Struts 中在OgnlValueStackFactory中调用OgnlRuntime.setMethodAccessor(Class class,MethodAccessor  实例)方法来加载Struts中定义的MethodAccessor。              在OgnlValueStackFactory 实例化之后,注入Containter时: @Inject public void ...
Global site tag (gtag.js) - Google Analytics