博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Annotation
阅读量:6803 次
发布时间:2019-06-26

本文共 4646 字,大约阅读时间需要 15 分钟。

  what&introduction

  1、Annotation,是Java5的新特性,JDK5引入了Metadata()很容易的就能够调用Annotations。Annotations提供一些本来不属于程序的数据,比如:一段代码的作者或者告诉禁止一些特殊的错误。Anannotation对代码的执行没有什么影响。Annotations使用@annotation的形式应用于代码:类(class),属性(),方法(method)等等。一个Annotation出现在上面提到的开始位置,而且一般只有一行,也可以包含有任意的参数。用于简化Bean的配置,某些场合可以取代XML配置文件。

@Named注解

  要注入接口,我们使用@Inject注释。注释基本上做了它说的。它注入应用程序中可用的组件。容器有我们支付接口的两种实现,所以他不知道注入哪一种。所以我们需要CDI提供@Named注释,允许为实现指定名称。根据Spring文档,“JSR 330的@Named注释可以用来检测组件并为它们提供名称。@Named注释的主要角色是定义一个bean,用于解析应用程序中的EL语句,通常是通过JSF EL解析器。可以使用名称执行注入,但这不是CDI中的注入的工作方式,因为CDI为我们提供了更丰富的方式来表示注入点和要注入到其中的bean。

@Named("cash")public class CashPaymentImpl implements Payment {    private static final Logger LOGGER = Logger.getLogger(CashPaymentImpl.class.toString());    @Override    public void pay(BigDecimal amount) {        LOGGER.log(Level.INFO, "payed {0} cash", amount.toString());    }}
@Named("visa")public class VisaPaymentImpl implements Payment {    private static final Logger LOGGER = Logger.getLogger(VisaPaymentImpl.class.toString());    @Override    public void pay(BigDecimal amount) {        LOGGER.log(Level.INFO, "payed {0} with visa", amount.toString());    }}

@RequestScoped

public @ interface requestscope,指定bean的请求范围:

  • 在web应用程序中任何servlet的service()方法期间,在任何servlet过滤器的doFilter()方法期间,以及当容器调用任何ServletRequestListener或AsyncListener时。
  • 在任何Java EE web服务调用期间,
  • 在任何EJB的任何远程方法调用期间、在任何EJB的任何异步方法调用期间、在对EJB超时方法的任何调用期间以及在向任何EJB消息驱动bean传递消息期间
  • 在为从Java EE组件环境获得的JMS主题或队列向MessageListener传递任何消息期间。

请求上下文被销毁:

  • 在servlet请求结束时,在service()方法、所有doFilter()方法以及所有requestDestroyed()和onComplete()通知返回之后,
  • 在web服务调用完成之后,在EJB远程方法调用、异步方法调用、超时或消息传递完成之后,
  • 或者在消息传递到MessageListener之后返回。

Analysis of Web.xml in Hello1 project

 

javax.faces.PROJECT_STAGE
Development
Faces Servlet
javax.faces.webapp.FacesServlet
1
Faces Servlet
*.xhtml
30
index.xhtml

 

xmlns:xmlns 属性可以在文档中定义一个或多个可供选择的命名空间。该属性可以放置在文档内任何元素的开始标签中。该属性的值类似于 URL,它定义了一个命名空间,浏览器会将此命名空间用于该属性所在元素内的所有内容。

 xsi:schemaLocation属性其实是Namespace为http://www.w3.org/2001/XMLSchema-instance里的schemaLocation属性,定义了XML Namespace和对应的XSD(Xml Schema Definition)文档的位置的关系。它的值由一个或多个URI引用对组成,两个URI之间以空白符分隔(空格和换行均可)。第一个URI是定义的XML Namespace的值,第二个URI给出Schema文档的位置,Schema处理器将从这个位置读取Schema文档,该文档的targetNamespace必须与第一个URI相匹配。

javax.faces.PROJECT_STAGE
Development

1. 启动一个WEB项目的时候,容器(如:Tomcat)会去读它的配置文件web.xml.读两个节点: <listener></listener> 和 <context-param></context-param>

2.紧接着,容器创建一个ServletContext(上下文),这个WEB项目所有部分都将共享这个上下文.
3.容器将<context-param></context-param>转化为键值对,并交给ServletContext.
4.容器创建<listener></listener>中的类实例,即创建监听.
5.在监听中会有contextInitialized(ServletContextEvent args)初始化方法,在这个方法中获得ServletContext = ServletContextEvent.getServletContext();
context-param的值 = ServletContext.getInitParameter("context-param的键");
6.得到这个context-param的值之后,你就可以做一些操作了.注意,这个时候你的WEB项目还没有完全启动完成.这个动作会比所有的Servlet都要早.
换句话说,这个时候,你对<context-param>中的键值做的操作,将在你的WEB项目完全启动之前被执行.
Faces Servlet
#servlet名
javax.faces.webapp.FacesServlet
#设置servlet类     
1
#启动的时候实例化并调用其init()方法的优先级
 

Java servlet是扩展服务器功能的Java程序,servlet可以响应任何类型的请求,但它们通常实现驻留在Web服务器上的应用程序,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。

load-on-startup标记容器是否在启动的时候实例化并调用其init()方法的优先级。它的值表示servlet应该被载入的顺序当值为0或者大于0时,表示容器在应用启动时就加载并初始化这个servlet;如果值小于0或未指定时,则表示只有在第一次请求的容器才在该servlet调用初始化函数正值越小,servlet的优先级越高,应用启动时就越先加载。值相同时,容器就会自己选择顺序来加载。

Faces Servlet
#Servlet的名字,唯一性和一致性,与
元素中声明的名字一致。
*.xhtml
#指定相对于Servlet的URL的路径。该路径相对于web应用程序上下文的根路径。
将URL模式映射到某个Servlet,即该Servlet处理的URL。

加载Servlet的过程

容器的Context对象对请求路径(URL)做出处理,去掉请求URL的上下文路径后,按路径映射规则和Servlet映射路径(<url- pattern>)做匹配,如果匹配成功,则调用这个Servlet处理请求。

30

session-timeout元素用来指定默认的会话超时时间间隔,以分钟为单位,session.timeout只能在1~1440(也就是24小时内)的整数范围内选取,其他都是超出范围报错的,上述为设置三十分钟不操作session,session既失效。

index.xhtml

当用户在浏览器中输入的URL不包含某个servlet名或JSP页面时,welcome-file-list元素可指定显示的默认文件。

 

 

转载于:https://www.cnblogs.com/sensenma533/p/10554759.html

你可能感兴趣的文章
sphinx构建内部文档Wiki系统
查看>>
根据MAC地址查询IP地址
查看>>
this指针
查看>>
Android自动化测试学习之robotium笔记
查看>>
运维自动化-Ansible ( 四 )
查看>>
我的友情链接
查看>>
NMON 生成文件 字段释义
查看>>
Linux 文件基本属性
查看>>
cocos2d 新建项目工程
查看>>
Android开发实现实现缓存功能
查看>>
如何理解Nginx、uWSGI和Flask之间的关系?
查看>>
cisco配置命令复习(一)
查看>>
Ubuntu安装Chrome过程中的细节
查看>>
SVN数据迁移到Git笔记
查看>>
Python - for()循环 详解 及 代码
查看>>
部署计算机加域脚本系列
查看>>
SpringFramework之beanFactory.getBean的分析
查看>>
Linux从DNS服务器的正向解析(CentOS6)
查看>>
我的友情链接
查看>>
Intent里跳页的模式中scheme 模式的简单使用
查看>>