• 杂记


    springMvc事务的注解配置、实现、挂起

    1、事务的配置

      Spring-MyBaties.XML配置

      <!-- spring mvc 自动扫描注解的时候,不去扫描@Service -->
        <context:component-scan base-package="com.spdbccc.manager">
            <!--将Controller的注解排除掉 -->
            <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" />
        </context:component-scan>
        <util:properties id="app" location="classpath:app-${env}.properties"/>
    
        <bean id="dataSource_1" class="org.springframework.jndi.JndiObjectFactoryBean">
            <property name="jndiName" value="#{app.jndiName_member}"/>
        </bean>
        <!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 -->
        <bean id="sqlSessionFactory_1" class="org.mybatis.spring.SqlSessionFactoryBean">
            <property name="dataSource" ref="dataSource_1"/>
            <property name="configLocation" value="classpath:spring/vazh_mybatis.xml"/>
        </bean>
        <!-- DAO接口所在包名,Spring会自动查找其下的类 -->
        <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
            <property name="basePackage" value="com.spdbccc.manager.vazh.*.mapper"/>
            <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory_1"></property>
        </bean>
         <!--定义事务管理器-->
        <bean name="transactionManager_1" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <property name="dataSource" ref="dataSource_1"></property>
        </bean>
    View Code

    2、事务的使用

    在需要实现事务的类声明或方法声明上加@Transactional注解
      @Transactional( value = "transactionManager_1", readOnly = false, isolation = Isolation.DEFAULT, propagation = Propagation.REQUIRED, rollbackFor = Exception.class)

    3、事务的挂起


    NOT_SUPPORTED:声明方法不需要事务。如果方法没有关联到一个事务,容器不会为它开启事务。如果方法在一个事务中被调用,该事务会被挂起,在方法调用结束后,原先的事务便会恢复执行。
    例如 方法A支持事务
    方法B不支持事务。
    方法A调用方法B。
    在方法A开始运行时,系统为它建立Transaction,方法A中对于数据库的处理操作,会在该Transaction的控制之下。
    这时,方法A调用方法B,方法A打开的 Transaction将挂起,方法B中任何数据库操作,都不在该Transaction的管理之下。
    当方法B返回,方法A继续运行,之前的Transaction回复,后面的数据库操作继续在该Transaction的控制之下 提交或回滚。

     

    利用BeanUtils 工具类封装表单数据

    一、BeanUtils工具类的使用

      1、首先导入BeanUtils工具类的jar包    

    commons-beanutils-1.8.0.jar
    commons-logging-1.1.1.jar
    View Code

       2、setPropertity(Object bean,String name,Object value)方法

          作用:为实体类bean的name属性设置属性值value(属性值为Object类型,可以以其他类型的对象为值)

      3、populate(Object bean,Map properties)方法

          作用:将map中的键值对,赋值给实体类bean的对应属性

             populate封装对象时,实际上是调用了该对象所属类的set方法,因此页面表单内元素的name属性值一定要与实体类中的属性名一致,也就是与set方法中去掉set,并将剩下字符串的首字母小写的到的字符串一致

    二、自定义类封装表单数据

      步骤:

        1、通过request.getParameterMap()方法,获取存储表单数据的map

        2、通过BeanUtils工具类的populate(t,map)方法,给实体类对象赋值

        3、返回实体类对象

      代码:

     public class WEBUtils {
         public static <T>T populateObject(HttpServletRequest request,T t){
            Map<String, String[]> map = request.getParameterMap();
            System.out.println(map);
             try {
                 BeanUtils.populate(t, map);
            } catch (Exception e) {
                  e.printStackTrace();
            }
             return t;
        }
     }
    View Code

     注意:为了使自定义的工具类适用于所有实体类,我们将方法的参数设置为泛型,根据调用者传递的实体类对象和请求参数封装表单数据

     

     

    java中instanceof用法

     

    一、简介

     

    java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。
     用法:
      result = object instanceof class
    参数:
      Result:布尔类型。
      Object:必选项。任意对象表达式。
      Class:必选项。任意已定义的对象类。
    说明:
      如果 object 是 class 的一个实例,则 instanceof 运算符返回 true。如果 object 不是指定类的一个实例,或者 object 是 null,则返回 false。

     

    package com.instanceoftest;
    
     interface A{}
     class B implements A{
     
     }
     class C extends B {
     
     }
     
     class instanceoftest {
      public static void main(String[] args){
         A a=null;
         B b=null;
         boolean res;
        
         System.out.println("instanceoftest test case 1: ------------------");
           res = a instanceof A;
           System.out.println("a instanceof A: " + res);
          
           res = b instanceof B;
           System.out.println("b instanceof B: " + res);
          
         System.out.println("/ninstanceoftest test case 2: ------------------");  
         a=new B();
         b=new B();
        
         res = a instanceof A;
         System.out.println("a instanceof A: " + res);
        
         res = a instanceof B;
         System.out.println("a instanceof B: " + res);
    
         res = b instanceof A;
         System.out.println("b instanceof A: " + res);
        
         res = b instanceof B;
         System.out.println("b instanceof B: " + res);
       
         System.out.println("/ninstanceoftest test case 3: ------------------");
         B b2=(C)new C();
        
         res = b2 instanceof A;
         System.out.println("b2 instanceof A: " + res);
        
         res = b2 instanceof B;
         System.out.println("b2 instanceof B: " + res);
        
         res = b2 instanceof C;
         System.out.println("b2 instanceof C: " + res);
      }
    }
    View Code

    运行结果:

    instanceoftest test case 1: ------------------
    a instanceof A: false
    b instanceof B: false
    
    instanceoftest test case 2: ------------------
    a instanceof A: true
    a instanceof B: true
    b instanceof A: true
    b instanceof B: true
    
    instanceoftest test case 3: ------------------
    b2 instanceof A: true
    b2 instanceof B: true
    b2 instanceof C: true
    
     
    View Code

       分页

    1、javaBean的特点

      1)私有化属性

    2)无参构造器

    3)getter/setter方法

    2、软件的三层架构

           1)表现层(表示层、web层):html/jsp/servlet

    2)业务逻辑层:写业务逻辑代码(service)

    3)持久化层:和数据库打交道,操作数据库的代码(dao层)

    3、MVC模型

    M:model模型(封装数据)

    V:View视图(html/jsp)渲染数据

    C:Controller(servlet)控制程序的运行流程

    4、分页

    列 表显示条数过多现象,由于后台Sql语句是使用  select 字段名 from 表名 的方式导致的!实际开发中不可以这个写,也就是我们对于 查询的列表 必须添加分页,对于后台 sql语句而言,就是select 字段名 from 表名 limit 起始索引,查询条数

    分页有后台 分页,前端也有分页信息

     

    优点:减少了浏览器的网络 消耗减少了后台 数据库服务器的压力,也减少了tomcat服务器的压力。

    5、HTML

    块元素:<h1></h1>

    行内 元素:<span></span>

  • 相关阅读:
    关于Mobx中装饰器语法的环境配置
    关于Java单例模式中懒汉式和饿汉式的两种类创建方法
    Java学习笔记之异常处理
    create-react-app脚手架的安装和目录结构介绍
    关于win10下JDK环境变量的配置以及关于JDK的一些说明
    关于Android studio的安装和配置问题
    关于通过ServletContext获取数据出现的http500的错误的解决方案
    关于form表单提交到Servlet的时候出现tomcat启动错误的解决方法
    Android网络编程系列之Volley总结
    Android网络编程系列之HTTP协议原理总结
  • 原文地址:https://www.cnblogs.com/bkyy/p/8036573.html
Copyright © 2020-2023  润新知