JavaEE
2020-04-02 14:12:32   3  举报             
     
         
 AI智能生成
  javaEE知识点
    作者其他创作
 大纲/内容
  JavaEE基础    
     Servlet    
     生命周期    
     init(ServletConfig config)方法,在Servlet初始化时被调用  
     service(ServletRequest request, ServletResponse response)方法,处理客户端请求  
     destroy()方法,在Servlet销毁时被调用  
     配置    
     web.xml配置servlet和servlet-mapping  
     @WebServlet注解  
     ServletConfig    
     代表当前Servlet  
     获取Servlet初始化参数init-param  
     ServletContext    
     代表当前web应用  
     获取web应用初始化参数context-param  
     整个web应用数据共享  
     ServletRequest    
     代表客户端请求    
     请求转发forward,转发前后是同一个请求  
     ServletResponse    
     代表服务端响应    
     请求重定向redirect,前后是两个不同的请求  
     JSP    
     九大内置对象    
     pageContext:PageContext类型,页面上下文对象 request:ServletRequest类型,表示HTTP请求response:ServletResponse类型,表示HTTP响应session:HttpSession类型,表示当前会话application:ServletContext类型,表示当前Web应用exception:Throwable类型out:JspWriter类型,JSP页面输出流page:Object类型,页面对象config:ServletConfig对象,表示当前Servlet  
     四大作用域    
     page:表示页面范围 request:表示请求范围session:表示当前会话范围application:表示当前Web应用范围  
     JSTL  
     自定义标签    
     1、继承javax.servlet.jsp.tagext.SimpleTagSupport类,并重写doTag方法 2、在项目WEB-INF目录下创建tld文件(其中描述了标签的语法,如:标签有哪些属性,标签的属性是否支持表达式等内容)  
     EL表达式  
     监听器Listener    
     分类    
     ServletRequestListener  
     ServletRequestAttributeListener  
     HttpSessionListener  
     HttpSessionAttributeListener  
     ServletContextListener  
     ServletContextAttributeListener  
     配置    
     web.xml配置listener  
     @WebListener注解  
     过滤器Filter    
     生命周期    
     init()    
     初始化,由Servlet容器(如tomcat)创建  
     doFilter()    
     处理请求过滤  
     destroy()    
     销毁,由servlet容器完成  
     配置    
     web.xml配置filter和filter-mapping  
     @WebFilter注解  
     Cookie    
     为了弥补HTTP协议无状态的不足而引入的机制。由服务端创建,但由客户端(浏览器)保存。  
     应用:客户端记住密码  
     Session    
     由服务端创建,并保存到服务端  
     应用:用户登录验证  
     四种会话跟踪技术: 1、URL重写:将会话ID写到URL之后,服务端通过会话ID识别不同用户;2、隐藏表单域:将会话ID放到表单的隐藏域中,随着表单提交到服务端;3、Cookie:第一次请求时服务器主动发一小段信息给浏览器(即Cookie),下次请求时浏览器自动附带该段信息发送给服务器,服务器读取Cookie识别用户;4、Session:服务器为每个用户创建一个Session对象保存到内存,并生成一个sessionID放入Cookie发送给浏览器,下次访问时sessionID会随Cookie传回来,服务器再根据sessionID找到对应Session对象。  
     URL编码    
     网址路径编码:UTF-8,如xxx.com/title/编码  
     查询字符串:操作系统默认编码,win7是GBK  
     GET和POST方法的编码:网页的编码  
     Ajax调用中的编码:IE总是采用操作系统的默认编码,而Firefox总是采用UTF-8编码  
     XML    
     XML基础语法    
     文档声明  
     约束    
     DTD约束  
     Schema约束  
     XML解析    
     DOM  
     JDOM  
     Dom4J  
     SAX  
     websocket    
     基于TCP,全双工通信协议。  
     @OnOpen,@OnMessage,@OnClose,@OnError关键注解  
     消息服务JMS    
     API    
     Message    
     消息是消息服务器在客户端之间发送的一条条信息。  
     消息类型    
     StreamMessage:Java原始值的数据流对象MapMessage:一套名称-值对TextMessage:一个字符串对象 ObjectMessage:一个序列化的 Java对象BytesMessage:一个字节数据流  
     ConnectionFactory    
     用于创建Connection对象的工厂,通常通过JNDI获取  
     Connection    
     连接对象是和JMS提供者通信的媒介  
     Destination    
     目标是受控对象。在JMS中表示一个队列或者一个主题。  
     点对点模型:Queue子接口  
     发布/订阅模型:Topic子接口  
     Session    
     用于创建消息的生产者、消费者和消息  
     MessageProducer    
     消息生产者,也叫做消息发送者  
     TopicPublisher子接口  
     MessageConsumer    
     消息消费者,也叫做消息接受者  
     TopicSubscriber子接口  
     开发步骤    
     1) 用JNDI 得到ConnectionFactory对象; 2) 用ConnectionFactory创建Connection 对象; 3) 用Connection对象创建一个或多个JMS Session;4) 用JNDI 得到目标队列或主题对象,即Destination对象;5) 用Session 和Destination 创建MessageProducer和MessageConsumer;6) 通知Connection 开始传递消息。  
     两种消息传递方式    
     PERSISTENT:持久化消息,将使用暂存后再转送的机理投递。 NON_PERSISTENT:非持久化消息,最多只能被投递一次。(默认)  
     分类    
     点对点模型(P2P)    
     消息队列Queue  
     消息生产者(发送者)MessageProducer  
     消息消费者(接收者)MessageConsumer    
     同步、异步(通过监听器MessageListener实现)  
     发布订阅模型(Pub/Sub)    
     主题Topic  
     主题发布者TopicPublisher  
     主题订阅者TopicSubscriber  
     框架    
     ActiveMQ    
     由Apache开发,实现了JMS规范,包括点对点模型和发布/订阅模型  
     RokectMQ  
     RabbitMQ  
     Kafka  
     命名服务 JNDI    
     Java Naming Directory Interface  
     事务API JTA    
     Java Transaction API  
     用于处理分布式事务  
     持久化API JPA    
     Java Persistence API  
     邮件服务    
     JavaMail  
     Spring JavaMailSender  
     服务器中间件    
     web服务器    
     Nginx    
     核心配置文件nginx.conf  
     常用命令    
     nginx -v:查看版本  
     nginx:启动nginx  
     nginx -s stop:停止nginx  
     nginx -s reload:重新加载nginx.conf配置文件,使修改生效  
     主要用途    
     处理静态资源    
     Nginx处理静态资源的能力很强,效率也很高  
     支持静态资源缓存,如图片、js、css等  
     反向代理    
     与正向代理相对  
     正向代理:内网通过代理服务器访问外网,如vpn 反向代理:外网通过代理服务器访问内网,可以保证内网安全性  
     负载均衡    
     由于Nginx抗并发能力强,为了减轻Tomcat服务器承受的压力,通常用作Tomcat服务器的负载均衡器  
     可定制化    
     可以通过编写Lua脚本进行功能扩展  
     Apache  
     应用服务器    
     Tomcat、Jetty    
     Servlet容器  
     底层原理:Socket通信(BIO/NIO)  
     JBoss、Weblogic、Websphere  
     开发框架    
     Spring    
     ConextLoaderListener监听器    
     是整个Spring应用启动的关键  
     Spring启动过程大致如下: 1、在Servlet容器启动后,会创建一个ServletContext(整个Web应用的上下文);2、由于ContextLoaderListener实现了ServletContextListener,因此会在ServletContext创建完成后,其中的contextInitialized方法会自动被调用;contextInitialized方法中将会通过ServletContext实例的getParameter()方法找到Spring配置文件位置,然后根据其中的内容为Spring创建一个根上下文(WebApplicationContext,即通常所说的IOC容器):3、将WebApplicationContext作为ServletContext的一个属性放进去,名称是WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE  
     IOC    
     WebApplicationContext:即Spring IOC容器,由容器创建和管理Bean,使用时直接从容器中获取  
     配置方式    
     XML配置文件  
     @Resource/@Autowired注解配置  
     Bean的作用域    
     在Spring4中有以下几个作用域(见ConfigurableBeanFactory和WebApplicationContext接口源码) (1)singleton:默认的作用域,仅为每个Bean对象创建一个实例。  (2)prototype:可以根据需要为每个Bean对象创建多个实例。  (3)request:为每个HTTP请求创建它自有的一个Bean实例,仅在Web相关的ApplicationContext中生效。(4)session:为每个HTTP会话创建一个实例,仅在Web相关的ApplicationContext中生效。 (5)global session:为每个全局的HTTP会话创建一个实例。一般仅在porlet上下文中使用生效。同时仅在Web相关的ApplicationContext中生效。  (6)application:为每个ServletContext创建一个实例。仅在Web相关的ApplicationContext中生效。  
     Bean的生命周期  
     依赖注入的几种方式    
     构造注入  
     属性注入setter  
     接口注入  
     FactoryBean与BeanFactory  
     AOP    
     动态代理    
     JDK动态代理(针对接口,代理类为其兄弟类)    
     目标对象实现了若干接口  
     CGLIB动态代理(针对类,代理类为其子类)    
     目标对象没有实现接口  
     拦截器  
     事务管理    
     五大事务隔离级别  
     七大事务传播特性  
     事务管理器    
     核心接口是PlatformTransactionManager    
     org.springframework.jdbc.datasource.DataSourceTransactionManager:主要用于jdbc和mybatis数据源  
     org.springframework.orm.hibernate3.HibernateTransactionManager:主要用于Hibernate数据源  
     编程式事务    
     通过使用TransactionTemplate或者PlatformTransactionManager相关事务API来实现事务管理  
     声明式事务    
     XML配置标签  
     @Transactional注解  
     异常回滚    
     只会回滚RuntimeException异常  
     定时任务调度Spring Task    
     XML配置标签  
     @Scheduled注解配置  
     异步任务    
     XML配置标签  
     @Async注解配置  
     缓存支持Spring Cache  
     Spring 5 新特性    
     兼容 Java 9    
     最低要求 Java 8,因为使用了Java 8的一些新特性  
     响应式编程 WebFlux    
     即Spring-WebFlux模块,以 Reactor 库为基础,包含了对响应式 HTTP、服务器推送事件(Server-Sent Event)和 WebSocket 的客户端和服务器端的支持。  
     基于Java注解编程模型    
     使用方式与Spring MVC基本一样,只是使用的类型不是普通的对象,而是响应式编程中的Mono、Flux对象  
     Mono对象    
     表示单个对象,如User,用法与Optional类似  
     Flux对象    
     表示一系列的对象,类似于List  
     基于函数式编程模型    
     服务器端    
     HandlerFunction 函数式接口    
     Mono handle(ServerRequest request)方法用于处理客户端请求  
     RouterFunction 路由接口    
     Mono> route(ServerRequest request) 方法用于选择处理对应请求的HandlerFunction对象并返回  
     只需要使用RouterFunctions.route 方法创建 RouterFunction 类型的 bean,就会被自动注册来处理请求并调用相应的 HandlerFunction  
     客户端    
     使用 WebClient.create方法创建客户端发起HTTP请求调用REST API 和 SSE(服务端推送)服务  
     使用 WebSocketClient 类的API 访问WebSocket  
     测试    
     使用 WebTestClient 类进行测试  
     Spring Boot    
     用于快速构建及开发Spring应用,可以看成是Spring框架的简化版  
     ”约定优于配置“思想    
     使用约定的默认配置,减少配置文件编写  
     配置文件    
     properties文件    
     application.properties  
     yml文件    
     application.yml  
     基于注解配置    
     Spring原有的@Controller、@Service、@Component、@Bean、@Configuration等注解  
     properties配置文件读取    
     Spring原有的@Value    
     与@PropertySource配合使用读取指定配置属性值  
     缺点: 1、只支持单个属性值读取2、只支持简单数据类型,如String、Boolean及数值类型  
     Spring Boot新增的@ConfigurationProperties    
     可以指定配置属性前缀,自动绑定属性值  
     比@Value功能更强大 1、支持实体属性自动封装;2、支持复杂数据类型的解析,比如数组、列表List  
     starter简化Maven配置    
     预先定义好需要的依赖并打包,需要时直接引入即可  
     所有Spring Boot项目公共的父依赖    
     spring-boot-starter-parent模块  
     自动配置AutoConfigurer    
     为项目添加默认配置    
     application.properties/application.yml文件中定义的配置会覆盖默认配置  
     自带的spring-boot-autoconfigure模块  
     内置Servlet容器    
     Tomcat、Jetty、Undertow等  
     ORM框架    
     Hibernate    
     HQL    
     可以看成是面向对象的SQL,它将原生SQL中的表名和列名分别用全类名和属性名替换了  
     对象的三种状态    
     transient(瞬时状态),persistent(持久化状态)以及detached(离线状态)  
     主要组成    
     Session:提供用户对数据库操作的API  
     SessionFactory:创建Session对象的工厂  
     Query:负责执行数据库查询操作,支持SQL、HQL两种方式  
     缓存机制    
     一级缓存  
     二级缓存  
     Criteria(QBC)  
     多表映射  
     注解    
     JPA提供的注解    
     javax.persistence包下:@Id,@Column,@Entity,@Table,@OneToMany,@ManyToOne等  
     Hibernate增加的注解  
     数据库方言Dialect    
     它是Hibernate数据库可移植性强的关键所在,不同的数据库使用不同的方言类进行处理,通常需要我们自己指定。 比如:Oracle10gDialect(Oracle数据库方言)、MySQL5Dialect(MySQL数据库方言)等  
     在方言类中包含了对不同类型数据库差异的处理,比如分页、常用函数的语法  
     HibernateTemplate    
     Spring对Hibernate的集成和封装,使用它可以很方便的进行数据库操作  
     HibernateTemplate的作用是保证session能够正确的打开和关闭,避免手工管理Session带来的问题。  
     使用 HibernateTemplate 时必须进行事务管理,否则将会报错  
     Mybatis    
     主要组成    
     Configuration MyBatis配置信息    
     配置方式    
     XML文件  
     注解  
     SqlSession 提供用户对数据库操作的API,完成增删改查  
     Executor 由SqlSession调用执行数据库操作  
     StatementHandler 对SQL语句进行操作  
     ParameterHandler  将用户传递的参数转换成JDBC Statement 所需要的参数  
     ResultSetHandler 将JDBC返回的ResultSet结果集对象转换成List集合  
     TypeHandler 负责java数据类型和jdbc数据类型之间的映射和转换  
     动态SQL    
     通过标签的形式大大的减少了条件查询时拼接SQL的难度,提高了SQL的准确率  
     常用标签    
     if、where、foreach等  
     结果映射    
     resultMap  
     数据类型转换  
     插件机制    
     Interceptor接口  
     分页插件  
     缓存机制    
     一级缓存:Session级别的缓存,Executor对象会维护一个Cache缓存,默认开启  
     二级缓存:Application级别的缓存,可以看作是作用于整个应用的全局缓存。 一般通过自定义缓存Redis、Memcached等实现  
     MVC框架    
     Struts2    
     核心过滤器StrutsPrepareAndExecuteFilter    
     PrepareOperations    
     包括setEncodingAndLocale、createActionContext、findActionMapping等重要操作  
     ExecuteOperations    
     包括executeStaticResourceRequest、executeAction操作  
     ActionMapping    
     包含Action的基本信息,名称、命名空间、方法名、请求参数以及返回结果Result等信息  
     拦截器Interceptor    
     intercept(ActionInvocation invocation)方法用于在调用ActionInvocation.invoke方法前后执行其它操作  
     控制器Action    
     由ActionInvocation.invoke方法负责调用执行  
     值栈ValueStack  
     模型驱动ModelDriven    
     1、Action实现ModelDriven接口; 2、在Action中定义实体类属性,并通过getModel方法返回  
     OGNL(Object-Graph Navigation Language)    
     OgnlValueStack类  
     其中的数据分成了两部分: 1、root(栈结构,CompoundRoot,继承于ArrayList)2、context(map形式,OgnlContext)  
     OGNL表达式:#相当于调用ActionContext.getContext()方法、%用于、$引用OGNL表达式  
     ActionContext中的属性(和四大域对象类似): ①parameters请求参数、②request请求对象、③session对象、④application对象;⑤attr依次按照request->session->application范围查找属性,与pageContext.findAttribute()类似  
     struts2标签库    
     struts2标签统一使用s作为标签前缀,类似  
     分类    
     内置标签    
     常用的有:、、等  
     自定义标签    
     1、创建Component类,继承org.apache.struts2.components.Component类,并重写start()、end()方法 2、创建标签类,继承org.apache.struts2.views.jsp.ComponentTagSupport类,并重写getBean()方法和populateParams()方法3、在项目WEB-INF目录下创建tld文件(其中描述了标签的语法,如:标签有哪些属性,标签的属性是否支持表达式等内容)  
     国际化  
     文件上传  
     数据验证    
     Action中的input、validate方法  
     请求参数类型转换TypeConverter  
     SpringMVC    
     基本组成    
     DispatcherServlet    
     找到对应请求的HandlerMapping,将请求转发给对应的HandlerAdapter  
     处理器映射器HandlerMapping    
     保存请求的URL与Handler(可以是Controller或Servlet等)的对应关系  
     处理器适配器HandlerAdapter    
     调用对应的Handler进行处理,并返回ModelAndView对象给DispatcherServlet  
     控制器Controller  
     拦截器HandlerInterceptor    
     preHandle、postHandle、afterCompletion方法  
     HandlerExecutionChain    
     负责Handler执行前后的HandlerInterceptor的调用  
     模型视图ModelAndView、模型Model/ModelMap  
     视图解析器ViewResolver    
     将逻辑视图转换成物理视图  
     请求参数解析和封装    
     RequestMappingHandlerAdapter  
     HandlerMethodArgumentResolver接口    
     HandlerMethodArgumentResolverComposite类默认定义了26个不同的参数解析器  
     ServletModelAttributeMethodProcessor 两种情况: ①使用@ModelAttribute注解的类型;②自定义实体POJO:通过特定的DataBinder将请求参数绑定到为实体中的属性上;  
     其它类型的参数处理:如Map、ServletRequest、ServletResponse、Model等使用内置转换器自动转换  
     类型转换    
     Converter接口    
     自定义类型转换器:实现Converter接口,并重写convert方法  
     ConversionService接口  
     方法返回值处理    
     HandlerMethodReturnValueHandler接口  
     文件上传    
     配置 CommonsMultipartResolverr 文件上传解析器  
     MultipartFile对象作为方法参数接收  
     全局异常处理    
     实现HandlerExceptionResolver接口  
     使用@ControlerAdvice/@RestControllerAdvice注解  
     其它框架    
     日志框架    
     作用    
     用于Java应用日志记录,通常保存到文件中,方便调试跟踪系统运行情况及排查问题  
     分类    
     日志门面    
     Apache的 commons-logging    
     Spring等框架依赖其做日志记录  
     slf4j    
     slf4j-api-xxx.jar  
     jboss-logging    
     Hibernate依赖其做日志记录  
     桥接器(适配器)    
     slf4j-log4j:slf4j适配log4j  
     slf4j-logback:slf4j适配logback  
     slf4j-jdk14:slf4j适配JDK提供的日志框架(JUL)  
     具体实现    
     log4j    
     log4j2  
     logback  
     JUL(java.util.logging)  
     安全框架    
     Shiro    
     主要功能    
     权限控制    
     身份认证(登录)Authentication  
     权限验证(授权)Authorization  
     会话管理  
     数据加密    
     常用的加密算法  
     API    
     当前用户(不一定是人,比如爬虫程序)Subject  
     安全管理器SecurityManager,shiro的核心    
     SecurityUtils工具类  
     Realm,域,从中获取用户的角色、权限信息进行身份认证  
     Spring Security  
     定时任务框架    
     Quartz  
     Spring Task  
     工作流引擎    
     JBPM(Java Business Process Management)  
     Activiti  
     模板引擎    
     freemarker、velocity、thymeleaf、beetl(国产)  
     全文搜索框架    
     Apache Lucene    
     主要功能    
     创建及维护索引,提供全文检索服务。支持结果排序及关键字高亮  
     主要组成    
     索引保存目录Directory    
     FSDirectory:索引存储在磁盘  
     RAMDirectory:索引存储在内存  
     索引文档Document    
     Field:StringField只索引不分词,TextField既索引又分词  
     分词器Analyzer    
     对于索引内容进行分词  
     常用分词器    
     简单分词器SimpleAnalyzer  
     标准分词器StandardAnalyzer  
     中文分词器    
     SmartChineseAnalyser  
     IKAnalyzer  
     庖丁分词器PaodingAnalyzer  
     索引管理器IndexWriter    
     负责索引文档的创建、更新、删除  
     查询分析器QueryParser    
     构造搜索条件并分析  
     索引阅读器IndexReader  
     索引搜索器IndexSearcher    
     根据搜索条件返回匹配的结果  
     Compass    
     基于Lucene,ElasticSearch的前身  
     提供了Spring、Hibernate框架集成  
     ElasticSearch    
     基于Lucene,分布式的,适用于实时、大数据量的搜索场景  
     Apache Solr    
     基于Lucene,适用于常规搜索场景  
     利用Zookeeper进行分布式管理  
     Hibernate Search    
     集成了Hibernate、Lucene和ElasticSearch  
     网络编程框架    
     HTTP客户端    
     Apache HttpClient  
     OkHttp  
     网络IO框架    
     Netty  
     Mina  
     Hibernate-Validator 参数校验框架    
     Bean Validation规范的实现  
     项目构建工具    
     Maven    
     坐标    
     groupId、artifactId、version  
     仓库  
     依赖配置    
     引入依赖:dependencies、dependency节点  
     排除依赖:exclusions、exclusion节点  
     聚合与继承,分别是modules、parent节点  
     生命周期和命令    
     mvn clean、mvn test、mvn package、mvn install  
     Archetype    
     创建Maven项目的基本骨架  
     自定义Archetype  
     Maven镜像    
     阿里云公有镜像http://maven.aliyun.com/nexus/content/groups/public/  
     Maven私服    
     Nexus私服配置  
     Maven插件    
     Maven功能的扩展  
     自定义Maven插件    
     继承AbstractMojo类  
     Ant/Gradle  
     版本控制工具    
     SVN  
     Git  
     CI 持续集成工具    
     jenkins  
     常用工具    
     Google Guava    
     Optional类    
     避免空指针  
     MoreObjects工具类    
     作为java.util.Objects类的扩展  
     字符串操作,如split、join等操作    
     Spliter、Joiner类  
     函数式编程  
     Apache Commons    
     commons-beanutils包    
     用于处理JavaBean相关操作,最常见的就是属性复制。  
     如 BeanUtils.copyProperties()、ProperUtils.copyProperties()  
     commons-lang包    
     如:StringUtils  
     commons-io包    
     简化IO操作    
     如:IOUtils  
     commons-collections包    
     简化集合操作    
     如:CollectionUtils  
     commons-fileupload包    
     处理文件上传相关操作  
     Spring 中的工具类    
     StringUtils    
     字符串操作  
     WebUtils    
     处理Web相关操作  
     FileCopyUtils(文件复制)、ResourceUtils(读取文件)等  
     ObjectUtils  
     ReflectionUtils    
     简化反射操作  
     其它常用工具    
     lombok    
     通过注解简化Java代码编写,使代码看起来更简洁。可以自动生成类的getter、setter、toString、hashcode、equals、构造器等  
     常用注解    
     @Getter、@Setter    
     为属性自动生成getter、setter方法  
     @NoArgsConstructor    
     生成无参构造器  
     @AllArgsConstructor    
     生成包含所有属性的构造器  
     @Data    
     生成getter、setter、hashcode、equals、toString方法  
     其它功能注解    
     @Slf4j 注入log日志对象  
     @NonNull 非空检查  
     DDDD  
     Swagger    
     可以与Spring MVC集成为项目生成RESTful API文档,并且可以直接在页面测试  
    
 
 
 
 
  0 条评论
 下一页
 为你推荐
 查看更多
    
   
   
   
   
  
  
  
  
  
  
  
  
  
  
 