Shanqi Jiang

Blog

事务管理和界面应用问题 Fix Bug

事物只读

<font color=#FFA500>错误:</font>
java.sql.SQLException: Connection is read-only. Queries leading to data modification are not allowed

<font color=#FFA500>解决方法:</font>
事务配置在service层,但是你的service层的方法是不是<事务管理器>指定开头的,service调用的x方法根本就没有事务或者设置为了read-only。修改你service方法的开头变成不是read-only的那种配置,如已经设置的开头

	<!-- 事务管理器 -->
	<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		  <property name="dataSource" ref="dataSource" />
	</bean>

	<tx:advice id="txadvice" transaction-manager="transactionManager">
		<tx:attributes>
		<tx:method name="add*" propagation="REQUIRED"  read-only="false" rollback-for="Exception" />
		<tx:method name="save*" propagation="REQUIRED"  read-only="false" rollback-for="Exception" />
		<tx:method name="modify*" propagation="REQUIRED"  read-only="false" rollback-for="Exception" />
		<tx:method name="update*" propagation="REQUIRED"  read-only="false" rollback-for="Exception" />
		<tx:method name="del*" propagation="REQUIRED"  read-only="false" rollback-for="Exception"/>
		<tx:method name="*" propagation="REQUIRED" read-only="true"/>
		    </tx:attributes>
	</tx:advice>

this

  取上一层级的参数值 this.prev()

浏览器适配

	//子窗口弹框 
	window.showModalDialog()//在chrome里不适用
	window.open(pageURL,name,parameters)//替代

数据库连接失效

采取了两个方法解决:
1.在数据库连接xml里增加条件

	<!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
	<property name="timeBetweenEvictionRunsMillis" value="60000" />
	<!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
	<property name="minEvictableIdleTimeMillis" value="25200000" />
	
	<!-- 打开removeAbandoned功能 -->
	<property name="removeAbandoned" value="true" />
	<!-- 1800秒,也就是30分钟 -->
	<property name="removeAbandonedTimeout" value="{SUB_DATABASE_MAX_TIME}"/>
	<property name=“validationQueryTimeout" value="{VALID_ATION_QUERY_TIMEOUT}"></property>

2.数据库轮询(轮流访问数据库操作)

	public void job() {
		log.info("任务调度,每隔1分钟访问一次数据库---开始..........................");
			
			log.info("连接审计系统数据库--start--");
			auditPrjStatusMapper.selectAuditdbtOracle();
			log.info(“连接审计系统数据库—end--");
	
		log.info(“任务调度,每隔1分钟访问一次数据库---结束..........................");

GET请求和POST请求的区别

两种在客户端和服务器端进行请求-响应的常用方法是:GET 和 POST
GET - 从指定的资源请求数据
POST - 向指定的资源提交要处理的数据

GET 基本上用于从服务器获得(取回)数据。注释:GET 方法可能返回缓存数据。
POST 也可用于从服务器获取数据。不过,POST 方法不会缓存数据,并且常用于连同请求一起发送数据。
在客户端使用get请求时,服务器端使用Request.QueryString来获取参数,而客户端使用post请求时,服务器端使用Request.Form来获取参数.
  • GET请求会将参数跟在URL后进行传递,而POST请求则是作为HTTP消息的实体内容发送给WEB服务器。当然在Ajax请求中,这种区别对用户是不可见的
  • GET方式对传输的数据大小有限制,通常不能大于2KB,而POST方式传递的数据量要比GET方式大得多,理论上不受限制
  • GET方式请求的数据会被浏览器缓存起来,因此其他人就可以从浏览器的历史记录中读取到这些数据,例如账号和密码等。在某种情况下,GET方式会带来严重的安全问题。而POST方式相对来说就可以避免这些问题