javaEE基础

摘要:
如果两者匹配,则认为提交的表单有效,服务器将进行必要的处理并重置新标记。随后,提交相同的表单失败,因为服务器上的标记已重置。1234567/error.jsp8/input.jsp9/output。Jsp101112Jsp如下:5.spring事务,ibatis事务ibatis transaction:对于由多个SQL语句组成的JDBC事务操作,sqlMap。startTransaction,这个。sqlMapClient=SqlMapClientBeanFactory。必须使用createSqlMapClient();ExtendedSqlMapClient=sqlMapClient;SqlMapExecutorDelegatedelegate=客户端。getDelegate();sessionMax=DBConfig.getInstance()。获取属性Int;requestMax=DBConfig.getInstance()。获取属性Int;代表设置最大会话;//增加并发性。默认值为128,太小setMaxRequests;//增加并发性。默认值为500,太小//实例化代理对象proxy=newIbatisSqlMapClientProxy;sqlMap.commitTransaction()、1TransactionStateInfo.geTransactionStateInfo()2.setState;3SqlMapSessionImplsession=代理。getLocalSession();4Connectionconn=TransactionStateInfo.geTransactionStateInfo()5.getConnection();6try7{8commit;9log.info;10}rollbackTransaction()连接。回滚();还有sqlMap。endTransaction操作以实现整个事务的原子性。

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、HttpSession实现实时显示在线人数:

servlet创建一个HttpSession是对象,保存人数信息,使用setAttribute()getAttribute()方法存储和检索对象。

7、oracle中varchar(2)的长度是多少?

最大存储长度为4000个字节,在plsql中,其最大存储长度可以达到32767个字节。

8、队列

把对象放在安全有序的集合中。其中arrayList是不安全但是有序的,LinkList是不安全无序的。vector是安全有序的

9、oracle的内置函数

免责声明:文章转载自《javaEE基础》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇unigui+fastReport实现web打印方案CAT 监控搭建下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

flutter Radio单选框

单选框,允许用户从一组中选择一个选项。...

uniapp之页面间传递和接收数组

uni-app如何在页面之前发送和传递数组?如果阵列是直接发送和传递的,则收到的消息如下所示。无法获取更多的对象值。接收数组对象的参数。您可以首先将数组转换为JSON字符串,然后在将其传递到页面后将其解析为JavaScript对象。...

VMware虚拟机几个常用文件夹介绍

将在虚拟机系统文件下自动生成三个锁文件。虚拟系统正常关闭后,VMware将解锁,“systemTyep.vmdk.lck”和“systemType.vmem”文件夹将消失。当RAM运行缓慢时,它会将数据从RAM移动到一个称为“分页文件”的空间。...

nginx做本地目录映射

nginx做本地目录映射有时候需要访问服务器上的一些静态资源,比如挂载其他设备上的图片到本地的目录,而本地的目录不在nginx根目录下,这个时候就需要简单的做一下目录映射来解决,比如想通过浏览器http://ip/image/2016/04/29/10/abc.jpg访问到系统目录/image_data/2016/04/29/10/abc.jpg需要在ngi...

自定义样式滚动条

自定义IE浏览器滚动条样式追溯浏览器对滚动条的自定义,恐怕最早的就是IE浏览器了。感觉IE浏览器滚动条自定制功能并不是很强,只能控制一样显示各个部分的颜色而已,像宽度,结构等都无法控制,要靠出个性点的滚动条,很难!自定义FireFox浏览器滚动条在网上找了很多关于Firfox自定义浏览器滚动条的方法,发现firefox中却实是不支持的。...

GitLab 数据库

要访问GitLab数据库步骤中使用的DockerGitlab,首先输入容器dockerexec-itgitlab/bin/bash ``查找数据库配置文件``bash/var/opt/GitLab/gitlabrails/etc/database yml内容如下,记录数据库配置信息production:adapter:postgresqlencoding:u...