<(|北京上海f1国际赛车场地址的注册址多少|)>

No.文字表記10進表記16進表記文字Comment001&&#34;&#x22;&&&quotation mark = APL quote002&&#38;&#x26;&&&ampersand003&&#60;&#x3C;&&&less-than sign004&&#62;&#x3E;&&&greater-than sign005&&#160;&#xA0;&&&no-break space = non-breaking spaceiSO 8859-1 characterschar glyphHTML tag&&?&?&?&¤&?&?&§&¨&(C)&?&<<&?&&&(R)&?&°&±&?&sup2;?&sup3;?&u&?&·&,&?&sup1;?&>>& 1/4 &frac14; 1/2 &frac12; 3/4 &frac34;?&?&A?&A?&A?&A?&A?&AAE&AE?&C?&E?&E?&E?&E?&I?&I?&I?&I?&ETH;?&N?&O?&O?&O?&O?&O×&?&O?&U?&U?&U?&U?&Y?&THORN;ss&à&á&?&?&?&?&ae&?&è&é&ê&?&ì&í&?&?&?&?&ò&ó&?&?&?&÷&?&ù&ú&?&ü&?&?&?&Math symbolsLatin Extended-Bchar glyphHTML tag?&Arrowschar glyphHTML tag←&↑&→&↓&&?&<=&lA?&uA=>&rA?&dA&hAMathematical Operatorschar glyphHTML tag?&?&?&?&?&∈&?&?&∏&∑&-&*&√&∝&∞&∠&∧&∨&∩&∪&∫&∴&there4;&#8764;&?&≈&≠&≡&≤&≥&?&?&?&?&?&⊕&?&⊥&?&General Punctuationchar glyphHTML tago&…&′&″&P?&/&Miscellaneous Technicalchar glyphHTML tag?&?&?&?&?&?&Geometric Shapeschar glyphHTML tag?&Miscellaneous Symbolschar glyphHTML tag?&?&?&?&Letterlike Symbolschar glyphHTML tag?&I&R&(TM)&?&Greekchar glyphHTML tagΑ&AΒ&BΓ&GΔ&DΕ&EΖ&ZΗ&EΘ&TΙ&IΚ&KΛ&LΜ&Mu;Ν&Nu;Ξ&Xi;Ο&OΠ&Pi;Ρ&RΣ&SΤ&TΥ&UΦ&PΧ&CΨ&PΩ&Oα&β&γ&δ&ε&ζ&η&θ&ι&κ&λ&μ&ν&ξ&ο&π&ρ&?&σ&τ&υ&φ&χ&ψ&ω&?&?&?&Special characters for HTMLC0 Controls and Basic Latinchar glyphHTML tag&&&&&&&&Latin Extended-Achar glyphHTML tagOE&OEoe&?&S?&?&YSpacing Modifier Letterschar glyphHTML tag^&~&General Punctuationchar glyphHTML tag&&&&&&?&?&?&?&–&—&‘&’&,&“&”&,,&+&?&D‰&<&>&EUR&百度知道 - 信息提示
知道宝贝找不到问题了&_&!!
该问题可能已经失效。
秒以后自动返回顶点小说:拒绝弹窗 免费阅读 在线观看 直接下载
美点小说风云榜
顶点小说网所有小说由网友上传,如有侵犯版权,请来信告知,本站立即予以处理。Copyright & 2011 () All Rights Reserved.我们在 SpringMVC 开发项目中,有的用注解和 XML 配置 Bean, 这两种都各有自己的优势,数据源配置比较经常用 XML 配置,控制层依赖的 service 比较经常用注解等(在部署时比较不会改变的),我们经常比较常用的注解有 @Component 是通用标注, @Controller 标注 web 控制器, @Service 标注 Servicec 层的服务, @Respository 标注 DAO 层的数据访问。 SpringMVC 启动时怎么被自动扫描然后解析并注册到 Bean 工厂中去(放到 DefaultListableBeanFactory 中的 Map&String,&BeanDefinition&&beanDefinitionMap 中&以 BeanName 为 key )?我们今天带着这些问题来了解分析这实现的过程,我们在分析之前先了解一下这些注解。
@Controller 标注 web 控制器, @Service 标注 Service 层的服务, @Respository 标注 DAO 层的数据访问。 @Component 是通用标注,只是定义为一个类为 Bean , SpringMVC 会把所有添加 @Component 注解的类作为使用自动扫描注入配置路径下的备选对象。 @Controller 、 @Service/@Respository 只是更加的细化,都是被 @Component 标注,所以我们比较不推荐使用 @Component 。源代码如下:
@Target({ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Documented@Componentpublic @interface Service { String value() default &&;}@Target({ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Documented@Componentpublic @interface Controller { String value() default &&;}@Target({ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Documented@Componentpublic @interface Repository { String value() default &&;}都是有标示 @Component 我们在配置文件中,标示配置需要扫描哪些包下,也可以配置对某个包下不扫描,代码如下:&context:component-scan base-package=&cn.test&&
&context:exclude-filter type=&regex& expression=&cn.test.*.*.controller&/&
&context:exclude-filter type=&regex& expression=&cn.test.*.*.controller2&/&&/context:component-scan&说明:&context:exclude-filter& 指定的不扫描包, &context:exclude-filter& 指定的扫描包 SpringMVC 先读取配置文件,然后根据 context:component-scan 中属性 base-package 去扫描指定包下的 class 和 jar 文件,把标示 @Controller 标注 web 控制器, @Service 标注 Servicec 层的服务, @Respository 标注 DAO 层的数据访问等注解的都获取,并注册为 Bean 类放到 Bean 工厂,我们接下来要分析的这个过程。我们平时项目开发都是这样的注解,实现 MVC 模式,代码如下: 例如://控制层@Controller@RequestMapping(value=&/test&)public class TestController2 { @Autowired private TestService testS @RequestMapping(value=&/index&) public String getIndex(Model model){
return &&; }}//服务层@Service(&testService&)public class TestServiceImpl implementsTestService{}我们今天的入口点就在这,因为解析注解的到注册,也是先读取配置文件并解析,在解析时扫描对应包下的 JAVA 类,里面有 DefaultBeanDefinitionDocumentReader 这个类, doRegisterBeanDefinitions 这个方法实现解析配置文件的 Bean ,这边已经读取进来形成 Document& 形式存储,然后开始解析 Bean, 是由 BeanDefinitionParserDelegate 类实现的, BeanDefinitionParserDelegate 完成具体 Bean 的解析(例如: bean 标签、 import 标签等)这个在 上一篇SpringMVC 源代码深度解析 IOC容器(Bean 解析、注册)
里有解析,今天注解属于扩展的标签,是由 NamespaceHandler 和 BeanDefinitionParser 来解析。源代码如下: public BeanDefinition parseCustomElement(Element ele, BeanDefinition containingBd) {
String namespaceUri = getNamespaceURI(ele);
NamespaceHandler handler = this.readerContext.getNamespaceHandlerResolver().resolve(namespaceUri);
if (handler == null) {
error(&Unable to locate Spring NamespaceHandler for XML schema namespace [& + namespaceUri + &]&, ele);
return handler.parse(ele, new ParserContext(this.readerContext, this, containingBd)); }NamespaceHandler 这边这边起到了什么作用,根据不同的 Namespace 获取不同的 NamespaceHandler ,因为我们在 Beans 标签配置了命名空间,然后就可以配置对应的标签,解析标签时,比较有自己的所实现的 NamespaceHandler 来解析,如图所示: NamespaceHandler 中的 parse 方法是它的子类类 NamespaceHandlerSupport 实现的,获取通过 findParserForElement 方法获取 BeanDefinitionParser& 对象,这个对象在工程初始化时就直接实例化放在缓存中 Map&String,&BeanDefinitionParser& ,然后通过 localName 获取,源代码如下: public BeanDefinition parse(Element element, ParserContext parserContext) {
return findParserForElement(element, parserContext).parse(element, parserContext); } private BeanDefinitionParser findParserForElement(Element element, ParserContext parserContext) {
String localName = parserContext.getDelegate().getLocalName(element);
BeanDefinitionParser parser = this.parsers.get(localName);
if (parser == null) {
parserContext.getReaderContext().fatal(
&Cannot locate BeanDefinitionParser for element [& + localName + &]&, element);
}为什么要获取 BeanDefinitionParser& ,因为 BeanDefinitionParser& 类是解析配置文件中的 &context:component-scan&,&aop:config& 等标签,但是不同的标签是由不同的 BeanDefinitionParser 来进行解析的,如图所示:
接下来我们开始解析这个标签, &context:component-scan& 标签的解析是由 ComponentScanBeanDefinitionParser 类解析的,接下来我们要分析它怎么解析注解的 Bean ,并把 Bean 注册到 Bean 工厂,源代码如下: public BeanDefinition parse(Element element, ParserContext parserContext) { //获取context:component-scan 配置的属性base-package的值
String[] basePackages = StringUtils.tokenizeToStringArray(element.getAttribute(BASE_PACKAGE_ATTRIBUTE),
ConfigurableApplicationContext.CONFIG_LOCATION_DELIMITERS); //创建扫描对应包下的class文件的对象
ClassPathBeanDefinitionScanner scanner = configureScanner(parserContext, element); //扫描对应包下的class文件并有注解的Bean包装成BeanDefinition
Set&BeanDefinitionHolder& beanDefinitions = scanner.doScan(basePackages);
registerComponents(parserContext.getReaderContext(), beanDefinitions, element);
}说明:( 1 )获取 context:component-scan& 配置的属性 base-package 的值,然后放到数组。 ( 2 )创建扫描对应包下的 class 和 jar 文件的对象 ClassPathBeanDefinitionScanner& ,由这个类来实现扫描包下的 class 和 jar 文件并把注解的 Bean 包装成 BeanDefinition 。 ( 3 ) BeanDefinition 注册到 Bean 工厂。
第一:扫描是由 ComponentScanBeanDefinitionParser 的 doScan 方法来实现的,源代码如下:
protected Set&BeanDefinitionHolder& doScan(String... basePackages) {//新建队列来保存BeanDefinitionHolder
Set&BeanDefinitionHolder& beanDefinitions = new LinkedHashSet&BeanDefinitionHolder&();//循环需要扫描的包
for (String basePackage : basePackages) { //进行扫描注解并包装成BeanDefinition
Set&BeanDefinition& candidates = findCandidateComponents(basePackage);
for (BeanDefinition candidate : candidates) {
ScopeMetadata scopeMetadata = this.scopeMetadataResolver.resolveScopeMetadata(candidate);
candidate.setScope(scopeMetadata.getScopeName());
String beanName = this.beanNameGenerator.generateBeanName(candidate, this.registry);
if (candidate instanceof AbstractBeanDefinition) {
postProcessBeanDefinition((AbstractBeanDefinition) candidate, beanName);
if (candidate instanceof AnnotatedBeanDefinition) {
AnnotationConfigUtils.processCommonDefinitionAnnotations((AnnotatedBeanDefinition) candidate);
if (checkCandidate(beanName, candidate)) {
BeanDefinitionHolder definitionHolder = new BeanDefinitionHolder(candidate, beanName);
definitionHolder = AnnotationConfigUtils.applyScopedProxyMode(scopeMetadata, definitionHolder, this.registry);
beanDefinitions.add(definitionHolder); //对BeanDefinition进行注册
registerBeanDefinition(definitionHolder, this.registry);
return beanD }进行扫描注解并包装成 BeanDefinition 是 ComponentScanBeanDefinitionParser 由父类 ClassPathScanningCandidateComponentProvider 的方法 findCandidateComponents 实现的,源代码如下: public Set&BeanDefinition& findCandidateComponents(String basePackage) {
Set&BeanDefinition& candidates = new LinkedHashSet&BeanDefinition&();
try { //base-package中的值替换为classpath*:cn/test/**/*.class
String packageSearchPath = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX +
resolveBasePackage(basePackage) + &/& + this.resourceP//获取所以base-package下的资源
Resource[] resources = this.resourcePatternResolver.getResources(packageSearchPath);boolean traceEnabled = logger.isTraceEnabled();
boolean debugEnabled = logger.isDebugEnabled();
for (Resource resource : resources) {
if (traceEnabled) {
logger.trace(&Scanning & + resource);
if (resource.isReadable()) {
MetadataReader metadataReader = this.metadataReaderFactory.getMetadataReader(resource); //对context:exclude-filter进行过滤
if (isCandidateComponent(metadataReader)) { //包装BeanDefinition
ScannedGenericBeanDefinition sbd = new ScannedGenericBeanDefinition(metadataReader);
sbd.setResource(resource);
sbd.setSource(resource);
if (isCandidateComponent(sbd)) {
if (debugEnabled) {
logger.debug(&Identified candidate component class: & + resource);
candidates.add(sbd);
if (debugEnabled) {
logger.debug(&Ignored because not a concrete top-level class: & + resource);
if (traceEnabled) {
logger.trace(&Ignored because not matching any filter: & + resource);
catch (Throwable ex) {
throw new BeanDefinitionStoreException(
&Failed to read candidate component class: & + resource, ex);
if (traceEnabled) {
logger.trace(&Ignored because not readable: & + resource);
catch (IOException ex) {
throw new BeanDefinitionStoreException(&I/O failure during classpath scanning&, ex);
}说明:(1) 先根据 context:component-scan& 中属性的 base-package=&cn.test& 配置转换为 classpath*:cn/test/**/*.class ,并扫描对应下的 class 和 jar 文件并获取类对应的路径,返回 Resources (2) 根据 &context:exclude-filter& 指定的不扫描包, &context:exclude-filter& 指定的扫描包配置进行过滤不包含的包对应下的 class 和 jar。 ( 3 )封装成 BeanDefinition 放到队列里。
1 )怎么根据 packageSearchPath 获取包对应下的 class 路径,是通过 PathMatchingResourcePatternResolver 类, findAllClassPathResources(locationPattern.substring(CLASSPATH_ALL_URL_PREFIX.length())); 获取配置包下的 class 路径并封装成 Resource ,实现也是 getClassLoader().getResources(path); 实现的。源代码如下:
&span style=&font-size:18&&public Resource[] getResources(String locationPattern) throws IOException {
Assert.notNull(locationPattern, &Location pattern must not be null&);
if (locationPattern.startsWith(CLASSPATH_ALL_URL_PREFIX)) {
// a class path resource (multiple resources for same name possible)
if (getPathMatcher().isPattern(locationPattern.substring(CLASSPATH_ALL_URL_PREFIX.length()))) {
// a class path resource pattern
return findPathMatchingResources(locationPattern);
// all class path resources with the given name
return findAllClassPathResources(locationPattern.substring(CLASSPATH_ALL_URL_PREFIX.length()));
// Only look for a pattern after a prefix here
// (to not get fooled by a pattern symbol in a strange prefix).
int prefixEnd = locationPattern.indexOf(&:&) + 1;
if (getPathMatcher().isPattern(locationPattern.substring(prefixEnd))) {
// a file pattern
return findPathMatchingResources(locationPattern);
// a single resource with the given name
return new Resource[] {getResourceLoader().getResource(locationPattern)};
} }protected Resource[] findAllClassPathResources(String location) throws IOException {
String path =
if (path.startsWith(&/&)) {
path = path.substring(1);
Enumeration&URL& resourceUrls = getClassLoader().getResources(path);
Set&Resource& result = new LinkedHashSet&Resource&(16);
while (resourceUrls.hasMoreElements()) {
URL url = resourceUrls.nextElement();
result.add(convertClassLoaderURL(url));
return result.toArray(new Resource[result.size()]); }&/span& 说明: getClassLoader().getResources 获取 classpath*:cn/test/**/*.class 下的 cn/test 包下的 class 的路径信息。并返回了 URL 。这里能把对应 class 路径获取到了,就能获取里面的信息。
2 ) isCandidateComponent 实现的标签是里配置的 &context:exclude-filter& 指定的不扫描包, &context:exclude-filter& 指定的扫描包的过滤,源代码如下:
&span style=&font-size:18&&protected boolean isCandidateComponent(MetadataReader metadataReader) throws IOException {
for (TypeFilter tf : this.excludeFilters) {
if (tf.match(metadataReader, this.metadataReaderFactory)) {
for (TypeFilter tf : this.includeFilters) {
if (tf.match(metadataReader, this.metadataReaderFactory)) {
AnnotationMetadata metadata = metadataReader.getAnnotationMetadata();
if (!metadata.isAnnotated(Profile.class.getName())) {
AnnotationAttributes profile = MetadataUtils.attributesFor(metadata, Profile.class);
return this.environment.acceptsProfiles(profile.getStringArray(&value&));
}&/span& 说明:& this.excludeFilters 有 pattern 属性,值是就是 &context:exclude-filter&type=&regex&&expression=&cn.test.*.*.controller&/& 的 cn.test.*.*.controller 值 this.pattern.matcher(metadata.getClassName()).matches(); 通过这个去匹配,如果是就返回 false 。如图所示:
我们到这边已经把对应的通过在 XML 配置把注解扫描解析并封装成 BeanDefinition 。 接下来我们来分析一下注册到 Bean 工厂,大家还记得 ComponentScanBeanDefinitionParser 的 doScan 方法,然后到工厂的是由 registerBeanDefinition(definitionHolder,&this.registry); 实现的,源代码如下: protected void registerBeanDefinition(BeanDefinitionHolder definitionHolder, BeanDefinitionRegistry registry) {
BeanDefinitionReaderUtils.registerBeanDefinition(definitionHolder, registry); }public static void registerBeanDefinition(
BeanDefinitionHolder definitionHolder, BeanDefinitionRegistry registry)
throws BeanDefinitionStoreException {
// Register bean definition under primary name.
String beanName = definitionHolder.getBeanName();
registry.registerBeanDefinition(beanName, definitionHolder.getBeanDefinition());
// Register aliases for bean name, if any.
String[] aliases = definitionHolder.getAliases();
if (aliases != null) {
for (String aliase : aliases) {
registry.registerAlias(beanName, aliase);
} } public void registerBeanDefinition(String beanName, BeanDefinition beanDefinition)
throws BeanDefinitionStoreException {
Assert.hasText(beanName, &Bean name must not be empty&);
Assert.notNull(beanDefinition, &BeanDefinition must not be null&);
if (beanDefinition instanceof AbstractBeanDefinition) {
((AbstractBeanDefinition) beanDefinition).validate();
catch (BeanDefinitionValidationException ex) {
throw new BeanDefinitionStoreException(beanDefinition.getResourceDescription(), beanName,
&Validation of bean definition failed&, ex);
synchronized (this.beanDefinitionMap) {
Object oldBeanDefinition = this.beanDefinitionMap.get(beanName);
if (oldBeanDefinition != null) {
if (!this.allowBeanDefinitionOverriding) {
throw new BeanDefinitionStoreException(beanDefinition.getResourceDescription(), beanName,
&Cannot register bean definition [& + beanDefinition + &] for bean '& + beanName +
&': There is already [& + oldBeanDefinition + &] bound.&);
if (this.logger.isInfoEnabled()) {
(&Overriding bean definition for bean '& + beanName +
&': replacing [& + oldBeanDefinition + &] with [& + beanDefinition + &]&);
this.beanDefinitionNames.add(beanName);
this.frozenBeanDefinitionNames =
this.beanDefinitionMap.put(beanName, beanDefinition);
resetBeanDefinition(beanName); }说明: DefaultListableBeanFactory 要实现的保存到 Map&String,&BeanDefinition&&beanDefinitionMap 中&以 BeanName 为 key ,如果有,就不用保存了。 DefaultListableBeanFactory 我们在 上一篇SpringMVC 源代码深度解析 IOC容器(Bean 解析、注册) 有介绍过了, DefaultListableBeanFactory继承了BeanFactory。
(1) 因为解析注解的到注册,也是先读取配置文件并解析,在解析时扫描对应包下的 JAVA 类,里面有 DefaultBeanDefinitionDocumentReader 这个类, doRegisterBeanDefinitions 这个方法实现解析配置文件的 Bean ,这边已经读取进来形成 Document& 形式存储。然后 注解属于扩展的标签,是由 NamespaceHandler 和 BeanDefinitionParser 来解析。
& &(2) 根据 context:component-scan 中属性 base-package 去扫描指定包下的 class 和 jar 文件,获取对应的路径信息,然后根据配置 &context:exclude-filter& 指定的扫描包配置进行过滤不包含的包对应下的 class 和 jar路径的 Resources。
& & &(3) 把标示 @Controller 标注 web 控制器, @Service 标注 Servicec 层的服务, @Respository 标注 DAO 层的数据访问等注解路径都获取包装成 BeanDefinition ,并注册为
Bean 类放到 Bean 工厂,也就是 DefaultListableBeanFactory Map&String,&BeanDefinition&&beanDefinitionMap 中 以 BeanName 为 key。地址:安顺市文庙仿古建筑群内
网址:http://www.
您当前的位置:&>&
成功广告文案的五步法则&一&
日期: 10:48:00来源:点击:
  作策划这么多年,一直痴迷于设计、运作卖货赚钱的心跳游戏,不经意的数数,已操作过不少成功的案例。可是在与同行交流时发现,多年前有人向我苦诉过的内容还在继续上演。平面报媒广告大战一直是传统营销模式企业成功的必经之路,企业愿意投入少则数十万多则数百万的广告费用,却不愿在前期的策划特别是广告文案上下功夫。特别是很多中小型企业,为了节省成本,甚至由老板亲自操刀指点产品激扬文字,含辛茹苦创作出了打市场的&坚枪利炮&----广告文案。最后在一遍赞美声中,再搭上数以万计的真金白银,砸向了报纸,推上了市场,期待着飞机紧急空运、镖局的出面运钞票等美好的愿望奇迹上演。 &&&&可是结果常常令人失望,不是电话量一直不争气就是销量非常不给面子。
&&&&一场败仗,拿着自己钦点创作的&哑枪哑炮&,让老板们常常进退维谷,骑虎难下,辛辛苦苦挣来的数十万数百万的钞票就这样打了水漂。
&&&&问题出在那呢?
&&&&有人说,广告文案没有让消费者对号入座。有人说,广告文案内容太假让消费者感觉不可信。还有人说,广告文案内容没有骟动性,没打动消费者。更有人说,内容散乱,不知所云&&
&&&&那么应该怎样创作一篇真正卖座又卖货的好文案呢?
&&&&根据自己多年的实战经验,可遵循如下五步法则:
&&& 第一步:找到自己,给自己定个位
&&&&成功的文案首先要作足基础调研,把关于自己的所有问题都要弄清楚。
&&&&要先消化产品与市调的资料,然后你用不要超过20-30个字的文字将产品描述下来,这二十个字要包括产品的特点、功能、目标消费群、精神享受四个方面的内容。特别是像&研发机构的投资机构是中科院、与诺贝尔奖获得者的科研成果是受本产品成份的启发&之类对于解决&根正苗红、值得信赖&的社会信誉至关重要,直接影响产品的市场命运。
&&& 第二步:分析自己,了解自己的能耐
&&&&要让消费者相信自己,就不能胡吹海侃,要实事求是地弄清清楚楚自己究竟能作什么的,想好对消费者的承诺。
&&&&紧接着你要问自己:我应该向我的消费者承诺什么?这一点很重要,若没有承诺,没有任何人会买你的东西,承诺越具体越好。&让你美丽&的承诺不如&消除你脸上的色斑&及&让皮肤变得洁白、有光泽&来的有力,&为你省钱&不如&让你省下10元钱&来得有力!不要写下连你自己都不能相信的承诺,你的承诺靠什么有保证在文案中要考虑清楚。
&&& 第三步:告诉自己,应该怎样与别人沟通
&&&&胸有成竹,才能谈吐自如,作文案前先要为文案定个基调,想好准备谈什么?
&&&&有了这两点,你就可以确定一个核心创意,也叫大点子、大创意(bigidea)。这个核心创意一是很单纯,二是可延伸成系列广告的能力很强,三是很有原创性,可以震醒许多漠不关心,漠然视之的消费者,这一点我在后面谈创意方法还会谈到。
例如,我们为奥林蒸馏水确定的核心创意是&有渴望,就喝奥林&,围绕着人的种种&渴望&以及&口渴&的种种情景展开系列广告,轰动一时。为&红常青羊胎素&这一美容保健品所确定的大创意是&红常青,为女人除不平&,&不平&指脸上的&皱纹、斑斑痘痘&,又指心中的不平、怨言,展开的系列广告也颇引人注意。
&&& 第四步:突出自己,如何引起人的注意
&&&&要在云云众生中脱颖而出,就得有与众不同的&嚎头&,富有吸引力的标题是文案成功的关键。
&&&&1、每一则广告最重要的是标题,标题写得好,广告胜利了70-90%,标题的创意请把握三个基本点:
&&&&(1)故事性:标题具有吸引人的故事性会吸引人认真读内文,例如《意想不到,一部赛车开进了厨房》这是我们为火王97新款燃器炉&赛车一族&创意的广告,将&赛车&开进&厨房&产生了故事性,吸引了人看广告的兴趣。
&&&&还有《谁是&受害者&》、《我是&受害者&》为绿卡鳖精创意的逆向诉求广告,创造了很高的阅读率。
&&&&以下标题都相当有故事性:
&&&&《&舒味思&的人来到了本地......》(奥格威为舒味思饮料作的广告)
&&&&《一个美丽的女人背后两个男人》(吾老七口服液的广告)
&&&&《为什么要炒我的鱿鱼?》(宽飞仿生被的广告)
&&&&《一封寄给战&痘&者的特快专递》(益生堂三蛇胆的广告)
&&&&《这家公司突然宣布倒闭》(奥林蒸馏水的&渴望成功篇&)
&&&&(2)新奇性
&&&&一个可以引发人们好奇心的广告会吸引很多来阅读人。广告标题一定要有新奇性,我们为益生堂三蛇胆创意的广告《益生堂三蛇胆为何专作&表面文章&?》、《上火啦》、《战&痘&的青春》,为佳百娜红葡萄酒创意的《今晚,你准备&亲吻&佳百娜吗?》、《佳百娜五岁了,尚未开封》、《咦,怎么少了一个人?噢,他被佳百娜&迷&住了》,为一致全家福创意的《今天请倒过来看广告--一致全家福到了!》。采纳的形象广告《老虎能飞起来吗》、《一个老总为何需要两个脑袋?》等等广告都比较符合新奇性的特点。
&&&&(3)新闻性
&&&&大家都爱看新闻,标题写得像新闻会很受人瞩目。宽飞仿生被的创意《独家披露被子里的新闻》,为海南啤酒创意的《海南将要&桶&获膨胀》、《海南今年夏天可能要降&温&》,为古方三蛇胆创意的《可以全面停&火&了》,为益生堂三蛇胆创意的《从深圳开来的战&痘&特快已抵达本市》,为吾老七口服液创意的《这三个寻常女人引起全城女性关注》、《曝光面子&丑闻&》,为金汤减肥冲剂创意的《深圳女人可以&瘦下来&吗?》等广告都取得了很好的效果。
&&&&为写好一则广告,在动手写正文之前,请务必写十五个以上的标题,然后从中选出一个满意的。
&2、以上谈了标题创意的三个特点,下面主要谈谈创意的一些方法。
&&&&(1)拟人化
&&&&当把产品拟人化之后,一般都会有好的创意。三点摩丝的广告《你的头发在生气?》,为千仟玉手足柔嫩剂创意的广告《北京人,谁的手足在哭泣?》,为视力1+1眼睛营养液创意的广告《别让我一辈子&嫁&给它》(我是眼睛,它是眼镜)。为天人防盗锁创意的《结婚》、《离婚》篇,为火王燃气炉创意的《我天生一肚子火气》等等,都运用了拟人的手法,相当生动。
&&&&(2)逆向思维
&&&&别人总是说自己是老大,如果你承认自己老二,就不同凡响,别人说&红&,你说&黑&就往往出人意料。威谦巴克公司为艾维斯出租车创意的《在出租车行业里,艾维斯是第二位的》就令人震动。在许多广告中要运用逆向思维,房地产都喜欢说自己在&黄金地段&,我们为一个房地产做得广告说它在&白银地段&诉求它&升值有潜力&,为另一个房地产广告创意的《我喜欢挑剔的买房人》,为蓝旗衬衣做得《一件不合格的衬衣》,为三蛇胆创意的《另外的80万粒您吃不到》,为金汤创意的《请别相信100%有效》,为吾老七创意的《女人的年龄可以&撒谎&》等等。
&&&&(3)情景想象
&&&&许多广告要借助生活中熟悉的场景想象。例如们为一致全家创意的《归心似箭》篇、《刮目相看》篇,为益生堂创意的《你准备送我什么》、《年轻人火气不要太大》、《这一回,别烤&糊&了》,为天健花园创意的《这里看来需要开一家宠物店》都是描摩出返乡、回家、男女谈恋爱时的对话、办公室一幕、高考一幕、公园一幕等情景展开的创意,非常富有人情味。
&&&&(4)借助热点话题、新闻
&&&&在《水浒传》最火爆的时候,古方三蛇胆的《孙二娘篇》、《对付上火、长痘怎能心太软?》,&心太软&是特别流行的歌,两个最红的流行物拼在古方三蛇胆的广告中,广告效果自然非同凡响。在深圳进行如火如荼的扫毒、扫黄运动时,我们推出了三蛇胆的《扫毒灭疮》篇广告引起格外关注。中华豆腐在台湾借母亲节推出的《中华慈母心,中华豆腐心》亦妙不可言,我们为一致药店在三&八节推出的《三&八节男人一致行动》的广告都相当有影响力。
&&&&(5)利用比喻、象征、联想等手法
&&&&将某一特点与某一物象或其他事物相比或产生联想,往往会出现比较惊人的效果。比如我们把&哇哇乱叫的汽车电子防盗锁&比喻为&猫&,广告标题就是《猫能救你的车吗?》,佳百娜红酒的广告标题《来自烟台的&美妙女郎&--佳百娜》,天健花园我们用名著、名画来比喻建筑力作,弥足珍贵,洗面奶除痘被比喻成&用碾子磨面又慢又烦&等等。
&&&&联想对创意出好文案也很有帮助,如上海三菱,电话是,让人一下就想到三菱。台湾黑松饮料,&黑松就是快乐&,让人将黑松与快乐联系在一起。
&&&&(6)运用感叹语气来创意,比如用&果然&、&可恶&、&亲爱的&等均很吸引人。
7)运用版面创意,我们为益生堂三蛇胆、天健花园创意竖版广告相当特别。
&&&&(8)借助熟悉感。
&&&&(9)借助宠物、美女与宝宝。
&&&&篇幅所限,不一一举例。
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&作者:王理东
版权所有: 安顺多彩文化传媒 《中华人民共和国电信与信息服务业务经营许可证》编号:ICP备案号黔ICP-
地址:贵州省安顺市文庙仿古建筑群内
电话:33 传真:33
施总: QQ:
本站服务于:安顺广告制作安装,安顺喷绘写真,安顺印刷包装,安顺展览展示,安顺广告设计策划}

我要回帖

更多关于 上海赛车场地址 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信