发表于: 2016-03-12 22:57:25
1 4367
【操作过程】
1.写第一个REST风格的接口(只是为了实现教程上的那个接口案例)
1.1 在caojunqi.ITtask_2_2.controller中,建立一个class,名称为CurDateTimeController。
1.2 配置成功。通过tomcat部署后显示成功。
2.mybatis数据层的实现
2.1 在mysql上新建表student_3,命令为:create table student_3 (id int auto_increment primary key,name varchar(20),age int,profession varchar(500),create_at BIGINT,update_at BIGINT);
2.2 在mysql中插入一条数据,命令为:insert into student_3(name,age,profession,create_at,update_at) values("caojunqi",24,"C#",unix_timestamp(now())*1000,unix_timestamp(now())*1000);
2.3 在src/main/java/caojunqi/ITtask_2_2/models下新建类Student.java。
2.4 在src/main/java/caojunqi/ITtask_2_2/dao下编制myBatis的SQL映射文件StudentMapper.xml。
2.5 在src/main/java/caojunqi/ITtask_2_2/dao下构建接口StudentMapper.java。
3.在Eclipse上配置Jetty
3.1 在Eclipse上安装Jetty插件,方法Help-->Eclipse Marketplace,在Find后面的框中输入jetty,选择第一项进行install即可。
3.2 在项目的pom.xml文件中添加上jetty配置代码:
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
</plugin>
3.3 下载jetty-distribution-9.3.7.v20160115.tar.gz。将其解压到eclipse目录下,终端命令为:sudo tar zxvf /home/caojunqi/下载/jetty-distribution-9.3.7.v20160115.tar.gz -C /usr/local/eclipse/eclipse;重命名文件夹,终端命令为:sudo mv /usr/local/eclipse/eclipse/jetty-distribution-9.3.7.v20160115 /usr/local/eclipse/eclipse/jetty。
【知识总结】
1.Map数据类型:Map集合用来存放键值对。
2.在java中,Map是一个接口,HashMap是一个实现了Map接口的类。
3.@RequestMapping注解:RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。
4.@RequestBody注解:该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对象上;再把HttpMessageConverter返回的对象数据绑定到 controller中方法的参数上。
5.@ResponseBody注解:该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。
6.在操作步骤2.3中,需要使Student.java可序列化,关于序列化的一些知识:
6.1 概念:序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。
6.2 用途:假如你现在做一个项目,项目是分工合作的,并且你和其他小组成员不在同一个城市,那么你要如何把你写的那些类给其他小组成员呢?这个时候就要用到序列化了,简单的说:序列化就是将内存中的类或者对象(你写的类都是存储在内存中的)变成可以存储到存储媒介中的流,你将类序列化成流之后可以通过互联网传输给别人,你也可以反序列化将别人的序列化流转换成内存中的对象。
6.3 实现:将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,implements Serializable只是为了标注该对象是可被序列化的,然后使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流。
6.4 更多序列化的内容,参考链接:http://zhidao.baidu.com/question/277515269.html?qbl=relate_question_1&word=java%B6%D4%CF%F3%CA%B5%CC%E5%C0%E0%CE%AA%CA%B2%C3%B4%D0%E8%D2%AA%C4%DC%D0%F2%C1%D0%BB%AF
6.5 在序列化时,需要用到serialVersionUID,其作用是:在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体(类)的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常。更多内容,参考链接:http://www.cnblogs.com/guanghuiqq/archive/2012/07/18/2597036.html
6.6 serialVersionUID的默认值是1L,1L表示1是长整型,如果是1f 表示是float型。L表示long,long占用8个字节,表示范围:-9223372036854775808 ~ 9223372036854775807,1l就是1。一个字节是8位,long一共就是64位,9223372036854775808是2的63次方,还有一位用来表示符号。
7.在操作步骤2.3中构造Student.java时,可以用Eclipse自动生成一些东西:
7.1 自动生成类中各属性的get/set:光标选中属性,右键-->Source-->Generate getters and setters。
7.2 生成代理方法:光标选中属性,右键-->Source-->Generate Delegate Methods,就是可以把一些父类的简单的方法都生成。
7.3 生成toString()方法:光标选中属性,右键-->Source-->Generate toString(),可以生成一个toString()方法,利用这个方法可以快速查看类中各属性的值。
7.4 构建全字段构造函数:光标选中属性,右键-->Source-->Generate Constructor using Fields。
7.5 构建默认构造函数: 光标选中属性,右键-->Source-->Generate Constructor from Superclass。这样生成的构造函数中会有一个super(),作用参看:http://zhidao.baidu.com/link?url=MWgIp5vFMKvyravf38vpSIovk0coLcUtQo4lk7HpsxA6mSevYzxB7ALciyM76_H_MHf6tbK_gQ2x-QR-aSs27q
8.在操作步骤2.4中,可以返回两个返回值:resultMap和resultType,关于resultMap和resultType的区别:如果只是返回一个值,比如说String ,或者是int,那你直接用resultType就行了;但是如果是返回一个复杂的对象,就必须定义好这个对象的resultMap的resultmap,而关于这个resultmap的定义,是在刚开始的<resultMap>里面定义好的。
9.在操作步骤2.5中,需要引入java.util.List,问题是它和java.awt.List有什么区别:java.util.*与java.awt.*都是java的标准库包,其中*表示java.util和java.awt包里的所有类。 她们的不同之处在于java.util.*包含的是一些工具类,如集合类中List、Map、HashMap、Set等,而java.awt.*则封装的是和图形绘制相关的类,如点Point、线Line等。用到相应包里的类时,就会相应import相应的包。所以可以判断,画图时才会用到java.awt.*。
【出现的问题(已解决)】
【出现的问题(未解决)】
1.Jetty尝试各种方法安装,未果,明天要接着安。
2.需要了解JSON的相关内容。
【疑问】
大道且漫漫 咱一步一步走完
宛如那棋谱 总得一步步参
评论