javaEE基础

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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实现实时显示在线人数:

 

以上是关于javaEE基础的主要内容,如果未能解决你的问题,请参考以下文章

javaEE之过滤器—知道为什么你要登录了吧!

SpringBoot过滤器和拦截器

javaEE项目启动过程中Spring是怎么一步步执行的?

Filter

JavaWeb day06 过滤器监听器Web项目路径

Filter 过滤器的使用详解