1. springmvc 的 运行原理
2.springmvc的 dispatchServlet 是什么东西 ?
3.@RequestMapping 是什么东西
4.@RequestMapping 注解使用技巧(完整详解)
5.@Slf4j
6.lombok 是什么 的注解
7.layui 独立维护的三大组件 都是什么
8.layui layer , laydate , form , laydate 怎么用的 都是什么?
9.ajax 如何 编写
1.springmvc 的 运行原理
客户端发起请求(http)通过web.xml找到 DispatchServlet(前端控制器);
由DispatchServlet控制器通过配置文件(servletName-servlet.xml)寻找到一个或多个HandlerMapping(映射处理器),找到用于处理请求的controller(后端控制器);
DispatchServlet将请求提交到controller;
Controller处理业务逻辑后,
controller返回数据 ModelAndVIew给DispatchServlet;
DispatchServlet寻找到一个或多个ViewResolver(视图解析器),找到ModelAndVIew指定的视图;
DispatchServle负责将结果返给View(客户端JSP页面),封装Http;
view响应页面的HTTP请求,返回响应数据,浏览器绘制页面
2.springmvc的 dispatchServlet 是什么东西 ?
DispatcherServlet是前端控制器设计模式的实现,提供Spring Web MVC的集中访问点,而且负责职责的分派,而且与Spring IoC容器无缝集成,从而可以获得Spring的所有好处
DispatcherServlet其实就是个Servlet(它继承自HttpServlet基类),同样也需要在你Web应用的web.xml配置文件下声明。你需要在web.xml文件中把你希望DispatcherServlet处理的请求映射到对应的URL上去
3.@RequestMapping 是什么东西
RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上,将接收HTTP方法特有的快捷方式
4.@RequestMapping 注解使用技巧(完整详解)
这个注解会将 HTTP 请求映射到 MVC 和 REST 控制器的处理方法上。
(1) @RequestMapping 注解可以在控制器类的级别和/或其中的方法的级别上使用
(2)@RequestMapping 来处理多个 URI
(3)@RequestParam 注解配合 @RequestMapping 一起使用,可以将请求的参数同处理方法的参数绑定在一起
(4)@RequestMapping 处理 HTTP 的各种方法
(5)@RequestMapping 来处理生产和消费对象
(6) @RequestMapping 来处理消息头
(7) @RequestMapping 来处理请求参数
(8) @RequestMapping 处理动态 URI:@RequestMapping 注解可以同 @PathVaraible 注解一起使用,用来处理动态的 URI,URI 的值可以作为控制器中处理方法的参数
(9)@RequestMapping 默认的处理方法:在控制器类中,你可以有一个默认的处理方法,它可以在有一个向默认 URI 发起的请求时被执行
5.@Slf4j:只需要在类前面添加注解@Slf4j,即可使用log日志的功能了
使用十分方便,只是把以前,和以前的logger一样用,有info,debug,error等等
划重点:要是用这个注解,最主要是依赖的引用!
6.lombok 是什么 的注解
lombok是一个可以帮助我们简化java代码编写的工具类,尤其是简化javabean的编写,即通过采用注解的方式,消除代码中的构造方法,getter/setter等代码,使我们写的类更加简洁
常见的注解:
@NonNull:这个注解可以用在成员方法或者构造方法的参数前面,会自动产生一个关于此参数的非空检查,如果参数为空,则抛出一个空指针异常
@Cleanup:这个注解用在变量前面,可以保证此变量代表的资源会被自动关闭,默认是调用资源的close()方法,如果该资源有其它关闭方法,可使用@Cleanup(“methodName”)来指定要调用的方法
@Getter/@Setter:这一对注解从名字上就很好理解,用在成员变量前面,相当于为成员变量生成对应的get和set方法,同时还可以为生成的方法指定访问修饰符,当然,默认为public
@ToString :就是生成toString,equals和hashcode方法,同时后者还会生成一个canEqual方法,用于判断某个对象是否是当前类的实例,生成方法时只会使用类中的非静态和非transient成员变量
@EqualsAndHashCode
@NoArgsConstructor/@RequiredArgsConstructor /@AllArgsConstructor:第一个和第三个都很好理解,就是为该类产生无参的构造方法和包含所有参数的构造方法,第二个注解则使用类中所有带有@NonNull注解的或者带有final修饰的成员变量生成对应的构造方法,当然,和前面几个注解一样,成员变量都是非静态的,另外,如果类中含有final修饰的成员变量,是无法使用@NoArgsConstructor注解的。。三个注解都可以指定生成的构造方法的访问权限,同时,第二个注解还可以用@RequiredArgsConstructor(staticName=”methodName”)的形式生成一个指定名称的静态方法,返回一个调用相应的构造方法产生的对象
@Data:@Data注解综合了3,4,5和6里面的@RequiredArgsConstructor注解,其中@RequiredArgsConstructor使用了类中的带有@NonNull注解的或者final修饰的成员变量,它可以使用@Data(staticConstructor=”methodName”)来生成一个静态方法,返回一个调用相应的构造方法产生的对象
@Value:@Value注解和@Data类似,区别在于它会把所有成员变量默认定义为private final修饰,并且不会生成set方法。
@SneakyThrows:这个注解用在方法上,可以将方法中的代码用try-catch语句包裹起来,捕获异常并在catch中用Lombok.sneakyThrow(e)把异常抛出,可以使用@SneakyThrows(Exception.class)的形式指定抛出哪种异常
@Synchronized:这个注解用在类方法或者实例方法上,效果和synchronized关键字相同,区别在于锁对象不同,对于类方法和实例方法,synchronized关键字的锁对象分别是类的class对象和this对象,而@Synchronized得锁对象分别是私有静态final对象LOCK和私有final对象LOCK和私有final对象lock,当然,也可以自己指定锁对象
@Log:这个注解用在类上,可以省去从日志工厂生成日志对象这一步,直接进行日志记录,具体注解根据日志工具的不同而不同,同时,可以在注解中使用topic来指定生成log对象时的类名
7.layui 独立维护的三大组件 都是什么
layer
layDate
layIM
8.layui layer , laydate , form , laydate 怎么用的 都是什么?
layer
layer
可以独立使用:通过script标签引入layer.js后,直接用即可
也可以通过Layui模块化使用:通过layui.use('layer', callback)加载模块
laydate
和 layer 一样,你可以在 layui 中使用 layDate:通过layui.use('laydate', callback)加载模块后,再调用方法
也可直接使用 layDate 独立版:直接调用方法使用
form :如果不加载form模块,select、checkbox、radio等将无法显示,并且无法使用form相关功能
9.ajax 如何 编写 :
$.ajax({
url:'/api/person/reg3',
type:'post',
data:data.field,
dataType:'json'
success: function (res) {
console.log(res)
}
})