三大组件servlet filter listener
servlet处理请求
listener监听器
三大组件基本都要在web.xml中进行注册;除了listener中的两个(活化钝化监听器,绑定监听器)需要Javabean实现。不注册外,剩下的三大组件都需要注册;
url-pattem 的三种写法:
1.精确匹配:/com/kuang/inse.jsp 直接拦截指定的路径
2.路径匹配: /kuang/* 拦截kuang下的所有请求
3.后缀匹配:*.jsp
不能组合使用
dofilter(){//放行请求
chain.doFliter(request,response);
}
八个
ServletRequset(2),HttpSession(2),ServletConext(2)
2:生命周期监听器 ,属性变化监听器
4:活化钝化
生命周期监听器,监听服务器启动停止,启动创建,停止销毁
ServletConext:1.一个ServletContext,他代表当前的web项目的信息
2.还可以作为最大的域对象在整个项目运行期间共享数据
1.实现监听器的接口
2.去web.xml中进行配置
{key:value}
value: 可以有很多种
1:基本的类型(字符串,数字,布尔值)
2:数组
{listname:"李四",books:[张三,{},19]}
3:对象
var student ={lastName:"张三",age:18};//用逗号隔开
var student2 ={lastName:"张三",age:18,car{对象}};
var student 3={lastName:"张三",age:18,car{对象},infos:[{bookname:"王五"},13,"王五"];
</script>
如果要获取13
alert(student3,infos[1])
//JSON(js内置的对象,将js对象转化为json字符串)
var strJSon=JSON.stringify(student2);
alert(strJSon);
再转化成对象
var strJSon2=JSON.parse(strJSon);
ctrl+shift+f是快速格式化好看
页面无刷新
$.get()
$.post()
$.ajax()
<%=new Data()%>添加一个日期
是一个容器,管理很多的组件
Test:测试模块
Cor Container:核心容器,黑色的表示该功能由那些jar包组成要使用这个部分完整的功能,这些jar包都需要完整的导入
AOP+Aapects :面向切面编程
data access:数据访问与集成模块
web:模块
IOC (容器-mybatis等) AOP(面向切面编程)-》声明式事务
ioc:主动的new资源变为被动的接收(这就是控制反转)
控制反转 :资源获取方式1.主动式,要什么资源自己创建即可2.被动式:BookServlet资源的获取都不是我们创建,而是交给一个容器来创建和设置
(类似社会主义高级阶段)
DI依赖注入:容器能知道那个组件(类)运行的时候,需要另一个类(组件);容器通过反射的形式,将容器中准备好的对象注入;
只要容器管理的类,都能使用容器提供的强大功能
consolas
<bean id="possen01" class="com.lei.pojo.poseen">
<property name="name" value="张三"/>
<property name="age" value="22"/>
<property name="xingbie" value="1"/>
</bean>
//使用get和set方法赋值
<bean id="possen03" class="com.lei.pojo.poseen">
<constructor-arg name="name" value="dd" ></constructor-arg>
<constructor-arg name="age" value="22"></constructor-arg>
<constructor-arg name="xingbie" value="1"></constructor-arg>
</bean>
//使用构造器的方法赋值
正确的给元素赋值null
</bean>
<bean id="possen02" class="com.lei.pojo.poseen">
<property name="name" value="张三"/>
<property name="age" ><null/></property>
<property name="xingbie" value="1"/>
</bean>
使用list注入值
List<Car> list;
</bean>
<bean id="possen01" class="com.lei.pojo.poseen">
<property name="name" value="张三"/>
<property name="age" value="22"/>
<property name="xingbie" value="1"/>
<property name="list">
<list>
<bean id="calcal" class="com.lei.pojo.Car">
<property name="name" value="sle"></property>
<property name="age" value="12"></property>
</bean>
<ref bean="car01"/>
</list>
</property>
</bean>
配置信息继承
<bean id="possen02" class="com.lei.pojo.poseen" parent="possen01"></bean>
抽象用法(当bean中有abstract的时候,这个bean是一个抽象的不能获取实例,只能被别人继承)
<bean id="possen01" class="com.lei.pojo.poseen" abstract="true"></bean>
<bean id="possen01" class="com.lei.pojo.poseen" scope="prototype"></bean>
prototype:多实例的
(1.构造器启动时不会创建多实例的bean
2.每次获取的时候都会创建这个bean
3.每次获取都会创建一个新的对象)
singleton:单实例
(1.在容器启动完成之前就创建完成对象的创建保存在容器中了
2.任何时候使用都是使用已经创建好的对象了)
只要是这个接口的实现类,Spring都认为是一个工厂
是spring认识的工厂类
UUID.randomUUID().toString()
生成:44e128a5-ac7a-4c9a-be4c-224b6bf81b20
autowire=“byName”按照属性名赋值,找不到就装配null
autowire=“byType”按照属性类型赋值,如果容器中有多个这种类型的组件,报错
autowire=“byName”按照属性名赋值,找不到就装配null
Spring上有四个注解
@Controller:控制器,我们推荐给控制器层(Servlet包下的一些)的组件加这个注解;
@Service:控制器;我们推荐业务逻辑层的组件添加这个注解;BookService
@Repository:数据库层(持久化层,dao层)的组件添加这个注解;
@Component:给不属于以上几层的组件添加这个注解;
spring底层不会验证注解,注解主要是给程序员看的
1)给要添加的组件上标四个注解的任何一个;
2)告诉spring,自动扫描加了注解的组件;依赖context名称空间
<context:component-scan base-backage="com.kuang"></context:component-scan>
在测试类中id默认就是类名首字母小写
或者用@Repository(“”)来指定一个名字
<context:component-scan base-backage="com.kuang"><!--扫描的时候排除一些不要的组件,type="annotation"指定排除规则,expression注解的全类名--> <context:exclude-filer type="annotation" expression="com."/> </context:component-scan>
不用使用set不用new
@Qualifier(“xxx”),现在使用xxx作为变量名
@Auotweired(required=false)找不到东西的时候,就赋值null
原文:https://www.cnblogs.com/Liguangyang/p/12996328.html