数据库和struts2的拦截器

1.READ UNCOMMITTED:脏读、不可重复读、虚读都有可能发生
2.READ COMMITTED:防止脏读的发生,不可重复读,虚读都有可能发生
3.REPEATABLE READ:防止脏读,不可重复读的发生,虚读可能发生
4.REALIZABLE:防止脏读,不可重复读,虚读的发生
事务级别越高,安全性越高,效率越低
设置事务的隔离级别:SET transaction isolation levle + 四个隔离级别之一
数据库的分页操作
LIMIT M,N
M:表示查询的开始索引,第一页的索引为0
N:表示每次查询的记录条数

第一页:SELECT * FROM student LIMIT 0,10;
第二页:SELECT * FROM student LIMIT 10,10;
第n页:SELECT * FROM student LIMIT (n-1)*10,10;

总页数:
总页数=总记录条数%10==0?总记录条数/10:总记录条数/10+1
脏数据:一个线程中的事务读取了另一个线程中未提交的事务
事务:在计算机术语中,访问数据库中数据项的一个程序单元(unit),通常包含对数据库读或者写的一系列操作
目的:1.为数据库在失败状态下恢复到正常状态下的方法,同时提供了数据库在一场状态下仍能够保持一致性的方法
2.当多个应用程序在并发访问数据库时,可以在这些应用程序之间提供一个隔离方法,防止彼此的操作相互干扰
事务被提交到数据库系统中,要么全部执行,要么全部不执行,事务中有失败的操作,则事务中所有的操作都要回滚,回到事务前的状态。
该事务同其他事务的执行没有影响,就好象是各自独立执行一样。
事务的原子性、一致性、隔离性、持久性,就是ACID特性
比如事务:A对B转账的操作包括6个过程
1.查询A账户的余额(500);
2.从A账号支出数目(500-100);
3.把结果回写道A账号中(400);
4.查询B账号的余额(500);
5.往B账号中加入数目(500+100);
6.把结果写道B账号中(600);
拦截器:java拦截器动态拦截Action对象,在Action的前后执行一段代码,Struts通过查找配置文件,通过配置文件实例化要拦截
的对象,让后串成一个list,之后一个一个的调用列表中的拦截器
过滤器:取你所想取
拦截器:拒你所想拒
拦截器站:多个拦截器的组合
<--!注册拦截器-->
<interceptors>
<interceptor name="timer" class="com.deng.interceptor.MyInterceptor">
</interceptors>
<action name="getTime" class="com.deng.action.MyAction">
<result>/1.jsp</result>
<interceptor-ref name="timer"/>
</action>
validation:调用验证框架进行数据验证
fileupload:对文件上传提供支持,将文件和元数据设置到对应的action属性
在Struts-default.xml中定义一个defaultStack拦截器站,并且设置为默认拦截器,那么在定义包的过程中继承Struts-default,才能够使用默认的
defaultStack拦截器,如果在包中指定特定的拦截器,则defaultStack拦截器将不起作用。
在web应用中引入拦截器机制,可以实现对action通用操作的可插拔管理,这种可插拔管理是建立在配置struts.xml的基础上实现的
拦截器的语法格式:
<interceptors>
<interceptor name="拦截器的名字" class="拦截器的类名"/>
</interceptors>
拦截器站的语法格式:
<interceptors>
<interceptors-stack name="拦截器站的名字">
<interceptor-ref name="拦截器的名字"/>
</interceptors>
</interceptors>
在struts.xml配置文件中,原先已经配置了action信息,加入拦截器后,在action之内将需要的拦截器写入即可
<s:form action="doxxx.action" method="post">
<s:textfield name="name" label="the person" />
<s:textfield name="content" label="the content" />
<s:checkbox name="check" label="I have read the paper" />
<s:submit type="button" />
</s:form>
// 获取属性值,name属性,可以将其值显示在网页上
<s:property value="name">
// 引入struts标签库
<%@ taglib prefix="s" uri="/struts.tags"%>
获取session对象的方法
1)从实际的request中获取
HTTPSession session = ServletActionContext.getRequest().getSession()
2)间接使用struts中的map获得,担不是真实的session
ActionContext ac = ActionContext.getContext();
Map m = ac.getSession();
ActionSupport的execute方法是在action没有指定方法时,struts2会默认使用该方法

原文地址:https://www.cnblogs.com/demo-deng/p/8133881.html