发表于: 2018-01-09 21:28:34
1 587
今日完成
1.调试任务5 的代码,解决静态资源不能访问的问题。
(1)查看tomcat的log日志,得到信息
(2)当静态资源不能访问的时候,出现400错误,说明tomcat容器不能找到对应的路劲。查看代码,果然是代码的路劲写错了。
${pageContext.request.contextPath}
写成了
${pageContext.request.contentType}
太低级的错误了。
解决后,在放在服务器上就没有问题了。
2.小课堂
(1)整理了一下session和cookie的区别以及应用场所。
(2)分享了一下webutil工具的使用,jwt的使用。
(3)知道了sessionid是怎么生成了。
sessionid是一个会话的key,浏览器第一次访问服务器会在服务器端生成一个session,有一个sessionid和它对应。tomcat生成的sessionid叫做jsessionid。
session在访问tomcat服务器HttpServletRequest的getSession(true)的时候创建,tomcat的ManagerBase类提供创建sessionid的方法:随机数+时间+jvmid;
存储在服务器的内存中,tomcat的StandardManager类将session存储在内存中,也可以持久化到file,数据库,memcache,redis等。客户端只保存sessionid到cookie中,而不会保存session,session销毁只能通过invalidate或超时,关掉浏览器并不会关闭session。
3.整理任务知识点,整理代码上传服务器。
4.学习了一下JDK8的新特性,可以在接口中写默认方法
(1)
public interface JDK8Test {
//定义抽象方法
void show();
//定义默认方法
default void defaultprint() {
System.out.println("这是默认方法");
}
static void staticprint() {
System.out.println("这是静态的方法");
}
}
(2)实现类
实现类中默认方法与抽象的方法都可以被重写。
(3)测试代码
public class demo1 {
public static void main(String[] args) {
JDK8Test.staticprint();
testimpl xx = new testimpl();
xx.defaultprint();
xx.defaultprint();
xx.show();
}
}
可以看到,可以直接调用接口中的静态方法,而抽象方法与默认方法只能通过实现类来完成。
5.泛型
泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。
泛型的本质是为了参数化类型(在不创建新的类型的情况下,通过泛型指定的不同类型来控制形参具体限制的类型)。也就是说在泛型使用过程中,操作的数据类型被指定为一个参数,这种参数类型可以用在类、接口和方法中,分别被称为泛型类、泛型接口、泛型方法。
(1)为什么要使用泛型
看这段代码因为ArrayList可以存放任意类型,例子中添加了一个String类型,添加了一个Integer类型,再使用时都以String的方式使用,因此程序崩溃了。为了解决类似这样的问题(在编译阶段就可以解决),泛型应运而生。
我们将第一行声明初始化list的代码更改一下,编译器会在编译阶段就能够帮我们发现类似这样的问题。
加入泛型之后,这段代码,编译的时候就会报错了。
通过上面的例子可以证明,在编译之后程序会采取去泛型化的措施。也就是说Java中的泛型,只在编译阶段有效。在编译过程中,正确检验泛型结果后,会将泛型的相关信息擦出,并且在对象进入和离开方法的边界处添加类型检查和类型转换的方法。也就是说,泛型信息不会进入到运行时阶段。对此总结成一句话:泛型类型在逻辑上看以看成是多个不同的类型,实际上都是相同的基本类型。
明日计划
1.开始任务6
2.集合基础知识
遇到问题
无
收获
1,完成任务5
评论