本期分享一下JavaEE期末考试重点
侧重题型:单选 | 判断 | 填空 | 程序填空 | 程序设计
第一章
- 软件框架是一种通用的,可复用的软件环境,它提供特定的功能,促进软件应用、产品和解决方案的开发工作。
- Spring是一个开源框架,分层架构。
- SpringMC是一个基于MVC设计模式的轻量级的web开发框架。
- MyBatis是一个持久层框架。
- SpringBoot框架是用于快速、敏捷开发地新一代基于Spring的框架。
- Maven是提供项目构建和高级项目管理的工具。Maven项目对象模型(缩写:POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。
- 项目构建:在软件维护期间,编码->编译compile->测试->打包package->部署(打包install)。
- 构建工具:ant、maven、gradle。
- Maven包括三个基本的生命周期(即clean、default和site)。
- Maven仓库(Repository)是保存Maven组件的位置,可被Maven项目共享。Maven仓库中,每个组件都是以文件形式存储,并且都有唯一的坐标。根据组件坐标的唯一性,Maven为每个组件在仓库中定义一个唯一的存储路径。分类:本地仓库、远程仓库和中央仓库。
- Maven项目依赖管理是在pom.xml文件中进行的,<dependencies/>元素包含了项目定义的所有依赖。
第二章
1、编写数据库连接信息的属性文件:
mysql.driver=com.mysql.jdbc.Driver
mysql.url=jdbc:mysql://localhost:3306/textbook
mysql.username=root
mysql.password=root
2、//src/main/resources/mybatis-config.xml文件:
<configuration> <properties resource="db.properties"/> <environments default="development"> <environment id="development"> <transactionManager type="jdbc" /> <dataSource type="POOLED"> <property name="driver" value="${mysql.driver}" /> <property name="url" value="${mysql.url}" /> <property name="username" value="${mysql.username}" /> <property name="password" value="${mysql.password}" /> </dataSource></environment></environments> </configuration> |
引入属性文件<properties resourse>
3、在src/main/java目录下创建com.my.mybatis.po包,创建Publisher类,该类用于封装publisher表的字段。
//Publisher.java文件
package com.my.mybatis.po;
public class Publisher {
private int pub_id;
private String pub_name;
private String contacter;
private String mobile;
// 省略了getter、setter和toString方法
}
4、程序填空
select重点复习,红色部分要会 id唯一标识、
参数类型parameterType,resultTypes实体类的类名,用#{}参数名
5、会话工厂SqlSessionFactory,构造会话工厂需要读取MyBatis核心配置文件和映射文件。
需要使用SqlSessionFactoryBuilder。
6、MyBatis的核心配置文件中的主要元素
7、<settings/>元素。用于设置MyBatis运行时的全局行为特征。
常见配置参数:
<settings>
<!-- 开启缓存 -- >
<setting name="cacheEnabled" value="true" />
<!-- 开启驼峰命名 -- >
<setting name="mapUnderscoreToCamelCase" value="true"/>
<!-- 开启延迟加载,如果开启,所有关联对象都会延迟加载 -- >
<setting name="lazyLoadingEnabled" value="true" />
</settings>
8、<properties/>元素。用于加载外部的属性文件,或修改加载的属性值。
在mybatis-config.xml中引入db.properties文件。
<properties resource="db.properties" />
在mybatis-config.xml中使用属性文件中的属性。
<dataSource type="POOLED">
<property name="driver" value="${mysql.driver}" />
<property name="url" value="${mysql.url}" />
<property name="username" value="${mysql.username}" />
<property name="password" value="${mysql.password}" />
</dataSource>
9、<typeAliases/>元素设置实体类的别名。下面为示例
- 10、<environment>元素,配置运行环境。
有两个子元素:<transactionManager>元素和<daraSource>元素。
<transactionManager>元素用于配置运行环境的事务管理器的类型。
<transcationManager>元素配置事务管理器:
JDBC:直接采纳JDBC的提交和回滚设置,因此事务管理方式取决于从数据源获得的连接类型。
MANAGED:配置自身不提供事务管理,由容器负责事务生命周期的管理。默认情况下,它会关闭连接。
<daraSource>元素用于配置运行环境的数据源信息。
<dataSource/>元素的type属性指定数据源类型:
UNPOOLED、POOLED和JNDI三种数据源类型。
UNPOOLED类型:数据源为无连接池类型。该数据源不提供数据库连接池,每次请求时都需要打开和关闭连接。
POOLED类型:表示数据源为连接池类型。它使得并发Web应用可以快速的响应请求,是当前比较流行的。
JNDI数据源:支持使用外置连接池,可以在EJB或应用服务器等容器中使用。在生产环境中,优先使用这种方式。
11、MyBatis接口方式访问数据库
创建PublisherMapper.xml映射文件的映射器接口
PublisherMapper :
//src/main/java/com/my/mybatis/mapper/PublisherMapper.java
package com.my.mybatis.mapper;
import com.my.mybatis.po.Publisher;
public interface PublisherMapper {
public Publisher findPublisherByPubld(int pubId);
}
12、小结
1)配置文件是创建会话工厂的核心,配置文件中需要配置数据源和加载映射文件。
2)映射文件通常与某一数据表的查询等操作相关。
3)映射器接口与映射文件对应,并且要满足一定的规则。
4)使用SqlSession对象的getMapper()方法,获得射器接口的代理类,从而实现对数据表的查询。
5)项目中,配置文件中的内容相对稳定,而映射文件与数据库结构以及业务需求有关,因此,变动频率较高。
第三章
1、映射文件的根元素是<mapper/>,namespace属性对映射文件是唯一的。<mapper/>的每个子元素对应着一个SQL语句或相关配置。子元素可以重复且顺序无关,必须有唯一id。
2、<select>元素用来映射查询语句,从数据库中查询数据并返回。
3、<resultMap>元素表示结果映射集。
<resultMap>元素是定义映射规则、更新级联以及定义类型转化器等。解决查询结果集与返回类型对象之间的复杂映射问题。
4、<resultMap>元素与<select>元素配合使用。一个<resultMap>元素可以关联多个<select>元素。<resultMap>元素主要适用以下情形:
(1)结果集中字段名与P0J0对象的对应属性名不一致;
(2)POJ0对象中含有包装P0J0类型的属性;
(3)关联查询中,需要针对嵌套查询或嵌套结果做专门映射。
5、<insert>元素用于映射插入语句,在执行完<insert>元素中定义的SQL语句后,会返回插入记录的数量。
6、<sql>元素的作用定义可重用的SQL代码片段。
7、动态SQL标签作用
<if>判断元素,单分支判别
<choose>多分支判别
<when>,<choose>的子元素,多分支中某一分支的入口判别。
<otherwise>,<choose>的子元素,表示多分支中的其余情况。
<trim>用于处理SQL组装过程中的一些前、后缀问题。
<set>不能单独使用,和update配合使用。表示update语句中的set子句。
<foreach>遍历集合的元素。生成如in子句中的集合。
<bind>用于创建一个变量,并绑定到上下文中。
8、关联查询:一对一<association>,一对多<collection>,多对多<collection>
一对一<association>嵌套结果、嵌套查询@One
一对多<collection>嵌套结果、嵌套查询@Many
多对多<collection>嵌套结果、嵌套查询
9、常见注解:@Select,@Delete,@Update ,@Param,@Insert,@Results。
@Select映射查询语句
@Insert映射插入语句
@Results对应<resultMap>,包括一个或多个@Result注解。使用@One和@Many注解映射文件中的<association>和<collection>元素,
10、小结
1)映射文件是MyBatis提供给开发人员编写SQL语句的场所,是MyBatis自动生成映射器接口代理类的重要依据。
2)注解方式是映射文件的替代方法,注解使得映射器接口方法与SQL语句的联系更加紧密,有效缓解了编辑XML文件时出现的易错、可读性差等不足。复杂的SQL语句也会产生复杂的注解。
注解方式更适合简单的SQL查询,对于复杂的SQL查询,使用映射文件会更方便。
第四章
1、Spring是一个分层的轻量级开源框架。核心理念是IoC(控制反转)和AOP(面向切面编程)。
2、在Spring容器的API中,最常用的是BeanFactory和ApplicationContext两个接口。
3、BeanFactory接口是Spring容器最基本的接口,提供创建和管理Bean的方法。
4、Bean的装配方法:基于xml配置文件、基于注解、基于配置类。
1)基于XML的装配:
Spring的XML配置文件根元素是<beans>。
<beans>元素可包含多个<bean>子元素,每个<bean>子元素可以定义一个Bean,并将Bean注册到Spring容器中。
2)基于注解的装配
通过注解也可以实现Bean的装配。
常用注解:
- 5、依赖注入(缩写DI)是由IoC容器在运行期间动态地将某种依赖资源注入对象之中。
实现方式:基于XML配置文件注入和基于注解注入。
基于XML配置文件注入分为:属性setter方法注入,构造方法注入。
1)基于XML配置文件的属性setter方法注入
它是在被注入的类中声明一个setter方法,通过setter方法的参数注入对应的值。
2)基于XML配置文件的构造方法注入
Spring容器调用构造方法注入被依赖的实例,构造方法可以是有参的或者是无参的。
3)基于注解的依赖注入
使用基于注解的方式装配Bean,采用@Autowired和@Resource注解均可以实现注解注入。
6、Bean的作用域决定了Bean实例在项目中的可见性。
Singleton丛生到死,每次创建pro
singleton单例作用域,是Spring容器默认的作用域,当Bean的作用域为singleton时,Spring容器只为Bean创建一个实例,该实例可以重复使用。
prototype原型作用域,prototype作用域的Bean,每次对Bean请求时都会创建一
个新的Bean实例,Spring容器只负责创建Bean实例而不再管理其生命周期。
第五章
没有代码考概念,客观题
1、AOP是面向切面编程,指定的方法叫切入点
2、Spring AOP基于动态代理机制和字节码生成技术实现。
3、AOP支持最晚神的产品AspectJ
4、事务是以可控的方式对数据资源进行的一组操作序列。
5、事务具有的特性:原子性、一致性、隔离性和持久性。
6、Spring事务管理基于AOP。
Spring事务框架将项目中事务管理部分的代码看作横切关注点,从数据访问代码中分离和抽象出来,再以AOP方式织入到相应的方法中。
7、@Transactional基于注解的声明事务。
基于注解的方式:Spring提供了@Transactional注解实现事务管理。它和XML文件中<tx:advice>元素有相同的功能。
第六章
1、在Java EE开发中,系统的三层架构包括:表现层Spring MVC、业务层Spring、持久层MyBatis。
2、配置前端控制器(需要会配置)DispatcherServlet。
DispatcherServlet是Spring MVC的核心类,也是SpringMVC的流程控制中心,也称为Spring MVC的前端控制器,它可以拦截客户端的请求。
web.xml中,DispatcherServlet的配置分为两个方面:一是配置Spring MVC的前端控制器;二是配置映射的URL路径。
3、前端控制器:<load-on-startup>元素取值:
(1)正整数或0:项目启动时加载并初始化这个Servlet。值越小,Servlet的优先级越高,越先被加载;
(2)负数或没有:Servlet会在被请求时加载和初始化;
(3)1:DispatcherServlet在项目启动时加载并初始化。
4、后端控制器:标注在类上
浏览器中访问地址,由项目访问路径+处理器类的映射路径+处理器的映射路径共同组成。
例:@Controller
@RequestMapping(value="/springMVC")
public class FirstController {
@RequestMapping(value="/firstController")
public void sayHello(){.........}}
5、Spring MVC组合注解:
@GetMapping:匹配GET方式的请求;
@PostMapping:匹配POST方式的请求;
@PutMapping:匹配PUT方式的请求;
@DeleteMapping:匹配DELETE方式的请求;
@PatchMapping:匹配PATCH方式的请求;
6、区别请求转发和重定向
请求转发到视图、重定向(重新发起一个新的WEB请求)
请求转发
1)请求转发到视图
若是逻辑视图,需要经过视图解析器解析,需返回字符串。若是转发物理视图,返回的字符串需要以“forward:”开头,如“forward:/user/register.jsp”。
2)转发请求到处理器
将Web请求转发到其他处理时,需要在返回的字符串前加上“forward:”。
7、重定向
重定向是发起一个新的Web请求。
重定向的视图不会被视图解析器解析,必须是物理视图;重定向后,原请求域的数据在新请求中不可见;重定向的目标视图不能位于Web容器的保护目录(即WEB-INF)中。
1)重定向到视图
处理器返回的字符串需以“redirect:”开头。“/”表示从应用的根路径开始查找视图文件。若省略,则从当前视图所在路径开始查找。
2)重定向到处理器
若是到当前控制器中的处理器,需要考虑相对路径。若是到其他控制器的处理器,需要提供处理器完整的映射路径。
8、总结
第七章
1、数据绑定是将请求中的数据传递给处理器方法形参的过程。数据绑定需要从ServletRequest请求对象中提取数据。
2、默认类型的数据绑定
Spring MVC常见的默认类型:
HttpServletRequest:通过request对象获取请求信息。
HttpServletResponse:通过response对象处理响应信息。
HttpSession:通过session对象得到其中存放的对象。
3、简单数据类型的绑定:指Java中基本类型(如int、double、String等)的数据绑定。
在Spring MVC中进行简单类型的数据绑定,只需客户端请求参数的名称和处理器的形参名称一致即可,请求参数会自动映射并匹配到处理器的形参完成数据绑定。
4、@RequestParam注解完成请求参数名称和处理器的形参名称不一致时的数据绑定。
5、POJO类型的数据绑定是将所有关联的请求参数封装在一个POJO类对象中,然后在方法中直接使用该POJO类对象作为形参来完成数据绑定。
6、复杂数据绑定:集合和列表绑定。
Spring MVC不支持集合类型(如List、Set等)直接作为处理器参数的数据绑定。因此,应用中需要将集合类型作为POJO的属性,以间接方式实现数据绑定。
第八章
1、Spring MVC中的拦截器(Interceptor)主要用于拦截Controller方法请求
2、拦截器需要定义拦截器类和配置。
第一种:通过实现HandlerInterceptor接口,或继承HandlerInterceptor接口的实现类(如
HandlerInterceptorAdapter)来定义。
第二种:通过实现WebRequestInterceptor接口,或继承WebRequestInterceptor接口的实
现类来定义。
3、拦截器preHandle、postHandle、afterCompletion
- 4、拦截器配置:interceptors,子标签顺序是确定的
- 5、单个拦截器和多个拦截器的逻辑关系
7、简单异常处理器概念:Spring MVC提供了SimpleMappingExceptionResolver实现了HandlerExceptionResolver接口。当发生异常的时候,实现类根据发生的异常类型跳转到指定的页面处理异常信息。它可以对Spring MVC中所有异常进行统一处理。
8、自定义异常处理器:自定义异常处理器要实现HandlerExceptionResolver接口,重写异常处理方法resolveException()。
例:创建和使用自定异常处理器。(注释简单异常处理器配置)
9、基于注解的异常处理:注解@ControllerAdvice,结合@ExceptionHandler注解,可以捕获Controller中抛出的指定类型的异常。
10、文件上传
1)文件上传功能的表单:
(1)form表单的method属性设置为post;
(2)form表单的enctype属性值为multipart/form-data;
(3)提供<input type="file" name="filename"/>的文件上传输入框。若需要多文件上传,input元素的multiple属性设为“multiple”。例:
2)spring-mvc.xml文件配置
Spring MVC通过MultipartResolver实现文件上传功能。MultipartResolver是一个接口对象,需要通过它的实现类CommonsMultipartResolver完成文件上传。例:
3)引入依赖
项目中导入Apache Commons FileUpload组件的依赖,即commons-fileupload依赖和commons-io依赖。
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.4</version>
</dependency>
4)使用MultipartFile类型绑定接收上传文件
11、读懂代码
12、文件下载是将文件服务器中的文件下载到本机上。
13、使用ResponseEntity类型对象完成文件下载,使用它可以很方便的定义返回的HttpHeaders对象和HttpStatus对象,可完成下载文件时所需的配置信息。
14、框架整合
Java EE项目涉及表现层、业务逻辑层及数据持久层等模块的实现。
MyBatis仅仅是数据持久层的实现;Spring致力于业务逻辑层的功能;Spring MVC则是将表现层、业务逻辑层及数据持久层联系在一起的纽带。
Spring支持xml文件与配置类两种配置方式,都可以获得注解的支持。