什么是JavaEE?
JavaEE(Java Enterprise Edition)即Java企业版,多用于企业级开发,包括web开发等等。也叫J2EE。
CSS样式选择器有哪些?
基本选择器
组合选择器
伪类选择器
微元素选择器
js中获取元素方式哪些?列出4种
getElementById 通过ID属性获取
getElementByName 通过name属性获取
getElementByTagName 通过标签名获取
getElementByClassName 通过类名获取
JavaScript中函数概念和分类哪些?
概念:
JavaScript函数是被设计为执行特定任务的代码块
JavaScript函数会在某代码调用它时被执行
分类:
普通函数
匿名函数
闭包函数
jQuery中的选择器有哪些?列举10种
ID选择器
元素名称选择器
类选择器
组合选择器
后代选择器
子代选择器
相邻选择器
同辈选择器
表单选择器
属性选择器
ajax概念以及常见的方式有哪些?
概念:
Ajax(Asynchronous Javascript And XML)即异步JavaScript和XML
源自描述从基于 Web 的应用到基于数据的应用
Ajax是一种用于创建更好更快以及交互性更强的Web应用程序的技术。
可以实现在不刷新页面的情况下请求数据的效果
常见的方式:
略
概述一下HTTP协议特点
HTTP(Hyper Text Transfer Protocol)即超文本传输协议
是一个简单的请求-响应协议
基于客户/服务器模式
面向连接
面向对象
无状态协议
概述一下Tomcat服务器的认识
Tomcat是Web应用服务器
Tomcat服务器是一个免费的开放源代码的Web应用服务器
属于轻量级应用服务器
在中小型系统和并发访问用户不是很多的场合下被普遍使用
是开发和调试JSP程序的首选
简单叙述一下Servelt与JSP之间的关系
Servlet是一个Java类,由服务器调用并运行在服务端
JSP即Java服务器页面(Java Server Pages),是一种基于文本的程序,其特点是HTML和Java代码同时存在。
简单叙述一下B/S vs C/S 架构
B/S(Browser/Server)即浏览器/服务器模式
WEB应用
可以实现跨平台
客户端零维护
个性化能力低
响应速度较慢
C/S(Client/Server)即客户端/服务器模式
桌面级应用
响应速度较快
安全性强
个性化能力高
响应速度较快
概述一下单例模式
单例模式(Singleton Pattern)是Java种最简单的设计模式之一
这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只创建了单个对象
这个模式的类提供了一种访问其唯一对象的方式,可以直接访问而无需实例化
注意:
单例模式的类只能有一个实例
单例模式的类必须自己创建自己的唯一实例
单例模式的类必须给所有其他对象提供这一实例
概述一下工厂模式
工厂模式(Factory Pattern)是Java种最常用的设计模式之一
会定义一个创建对象的接口
由其子类决定实例化哪一个工厂类
工厂模式使其创建过程延迟到子类执行
在不同的条件下创建不同的实例时解决了接口选择的问题
过滤器,监听器各自的作用,以及如何创建,生产中的应用场景?
过滤器:
作用:
过滤到达Servlet的请求
创建:
实现javax.servlet.Filter接口并实现方法
应用:
拦截不必要的访问
监听器:
作用:
监听某个对象的的状态变化,并作出反应
创建:
实现ServletContextListener接口并实现相应方法
应用:
在线人数统计
概述Spring框架
Spring框架是一个开放源代码的J2EE应用程序框架
轻量级的控制反转(IoC)和面向切面(AOP)的容器框架
面向接口编程
描述一下IoC容器?
IoC(Inversion of Control)即控制反转
依赖注入是一种IoC的表现形式
IOC容器就是具有依赖注入功能的容器
IOC容器负责实例化、定位、配置应用程序中的对象及建立这些对象间的依赖
依赖注入DI的方式?
构造方法注入
Setter注入
基于注解的注入
何为AOP,如何实现,底层实现原理?
AOP(Aspect Oriented Programming)即面向切面编程
可以通过预编译方式和运行其动态代理
实现在不修改源代码的情况下给程序动态统一添加某种特定功能的一种技术
实现:
定义切点
定义切面
实现业务方法
底层实现原理:
静态代理
动态代理
概述SpringMVC框架的执行流程
1.用户发送请求至前端控制器DispatcherServlet
2.DispatcherServlet收到请求调用处理器映射器HandlerMapping
3.处理器映射器根据请求URL找到具体的处理器,生成处理器执行链HandlerExecutionChain(包括处理器对象和处理器拦截器)一并返回给DispatcherServlet。
4.DispatcherServlet根据处理器Handler获取处理器适配器HandlerAdapter执行HandlerAdapter处理一系列操作,比如参数封装、数据格式转换和数据验证等操作。
5.执行处理器Handler(页面控制器Controller)
6.Handler执行完成返回ModelAndView
7.HandlerAdapter将Handler执行结果ModelAndView返回到DispatcherServlet
8.DispatcherServlet将ModelAndView传给ViewReslover视图解析器
9.ViewResolver解析后返回具体View
10.DispatcherServlet对View进行渲染视图(即将模型数据Model填充至视图种)
11.DispatcherServlet响应用户
SpringMVC框架的4大组件
中央控制器(Controller)
处理器映射器(HandlerMapping)
处理器适配器(HandlerAdapter)
视图解析器(ViewResolver)
列举SpringMVC参数绑定方式
参数绑定:
就是将URL中的请求参数,通过类型转换转换为String或其他类型
将转换后的值再赋值给Controller方法的形参中,Controller即可直接使用该形参
绑定方式:
基本数据类型:
通过注解@RequestParam标记一个形参为请求参数
注解声明在形参的前面
可以通过注解的属性设置相关的内容
设置参数默认值 defaultValue
设置参数的参数名(别名) name
包装数据类型:
客户端请求参数名与方法形参名保持一致
默认参数值为null
可以通过注解的属性设置相关的内容
设置参数默认值 defaultValue
设置参数的参数名(别名) name
如果数据是基本类型,建议使用包装类型
字符串类型:
客户端请求参数名与方法形参名保持一致
默认参数值为null
可以通过注解的属性设置相关的内容
设置参数默认值 defaultValue
设置参数的参数名(别名) name
数组类型:
客户端传参方式:arr=1&arr=2&arr=3
JavaBean类型:
客户端请求的参数名与JavaBean对象的属性字段名保持一致
集合类型:
对于集合参数的绑定,一般需要使用Javabean对象进行包装
SpringMVC拦截器作用,以及如何实现
作用:
拦截用户的请求并进行相应的处理。
例如用来进行权限认证,判断用户是否登录等。
实现:
实现org.springframework.web.servlet.HandlerInterceptor接口并实现相应方法
继承适配器org.springframework.web.servlet.handler.HandlerInterceptorAdapter
MyBatis框架的概述作用?
MyBatis是一个基于Java的持久层框架
它支持定制化SQL、存储过程以及高级映射
使用简单的 XML 或注解来配置和映射原生信息
将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录
MyBatis框架中的常见的动态标签有哪些?列举越多越善?
if
where
trim
set
choose
foreach
bind
MyBatis分页插件使用方式简单说一下步骤?
略
Spring-test组件作用,常见的注解有哪些?
作用:
测试驱动开发(Test Driven Development,TDD)
按照需求写一个自己预期结果的测试用例
主要注释:
@RunWith(SpringRunner.class)
使测试运行在spring环境中
@SpringBootTest
代表一个springboot测试
@AutoConfigureMockMvc
代表注入一个MockMvc实例,MockMvc模拟MVC对象
@WebAppConfiguration
用来声明ApplicationContext将是一个WebApplicationContext
@Autowired
向测试用例中注入实例
@Test
是测试的方法
@Before
在测试开始前进行的初始化工作
@After
在测试方法之后执行的操作方法
Spring-jdbc组件作用?
Spring 框架除了提供 IOC 与 AOP 核心功能外,同样提供了基于JDBC的数据访问功能,使得访问持久层数据更加方便。
Spring-task组件作用?
实现定时执行任务
crm项目中使用了layUI组件,常见的头部用工具栏如何绑定,行内工具栏如何绑定,简单写一下
头部工具栏事件绑定:
table.on('tool(test)', function(obj){});
行内工具栏事件绑定:
table.on('row(test)', function(obj){});
基于角色的访问控制RBAC,谈谈你的理解?以及优势?
在RBAC(Role-Based Access Control)中,权限与角色相关联,用户通过成为适当的角色的成员而得到这些角色的权限。
因为权限被赋予给角色,用户成为角色得到相应的权限,这样管理都是层级相互依赖的,设计清晰,所以RBAC简化了权限的管理。