一种是在web.xml文件中注册
一种是在servlet类前使用注解注册(@webservlet)
servlet的首先被访问的时候,会实例化一个servlet对象,然后立刻调用init方法对其进行初始化,之后此servlet对象就一直驻留在服务器中对客户端传来的请求进行响应,直到服务器关闭时,通过jvm垃圾回收器被回收卸载
servlet会话管理的两种基本实现技术分别是cookie和session,cookie将数据保存在客户端浏览器中(若设置有效期则会保存在硬盘上),保存的数据有限制。而session将数据保存在服务器中,可以实现保存跨一个客户多个请求的会话状态
load-on-startup标签可以设置servelt的加载优先级和是否在启动容器中时加载,如果值为正整数,则在启动容器时加载,并且值越小的优先级越高,如果为负数,那就是用到时再加载。
他们是web交互最基本的方式,request对象代表了用户的一次请求,可以用来获取客户端的请求参数。
response对象是对用户请求的响应,可以设置对用户返回的信息,比如设置状态码、响应头信息、设置响应正文、重定向
重定向是指客户端发来一个页面请求,服务端进行处理后返回一个响应,这个响应是让他去请求另一个页面。也就是说重定向客户端有两次请求。
转发就是客户端请求一个页面,而这个页面又会去请求另一个页面,并且最终返回给客户端的是另一个页面。也就是说转发客户端只有一次请求,并且转发不能访问工程外部资源。
servlet是服务器端和客户端之间的中间层组件,用于拦截请求和响应,并将经过过滤的数据传给下一个资源。
M层是业务层,表示业务数据和业务逻辑
v层是视图层,是用户进行交互的一层
c层是控制层,他根据用户的输入来更新m层的业务数据,并将其在v层显示给用户
el表达式只可以从作用域中取值,并且是从四个作用域(页面域、请求域、会话域、上下文域)之中,从小到大的去获取
c:forEach
这个对象是预编译的mysql语句的对象,可以使用它来多次执行sql,效率更高,并且还可以防止sql注入攻击
构造方法注入;
setter方法注入;
接口注入
使用类的构造函数创建
使用静态工厂创建
使用动态工厂创建
bean的作用域指的是这个bean对象相对于其他bean对象的请求可见范围。
第一种是基于xml的装配方式,他需要bean有一个无参构造函数,并且需要设置一个set方法
第二种是在java中通过注解的形式来装配
第三种是自动装配
ioc是控制反转的意思,是一种设计思想,就是将自己本身对象中的内置对象的控制权反转,使得自己本身的对象并不直接控制内置对象,而是交给第三方去控制内置对象的创建
dl是依赖注入,他是ioc的一种具体实现,也就是通过注入的方式创建内置对象。
aop是面向切面编程,是在不修改源代码的基础上,通过预编译方式和动态代理实现给程序动态统一增加功能。
这个类就是用于和数据库进行交互,它提供了大量更新和查询数据库的方法
MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架
首先读取mybatis配置文件,获取一个字节流对象
其次创建一个sesionFactory工厂,然后用它再创建一个sqlsession对象,这个对象中包含了所有操作sql数据库的方法,之后使用它去执行具体操作。
SpringMVC是web层用于替代servlet的一个框架
当发起请求时被前置的控制器拦截到请求,根据请求参数生成代理请求,找到请求对应的实际控制器,控制器处理请求,创建数据模型,访问数据库,将模型响应给中心控制器,控制器使用模型与视图渲染视图结果,将结果返回给中心控制器,再将结果返回给请求者。
他可以将类变成控制器类,使得这个类中的每个方法都可以访问调用@Service标识的类
是一个用来处理http请求地址和控制器类映射的注解,表示类中的所有响应请求的方法都是以该地址作为父路径
根据返回的逻辑视图找到对应的物理视图,并且将其封装成一个View对象,由视图渲染器进行视图的渲染最终展现给用户
获取URL中携带的请求参数的值,也就是URL中“?”后携带的参数,传递参数的格式是:key=value
基于 Validator 接口,需要自定义 Validator 验证器
使用 Annotation JSR - 303 标准进行校验,通过注解的方式可以直接在实体类中添加每个属性的验证规则
用于拦截请求和响应,对处理器进行预处理和后处理。
prehandler在请求处理之前执行
postHandler 方法在当前请求进行处理之后执行
afterCompletion方法将在整个请求结束之后执行