问题总结

1、可以对传入参数指定参数名

1 @RequestParam String inputStr 

2 // 下面的对传入参数指定为aa,如果前端不传aa参数名,会报错 

3 @RequestParam(value="aa") String inputStr 

2、可以通过required=false或者true来要求@RequestParam配置的前端参数是否一定要传 

1 // required=false表示不传的话,会给参数赋值为null,required=true就是必须要有 

2 @RequestMapping("testRequestParam")   

3     public String filesUpload(@RequestParam(value="aa", required=true) String inputStr, HttpServletRequest request)

3、如果@requestParam注解的参数是int类型,并且required=false,此时如果不传参数的话,会报错。原因是,required=false时,不传参数的话,会给参数赋值null,这样就会把null赋值给了int,因此会报错。

1 // required=false表示不传的话,会给参数赋值为null,required=true就是必须要有 

2 @RequestMapping("testRequestParam")   

3 public String filesUpload(@RequestParam(value="aa", required=false) int inputStr, HttpServletRequest request)

4 若是前端页面不传参的话,此处就会报错。当然可以用Integer代替int

 

hibernate中@Entity和@Table的区别:
@Entity说明这个class是实体类,并且使用默认的orm规则,即class名即数据库表中表名,class字段名即表中的字段名
如果想改变这种默认的orm规则,就要使用@Table来改变class名与数据库中表名的映射规则,@Column来改变class中字段名与db中表的字段名的映射规则@Entity注释指名这是一个实体Bean,@Table注释指定了Entity所要映射带数据库表,其中@Table.name()用来指定映射表的表名。如果缺省@Table注释,系统默认采用类名作为映射表的表名。实体Bean的每个实例代表数据表中的一行数据,行中的一列对应实例中的一个属性。

 StringUtils中 isNotEmpty 和isNotBlank的区别

isNotEmpty(str)等价于 str != null && str.length > 0
isNotBlank(str) 等价于 str != null && str.length > 0 && str.trim().length > 0

警告信息

 @SuppressWarnings("unchecked")

告诉编译器忽略 unchecked 警告信息,如使用List,ArrayList等未进行参数化产生的警告信息。

·  @SuppressWarnings("serial")

如果编译器出现这样的警告信息:The serializable class WmailCalendar does notdeclare a static final serialVersionUID field of type long
      使用这个注释将警告信息去掉。

·  @SuppressWarnings("deprecation")

如果使用了使用@Deprecated注释的方法,编译器将出现警告信息。
      使用这个注释将警告信息去掉。

·  @SuppressWarnings("unchecked", "deprecation")

告诉编译器同时忽略unchecked和deprecation的警告信息。

 

   字节流

(1)InputStream(输入流) :表示字节输入流的所有类的超类,常用方法有:

                 available() :获取总字节数,获取缓存区中的字节个数

                 close():负责释放IO资源,关闭流操作.

                 mark():在输入输出流的字节位置上设标记,为后面reset反复读取该段字节做准备.

                 reset():将流的操作重新定位

                 markSupported():用于判断mark方法或reset方法是否可用.

                 int read():用于读取一个字节信息:返回值是读取到的字节,若读到文件末尾,则返回-1.

                 int read(byte[] b):将字节读入到byte[]数组中:返回值是读取到的字节数,若读到文件末尾,则返回-1.(将字节读取到byte[]数组中第off位开始之后的位置,读取长度为len个字节)

(2)OutputStream:表示输出字节流的所有类的超类,常用方法有:

                 close():关闭流

                 flush():将缓存中的字节,清空输出.

                 write(byte[] b):将字节数组中的内容输出

                 write(int b):将单个字节输出.

                 write(byte[] b,intoff,int len):将字节数组中从off开始的信息输出,共输出len个字节.

(3)FileInputStream extends InputStream --(文件输入流)

(4)FileOutputStreamextends OutputStream --(文件输出流),构造方法:FileOutputStream(Stringname,boolean append),其中append为ture时:追加内容到文件尾部.

(5)FilterInputStream:输入过滤流,负责在其他流基础上扩展新的功能

(6)FilterOutputStream:输出过滤流,负责在其他基础上扩展新的功能.

(7)BufferedInputStream:为流操作提供字节缓存,减少直接申请的IO读取的次数;实现原理是在内存中创建了字节数组,缓存字节信息.

(8)BufferedOutputStream :为流操作提供字节缓存,减少直接申请IO写出的次数.

(9)DataInputStream:以java基本数据类型的格式读取信息.

(10)DataOutputStream :以java基本数据类型的格式输出信息.

(11)ObectInputStream:对象流输入,可以将对象信息整体读入.(注意:对象必须实现java.io.Serializable可序列化)

(12)ObjectOutputStream:对象流输出,可以将对象信息整体输出(注意:对象必须实现java.io.Serializable可序列化).

             注意:对象流使用的场景是大型数据的缓存,缓存一般会放在内存中。把数据量较大,且交互次数较低的数据放到文件中保存,再从文件中将数据还原内存;或者放在分布式系统(通过网络通信);如:发送远程调用的请求信息,远程调用的处理结果.

(13)压缩流(基于字节流),API:java.util.zip.*包下的类,是封装基于ZIP标准进行无损压缩的API

            ZipOutputStream:基于zip格式生成压缩文件,方法:putNextEntry(),closeEntry()

            ZipInputStream:读取ZIP文件内容.可以理解wie解压缩.

            ZipEntry:在压缩内容中代表一项压缩条目(压缩条目是一个独立的信息存储单元,一般用于将某一个文件的内容单独存储起来).

 2.字符流

(1)Reader:表示字符输入流的所有类的超类,常用方法有:read()、close()。

(2)Writer:表示字符输出流的所有类的超类,常用方法有:write()、flush()、close()。

(3)BufferedReader/BufferedWriter:为流操作提供字符缓存,减少直接申请的IO读取/写入的次数。

拓展:File :系统上一个文件资源,包括文件(*.txt、*.exe、*.doc等)和文件夹(用于组织和存放其他文件信息);作用:

  • 获取文件夹的子文件信息—listFile()
  • 获取文件的属性,如getName() –获取文件的名字.
  • 判断是否为文件目录—isDirectory()返回结果是ture为目录,false为其他内容.
    • 判断是否为文件—isFile()返回结果是ture为文件,false为其他内容.还可以修改文件和删除文件.
 

 

猜你喜欢

转载自www.cnblogs.com/gaojt/p/9056340.html