javaEE基础

1、拦截器与过滤器

过滤器(filter),过滤器处于客户端与Web资源(Servlet、JSP、HTML)之间,客户端与Web资源之间的请求和响应都要通过过滤器进行过滤。如过滤编码,IP

拦截器(interceptor),拦截器是一种面向方面/切面编程(AOP Aspect-Oriented Programming),而面向切面就是将多个模块的的通用服务进行分离,如权限管理、日志服务,他们在多个模块中都会用到,就可以将其各自封装为一个可重用模块。

执行顺序 :过滤前 - 拦截前 - Action处理 - 拦截后 - 过滤后。

waf过滤器实现:

1  <filter>
2         主过滤器filter名称及实现类class
3         <filter-name>WebCastellum</filter-name>
4         <filter-class>org.webcastellum.WebCastellumFilter</filter-class>
5  </filter>

拦截器实现:

 1 <interceptors>
 2         <!-- sid,rmkey登录Session验证 -->
 3         <interceptor class="richinfo.frame.ext.valid.SidRmKeyValidator">
 4              <includes>
 5                  <exclude>
 6                 calendar:syncAddCalendar|calendar:syncGetCalendar|calendar:syncUpdateCalendar|
 7                 calendar:syncDelCalendar|calendar:syncGetCalendars|calendar:syncDebrisCalendars|
 8                 calendar:smsUpdateInviteStatus
 9                  </exclude>
10                 <include>calendar:*</include>
11              </includes>
12         </interceptor>
13 </interceptors>

2、传真服务的原理:

获取文件名,上传路径使用ftp上传

3、线程,加锁

4、structs防止表单重复提交

Struts 2已经内置了能够防止用户重复提交同一个HTML表单的功能。它的工作原理:让服务器生成一个唯一标记,并在服务器和表单里各保存一份这个标记的副本。此后,在用户提交表单的时候,表单里的标记将随着其他请求参数一起发送到服务器,服务器将对他收到的标记和它留存的标记进行比较。如果两者匹配,这次提交的表单被认为是有效的,服务器将对之做出必要的处理并重新设置一个新标记。随后,提交相同的表单就会失败,因为服务器上的标记已经重置。

 1 <struts>
 2     <package name="avoidPackage" extends="struts-default">
 3         <action name="avoid" class="struts2.action.AvoidAction">
 4             <interceptor-ref name="token"></interceptor-ref>
 5             <interceptor-ref name="defaultStack"></interceptor-ref>
 6
 7             <result name="invalid.token">/error.jsp</result>
 8             <result name="input">/input.jsp</result>
 9             <result name="success">/output.jsp</result>
10         </action>
11     </package>
12 </struts>

jsp如下:

<s:token></s:token>

5、spring事务,ibatis事务

ibatis事务:

对于多条SQL 组合而成的一个JDBC 事务操作而言,必须使用
sqlMap.startTransaction、

 this.sqlMapClient = SqlMapClientBeanFactory.createSqlMapClient();
                ExtendedSqlMapClient client = (ExtendedSqlMapClient) sqlMapClient;
                SqlMapExecutorDelegate delegate = client.getDelegate();
                sessionMax = DBConfig.getInstance().getPropertyInt(
                    "ibatis.max.concurrent.session", 128);
                requestMax = DBConfig.getInstance().getPropertyInt(
                    "ibatis.max.concurrent.request", 500);
                delegate.setMaxSessions(sessionMax);// 增大并发量,默认才128,太小了
                delegate.setMaxRequests(requestMax);// 增大并发量,默认才500,太小了
                // 实例化代理对象
                proxy = new IbatisSqlMapClientProxy(delegate);

sqlMap.commitTransaction()、

 1 TransactionStateInfo.geTransactionStateInfo()
 2                 .setState(State.commit);
 3             SqlMapSessionImpl session = proxy.getLocalSession();
 4             Connection conn = TransactionStateInfo.geTransactionStateInfo()
 5                 .getConnection();
 6             try
 7             {
 8                 commit(session, conn);
 9                 log.info("commit transaction...");
10             }

rollbackTransaction()

 conn.rollback();

和sqlMap.endTransaction 操作以实现整体事务的原子性。

spring事务:

纯JDBC操作数据库的基本步骤:

1. 获取连接 Connection conn = DriverManager.getConnection()

2. 开启事务conn.setAutoCommit(true/false);

3. 执行CRUD

4. 提交事务/回滚事务 conn.commit()  /  conn.rollback();

5. 关闭连接 conn.close();

使用Spring的事务管理功能后,我们可以不再写步骤 2 和 3 的代码,而是由Spirng 自动完成。

6、application实现实时显示在线人数:

时间: 02-17

javaEE基础的相关文章

javaEE基础08

javaEE基础08 一.继承 特点:继承父类的属性和方法,单继承(多继承) 特性:方法的复写(重写) 比如:人可以养狗 人------>狗:整体和部分(拥有)关系 关键字:extends 结构: A类 extends B类:A类继承B类 继承中所要注意的事项: 1.不要为了继承而继承 2.父类的私有变量(方法)不能够被继承 3.父类的构造函数不能被继承 4.子类在调用自己的构造方法时,会默认先调用父类的无参构造方法 5.对于super的调用必须是构造器中的第一个语句 6.子类不能继承不在一个包

JavaEE基础(九)

1.面向对象(多态的概述及其代码体现) A:多态(polymorphic)概述 事物存在的多种形态 B:多态前提 a:要有继承关系. b:要有方法重写. c:要有父类引用指向子类对象. C:案例演示 代码体现多态 2.面向对象(多态中的成员访问特点之成员变量) 成员变量 编译看左边(父类),运行看左边(父类). 3.面向对象(多态中的成员访问特点之成员方法) 成员方法 编译看左边(父类),运行看右边(子类). 4.面向对象(多态中的成员访问特点之静态成员方法) 静态方法 编译看左边(父类),运行

JavaEE基础(一)

1.计算机基础知识(计算机概述) A:什么是计算机?计算机在生活中的应用举例 计算机(Computer)全称:电子计算机,俗称电脑.是一种能够按照程序运行,自动.高速处理海量数据的现代化智能电子设备.由硬件和软件所组成,没有安装任何软件的计算机称为裸机.常见的形式有台式计算机.笔记本计算机.大型计算机等. 应用举例 1:科学计算 2.数据处理 3.自动控制 4.计算机辅助设计 5.人工智能 6.多媒体应用 7.计算机网络 ... B:什么是硬件?硬件举例 计算机硬件(Computer Hardw

JavaEE基础(三)

1.Java语言基础(逻辑运算符的基本用法) A:逻辑运算符有哪些 &,|,^,! &&,|| B:案例演示 逻辑运算符的基本用法 注意事项: a:逻辑运算符一般用于连接boolean类型的表达式或者值. b:表达式:就是用运算符把常量或者变量连接起来的符合java语法的式子. 算术表达式:a + b 比较表达式:a == b(条件表达式) C:结论: &逻辑与:有false则false. |逻辑或:有true则true. ^逻辑异或:相同为false,不同为true. !

JavaEE基础(四)

1.Java语言基础(循环结构概述和for语句的格式及其使用) A:循环结构的分类 for,while,do...while B:循环结构for语句的格式: for(初始化表达式;条件表达式;循环后的操作表达式) { 循环体; } C执行流程: a:执行初始化语句 b:执行判断条件语句,看其返回值是true还是false 如果是true,就继续执行 如果是false,就结束循环 c:执行循环体语句; d:执行循环后的操作表达式 e:回到B继续. D:案例演示 在控制台输出10次"hellowor

JavaEE基础(二)

1.Java语言基础(常量的概述和使用) A:什么是常量 在程序执行的过程中其值不可以发生改变 B:Java中常量的分类 字面值常量 自定义常量(面向对象部分讲) C:字面值常量的分类 字符串常量 用双引号括起来的内容 整数常量 所有整数 小数常量 所有小数 字符常量 用单引号括起来的内容,里面只能放单个数字,单个字母或单个符号 布尔常量 较为特殊,只有true和false 空常量 null(数组部分) D:案例演示 用输出语句输出各种常量.null不演示 2.Java语言基础(进制概述和二,八

JavaEE基础(七)

1.面向对象(构造方法Constructor概述和格式) A:构造方法概述和作用 给对象的数据(属性)进行初始化 B:构造方法格式特点 a:方法名与类名相同(大小也要与类名一致) b:没有返回值类型,连void都没有 c:没有具体的返回值return; 2.面向对象(构造方法的重载及注意事项) A:案例演示 构造方法的重载 重载:方法名相同,与返回值类型无关(构造方法没有返回值),只看参数列表 B:构造方法注意事项 a:如果我们没有给出构造方法,系统将自动提供一个无参构造方法. b:如果我们给出

JavaEE基础(八)

1.面向对象(代码块的概述和分类)(了解)(面试的时候会问,开发不用或者很少用) A:代码块概述 在Java中,使用{}括起来的代码被称为代码块. B:代码块分类 根据其位置和声明的不同,可以分为局部代码块,构造代码块,静态代码块,同步代码块(多线程讲解). C:常见代码块的应用 a:局部代码块 在方法中出现:限定变量生命周期,及早释放,提高内存利用率 b:构造代码块 (初始化块) 在类中方法外出现:多个构造方法方法中相同的代码存放到一起,每次调用构造都执行,并且在构造方法前执行 c:静态代码块

JavaEE基础(十)

1.面向对象(package关键字的概述及作用) A:为什么要有包 将字节码(.class)进行分类存放 包其实就是文件夹 B:包的概述 举例: 学生:增加,删除,修改,查询 老师:增加,删除,修改,查询 ... 方案1:按照功能分 com.heima.add AddStudent AddTeacher com.heima.delete DeleteStudent DeleteTeacher com.heima.update UpdateStudent UpdateTeacher com.hei