公司项目框架SSH,使用工作流引擎activiti-engine,公司内部框架封装:表单框架、数据库对应实体框架、自定义标签、流程配置框架;另外吐槽,公司对SSH框架应用不太深入!
目录:
掌握技术-list:
- jstl表达式与js混用,Java代码与js混用。
- 静态引入JSP标准文件,常用外部js、css都用标准JSP文件包裹,其他页面引入标准JSP文件即可
- DWR技术:可在JSP页面调用JAVA方法
- validate.js 表单输入、提交校验,聚焦输入位置
- 模式对话框,弹框返回值-window.returnValue
- 父子窗口元素互访、函数调用,html-dom
- json对象与JS
- jquery元素访问、控制、常用方法。JS的简化代码使用框架
- ajax异步请求,建议jquery方法:$.ajax-->原始方法; $.post()、$.get()。
- frame页面框架
- 标签页切换、页面数据导出
- html table导出excel文件
function exportData() { var winname = window.open('', '_blank', 'height=0,width=0,top=100'); var strHTML = document.all.tableExcel.innerHTML; winname.document.open('text/html', 'replace'); winname.document.writeln(strHTML); winname.document.execCommand('saveas','','excel.xls'); winname.close(); } <view:button name="导出" οnclick="exportData()"></view:button> <div id=“tableExcel”> html表格。。。。。。。。。 </div>
- html table导出excel文件
- 树操作--认识zTree , ClassTreeUtil树转换工具类。学习参考: http://www.ztree.me/v3/demo.php#_101
- 自定义标签 taglib 学习参考:http://www.cnblogs.com/zhaoyang/archive/2011/12/25/2301108.html
- jsp--js:javascript代码块中使用<%=java代码%>,{el表达式}
- 基础视图控制
- 。。。
- 事物控制
transactionAttributes配置:
PROPAGATION_REQUIRED--支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择
<property name="transactionAttributes"> <props> <prop key="*">PROPAGATION_REQUIRED,-Exception</prop> </props> </property>
- or-mapping
- ...
- 连接池
配置:
<!--最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。 --> <property name="maxIdleTime" value="60"></property> <!--初始化时获取连接,取值应在minPoolSize与maxPoolSize之间。--> <property name="initialPoolSize" value="5"></property> <!--连接池中保留的最小连接数。--> <property name="minPoolSize" value="5"></property> <!--连接池中保留的最大连接数。--> <property name="maxPoolSize" value="20"></property> <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。--> <property name="acquireIncrement" value="10"></property> <!--定义在从数据库获取新连接失败后重复尝试的次数。Default: 30 --> <property name="acquireRetryAttempts" value="30"></property> <!--两次连接中间隔时间,单位毫秒。Default: 1000 --> <property name="acquireRetryDelay" value="1000"></property> <!--连接关闭时默认将所有未提交的操作回滚。Default: false --> <property name="autoCommitOnClose" value="false"></property> <!--定义所有连接测试都执行的测试语句。在使用连接测试的情况下这个一显著提高测试速度。注意: 测试的表必须在初始数据源的时候就存在。Default: null--> <property name="preferredTestQuery" value="select 1 from dual"></property> <!--因性能消耗大请只在需要的时候使用它。如果设为true那么在每个connection提交的 时候都将校验其有效性。建议使用idleConnectionTestPeriod或automaticTestTable 等方法来提升连接测试的性能。Default: false --> <property name="testConnectionOnCheckout" value="false"></property> <!--如果设为true那么在取得连接的同时将校验连接的有效性。Default: false --> <property name="testConnectionOnCheckin" value="true"></property> <!--c3p0是异步操作的,缓慢的JDBC操作通过帮助进程完成。扩展这些操作可以有效的提升性能 通过多线程实现多个操作同时被执行。Default: 3--> <property name="numHelperThreads" value="3"></property>
- 定时任务
- spring 处理 clob大字段,spring配置
<!-- nativeJdbcExtractor 和 oracleLobHandler Bean 都设置为 lazy-init="true",这是因为 --> <!-- nativeJdbcExtractor 需要通过运行期的反射机制获取底层的 JDBC 对象, --> <!-- 所以需要避免在 Spring 容器启动时就实例化这两个Bean. --> <bean id="nativeJdbcExtractor" class="org.springframework.jdbc.support.nativejdbc.C3P0NativeJdbcExtractor" lazy-init="true" /> <bean id="oracleLobHandler" class="org.springframework.jdbc.support.lob.OracleLobHandler" lazy-init="true"> <property name="nativeJdbcExtractor" ref="nativeJdbcExtractor"></property> </bean>
- sql优化,
- 导入导出
- pl/sql developer 使用技巧
- oracle函数、存储过程、job、同义词、视图、dblink
- 常用命令:ls、cd、rm、top、cp、ps -ef |grep newgdbh
项目特殊问题
- 解决跨域问题Session丢失问题filter
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletResponse res = (HttpServletResponse)response; res.setHeader("P3P", "CP=CAO PSA OUR");//设置HTTP头部 if (chain != null) chain.doFilter(request, response); }
项目开发心得体会
- 写代码前需要考虑周全,多思考,避免后期需求变化带来代码的大改
- 一个问题思考多种解决方案,方案出来之后再选择比较好的方案实行