J2EE
1、spring框架、ioc、aop、动态代理、切面(连接点、切入点、织入)的概念
spring框架:Spring是一个轻量级的Java 开发开源框架 * 可以做到简单,可测试,松耦合的一个框架 * 是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器框架
IOC(控制反转) 应用本身不负责依赖对象的创建及依赖关系的维护,而是由外部容器(Spring)负责。
DI(依赖注入) 在运行期间,由外部容器将依赖对象注入给组件。
Aop:面向切面编程,通俗讲就是将重复性很高的代码,封装到一起。提高代码的可维护性。
动态代理:是指代理类不创建,而由第三方工具类在缓存中创建,并添加附加操作。
切面:aspect(切面):point cut和advice结合起来就是aspect,它类似于OOP中定义的一个类,但它代表的更多是对象间横向的关系。
Joinpoint(连接点)
Advice在应用程序中被执行的时机称为Joinpoint(连接点),这个时机可能是某个方法被执行之前或之后(或两者都有).
Pointcut(切入点)
一组连接点的集合,用于指定哪些Aspect在哪些Joinpoint中织入到应用程序之上.
(连接点和切入点概念是AOP概念,Spring应用概念进行配置,包括一个切入点表达式
一个包含名字和任意参数的方法签名)
连接点:调用切面的方法就是连接点
切入点:定义多个执行切面的连接点的规则就是切入点定义。
Weave(织入) Advice被应用至目标对象之上的过程称这为织入(Weave)
2、applicationContext它的实现类和作用,来自于谁
实现类:ClassPathXmlApplicationContext
作用:负责读取bean配置文档,管理bean的加载,实例化,维护bean之间的依赖关系,负责bean的声明周期。
来源:Spring框架基础包spring-context-3.2.0. RELEASE.jar
3、事务管理有哪些方式,编程式是什么,声明式是什么
声明式事务管理:在方法执行前后进行拦截,然后在目标方法开始之前创建并加入事务,执行完目标方法后根据执行情况提交或回滚事务。
基于AOP事务管理本身是一项共有的系统级服务功能,完全可以将事务管理抽象成一个事务切面,程序员不再关心事务管理的问题,把主要精力放在核心业务逻辑代码的编写上,然后在需要进行事务管理的方法上切入事务切面,使之具有事务管理的功能,达到事务管理的目的。
编程式事物管理:编程式事务管理方法允许你在源代码编程的方式下管理事务。虽然带来了极大地灵活性,但是它很难维护。
程序员在编写程序代码实现事务的管理,具体包括定义事务的开始、在程序异常时进行事务的回滚及程序正常执行后的事务提交。
4、常规测试方法,获取bean的方法
5、Spring核心配置文件的作用
1、bean的注入。2、扫描注解,使注解生效。3、管理bean
6、配置文件中的常用标签
<mvc:annotation-driven />
<mvc:default-servlet-handler/>
<context:component-scan base-package="com.wdk.web" />
7、Spring的常用注解
@Controller:用于标识是处理器类;
@RequestMapping:请求到处理器功能方法的映射规则;
@RequestParam:请求参数到处理器功能处理方法的方法参数上的绑定;
@ModelAttribute:请求参数到命令对象的绑定
@SessionAttributes:用于声明session级别存储的属性,放置在处理器类上,通常列出模型属性(如@ModelAttribute)对应的名称,则这些属性会透明的保存到session中;
@InitBinder:自定义数据绑定注册支持,用于将请求参数转换到命令对象属性的对应类型;
@CookieValue:cookie数据到处理器功能处理方法的方法参数上的绑定;
@RequestHeader:请求头(header)数据到处理器功能处理方法的方法参数上的绑定;
@RequestBody:请求的body体的绑定(通过HttpMessageConverter进行类型转换);
@ResponseBody:处理器功能处理方法的返回值作为响应体(通过HttpMessageConverter进行类型转换);
@ResponseStatus:定义处理器功能处理方法/异常处理器返回的状态码和原因;
@ExceptionHandler:注解式声明异常处理器;
@PathVariable:请求URI中的模板变量部分到处理器功能处理方法的方法参数上的绑定,从而支持RESTful架构风格的URI;
8、Mybatis常用接口类,整合插件包中的常用类
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
9、spring容器的bean作用域
单例模式:singleton 多例模式:prototype
10、controller控制方法的常用返回类型有哪些
Map、List、String、json、xml
11、spring类型转换扩展接口是什么
Converter 接口
12、spring中用过的设计模式有哪些
单例模式、工厂模式、适配器、代理、模板方法、装饰器
13、springmvc的核心功能类是什么
DispatcherServlet是前端控制器设计模式的实现,提供Spring Web MVC的集中访问点,而且负责职责的分派,而且与Spring IoC容器无缝集成,从而可以获得Spring的所有好处。
14、代理的作用是什么,把我们的关注点是什么
为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。
15、Restful风格中url路径动态参数的注解,ajax请求使用的注解
1、@PathVariable 2、@RequestMapping
16、Controller如果响应用户信息,用户信息的参数类型是什么
String类型 ModelView
17、视图解析器、数据源(连接池)、拦截器是什么
视图解析器:将逻辑视图解析为一个具体的视图对象。视图解析器ViewResolver:是把一个逻辑上的视图名称解析为一个真正的视图
数据源(连接池):一个容器对象封装连接对象,用的时候直接获取,不需要重新创建
拦截器:拦截用户的请求并进行相应的处理。比如通过它来进行权限验证,或者是来判断用户是否登陆等。
18、Springmvc的流程
jsp-->web.xml-->application.xml-->controller.java
Jsp (a超链接发请求)
--->web.xml(DispatcherServlet,名为springmvc)
--->springmvc-servlet(WEB-INF下的)
--->beans(name="超链接提交的路径,注意/开头")
--->Controller接口的实现类--->重写接口方法,并返回ModelAndView(根路径下的页面名称success.jsp)
jsp----web.xml(dispatcherServlet)---beans.xml----Controller---Service---DAO
IOC与传统编程相比的优点
19、编程题:做一个controller,做一个切面
@Controller // 或@RequestMapping //①将一个POJO类声明为处理器
public class HelloWorldController {
@RequestMapping(value="/hello")//②请求URL到处理器功能处理方法的映射
public ModelAndView helloWorld() {
//1、收集参数//2、绑定参数到命令对象
//3、调用业务对象//4、选择下一个页面
ModelAndView mv = new ModelAndView();
//添加模型数据可以是任意的POJO对象
mv.addObject("message", "Hello World!");
//设置逻辑视图名,视图解析器会根据该名字解析到具体的视图页面
mv.setViewName("hello");
return mv; //3 模型数据和逻辑视图名
}
}