• FT项目开发技术点(二)


    1.mybatis二级缓存,指的的是将数据缓存,而非对象,而非获得的list。缓存将数据库中的数据,是数据,缓存到内存中。之后将数据每次重新加载到list中,所以每次生成的list对象都是不同的,list.hashcode()都不同。

    开启二级缓存

    1)、  在核心配置文件SqlMapConfig.xml中加入以下内容(开启二级缓存总开关):

    cacheEnabled设置为 true

    wKiom1WIJFChnBasAADcJX3IbNs777.jpg

     

     

    2)、在映射文件中,加入以下内容,开启二级缓存:

    wKiom1WIJHGj-78eAACCk6Tv9vs396.jpg

     

    3).pojo实现序列化

        

    由于二级缓存的数据不一定都是存储到内存中,它的存储介质多种多样,所以需要给缓存的对象执行序列化。

    如果该类存在父类,那么父类也要实现序列化。

    wKioL1WIJmXQfEQ4AAC1EcHDT6w451.jpg

     

    4).在相应mapper xml的cru insert update delete语句中添加刷新缓存属性

    2.eclipse将项目发布到tomcat中,注:同一个项目,新项目会覆盖掉Tomcat中以前的项目,将旧项目删除再存入新项目。所以,一定要记得:images,db这种数据存储位置一定不要放在tomcat项目中,而是放在项目外。这样保证重新发布项目时,数据不受影响。

    3.mybatis数据映射问题,mybatis没有hibernate那样,有xml文件将pojo类和数据库表中的字段匹配的xml。所以这就要求项目中的pojo类属性与数据库表中的字段要完全能匹配,名称要一样。这样mybatis才能将pojo类和表匹配起来。

    4.mybatis也要配置扫描包。mybatis的扫描包指的是包含xml映射接口的包。

    5.spring mvc上传图片问题,上传要记得添加两个jar包:commons-io.jar 和commons-fileupload.jar包。

    并在sppring mvc中配置如下multipartResolver bin  

    <bean id=”multipartResolver” class=”org.springframework.web.multipart.commons.CommonsMultipartResolver”/>

    同时jsp form表单要记得enctype=”multipart/form-data” 这个是上传文件必须的

    controller中处理方法为:

    1. public void addImage(HttpServletRequest request,String path1,String path2) {  
    2.         //转型为MultipartHttpRequest(重点的所在)  
    3.          MultipartHttpServletRequest multipartRequest  =  (MultipartHttpServletRequest) request;  
    4.          //  获得第1张图片(根据前台的name名称得到上传的文件)   
    5.          MultipartFile imgFile1  =  multipartRequest.getFile("imgFile"); 
      1. String fileName = imgFile.getOriginalFilename();  //获得上传文件名
      2.         //获取上传文件类型的扩展名,先得到.的位置,再截取从.的下一个位置到文件的最后,最后得到扩展名  
      3.          String ext = fileName.substring(fileName.lastIndexOf(".")+1,fileName.length()); //获得后缀名,知道上传文件类型。

    6.只接收指定类型的图片:

    1. //定义一个数组,用于保存可上传的文件类型  
    2.          List fileTypes = new ArrayList();  
    3.          fileTypes.add("jpg");  
    4.          fileTypes.add("jpeg");  
    5.          fileTypes.add("bmp");  
    6.          fileTypes.add("gif");  
      1. String ext = fileName.substring(fileName.lastIndexOf(".")+1,fileName.length());  
      2.          //对扩展名进行小写转换  
      3.          ext = ext.toLowerCase();  
      4.          if(fileTypes.contains(ext)) { //so something }

    7.字符串string的常用操作:

    (1)string.subString(),string.lastIndexOf(".")两个方法获得文件后缀名 String ext = fileName.substring(fileName.lastIndexOf(".")+1,fileName.length()); //获得后缀名,知道文件类型。

    (2)str.tolowercase()将str所有字符大小写转换.

    (3)str.replaceAll("/",""),替换字符问题。将第第一个参数全部替换为第二个参数。

    1.    typeName = typeName.replaceAll("/", "");               //去掉"/"  
    2.          typeName = typeName.replaceAll(" ", "");               //替换半角空格  
    3.          typeName = typeName.replaceAll(" ", "");               //替换全角空格  
    4.           
    5.          brandName = brandName.replaceAll("/", "");             //去掉"/"  
    6.          brandName = brandName.replaceAll(" ", "");             //替换半角空格  
    7.          brandName = brandName.replaceAll(" ", "");             //替换全角空格  

     8.java hashcode判断对象是否相等

    1)Object类中的hashCode则和之前的不一样了,他是根据对象的内存地址经过哈希算法之后获取到的哈希码,由于每个对象的内存地址不相同,所以hashCode是不同的。

    2)string,integer这种运用池技术的,string。integer类的hashcode()算法不一样了就,不能像object中的计算方法了。

    在String类中的hashCode是根据String类中包含的字符串获取的,根据哈希算法获取到一个哈希码,那么只要我的字符内容是相等的,我的哈希码也是相同的。eg:
     
    1. public static void main(String[] args) {  
    2. String a ="cx";  
    3. String b = "cx";  
    4. System.out.println(b.hashCode()==a.hashCode());  
    5.     }  
    结果我想大家已经猜到了,true!
     
    2.Integer类中的hashCode和String是一样的,也是根据类中包含的值去生成的哈希码。两个相同大小的integer值,那么它的hashCode也是相等的。eg:
    1. Integer a =11;  
    2.         Integer b = 11;  
    3.         System.out.println(b.hashCode()==a.hashCode());  
    结果还是true!

    9.eclipse中图片读取不到,确定途径配置都是准确的

    :原因可能是重启下eclipse,或者服务器。之后可能就显示出来

    10.spring mvc配置图片显示不出来原因可能之二,没配置静态资源响应servlet,导致静态资源的全部获取都被dispatcherservlet拦截了。

    :今天碰到了一个问题,启动web项目,在某个jsp页面中放了一个img标签,但是图片死活显示不出来,一直报404。我对天发誓路径绝对是正确的。弄了好久,终于找出问题所在了,在sping-mvc.xml配置文件中少写了一行代码。“<mvc:default-servlet-handler />”行代码少写了。有 了<mvc:default-servlet-handler/>  spring会用默认的Servlet来响应静态文件,(DefaultServletHttpRequestHandler在容器启动是会使用主流web容器默认servlet的名称列表自动查找容器的默认servlet。不然的话就不会响应静态文件,就会一直报404.希望对大家有所帮助!

    11.java获得当前项目的根路径

    :从httpServletRequest出发(没有请求的话会抛空指针导常)

    String path=request.getSession().getServletContext().getRealPath("/");

    结果形如: F: omcat-6.0.36webapps est

    注意:request.getContextPath()获得得路径是项目名称路径,即保证在当前项目下。如request.getContextPath()结果的test

    request.getSession().getServletContext().getRealPath("/");结果形如F: omcat-6.0.36webapps est

    12.java创建文件,比如图片,txt,等各种类型文件

    File f1 =new File("c:\abc\1.txt");只需要传入文件的相应后缀名即可,就可以创建相应文件。

    因为任何文件的内容都是以二进制流形式发送的。所以不需要管不同文件怎么传输,只需要获得获得文件名和问价后缀名。

    File[] listFiles(FilenameFilter filter)获得该文件下所有文件。

  • 相关阅读:
    Android 3D滑动菜单完全解析,实现推拉门式的立体特效
    2013年9月25日参加耐特菲姆(北京)玉米滴灌培训小结
    日积月累:ProguardGui进行jar包代码混淆
    CSS3之渐变Gradient
    poj 3182 The Grove
    qrcodeJS生成二维码
    样式优先级
    git流程及操作
    js data日期初始化的5种方法 [转]
    转 jQuery中的$.extend方法来扩展JSON对象
  • 原文地址:https://www.cnblogs.com/panxuejun/p/5859554.html
Copyright © 2020-2023  润新知