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

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

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

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

    8、队列

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

    9、oracle的内置函数

  • 相关阅读:
    多态与多态性,鸭子类型
    类的继承与派生,抽象类
    常用模块
    模块与包
    三元表达式、列表推导式、生成器表达式、递归、匿名函数、内置函数
    函数装饰器
    函数基础
    文件处理
    数据类型
    Spring源码分析--IOC流程
  • 原文地址:https://www.cnblogs.com/wanghongye/p/5202229.html
Copyright © 2020-2023  润新知