javaweb复习总结全.docx

上传人:b****1 文档编号:15107478 上传时间:2023-06-30 格式:DOCX 页数:17 大小:173.50KB
下载 相关 举报
javaweb复习总结全.docx_第1页
第1页 / 共17页
javaweb复习总结全.docx_第2页
第2页 / 共17页
javaweb复习总结全.docx_第3页
第3页 / 共17页
javaweb复习总结全.docx_第4页
第4页 / 共17页
javaweb复习总结全.docx_第5页
第5页 / 共17页
javaweb复习总结全.docx_第6页
第6页 / 共17页
javaweb复习总结全.docx_第7页
第7页 / 共17页
javaweb复习总结全.docx_第8页
第8页 / 共17页
javaweb复习总结全.docx_第9页
第9页 / 共17页
javaweb复习总结全.docx_第10页
第10页 / 共17页
javaweb复习总结全.docx_第11页
第11页 / 共17页
javaweb复习总结全.docx_第12页
第12页 / 共17页
javaweb复习总结全.docx_第13页
第13页 / 共17页
javaweb复习总结全.docx_第14页
第14页 / 共17页
javaweb复习总结全.docx_第15页
第15页 / 共17页
javaweb复习总结全.docx_第16页
第16页 / 共17页
javaweb复习总结全.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

javaweb复习总结全.docx

《javaweb复习总结全.docx》由会员分享,可在线阅读,更多相关《javaweb复习总结全.docx(17页珍藏版)》请在冰点文库上搜索。

javaweb复习总结全.docx

javaweb复习总结全

javaweb第一天

1、junit测试框架

Arrsert.assertEquals(longexecpted,longactual)测试两个long类型的值execpted与actual是否相等,相等返回true,否则返回false;

2、泛型类型的转换

1、泛型的实际类型参数不具备继承关系、

Listlist=newLinkedList();

Collectionnums=list;

下面这一行代码会报错:

不能不能进行换。

因为List集合中装的是Integer类型,而Collection中装的Number类型,泛型的实际类型参数不具备继承关系。

打个比方:

List和Collection都是集合,是容器,是用来装东西的,所以将他们比喻成两个不同的房子,List房子中住的是人,Collection房子中住的是猪,将住人的List房子赋给住猪的房子,将人变成猪,这是不可能的,所以泛型的实际类型参数不具备继承关系

 

2、泛型的作用:

jdk5.0之前,将对象保存到集合中,对象会失去他自己特有的信息,在从集合中取出该集合时,程序员必须手动的强制类型转换,这样不免在给程序带来安全性的问题,但是泛型的出现使得程序员在编码时可以限制集合中的处理类型,从而把运行时的可能发生的问题,转变为编译时的问题,以此提高程序的可读性和安全性。

结论:

通过限制集合中的处理类型,使得程序更具可读性和安全性

3、自定义泛型方法

publicvoiddoMethod(Tt);

注意:

在泛型方法中只有对象类型才能作为实际参数

/*编写一个泛形方法,实现指定位置上数组元素的交换。

*/

publicvoidchange(T[]arr,intindex1,intindex2){

Ttemp=arr[index1];

arr[index1]=arr[index2];

arr[index2]=temp;

}

/*编写一个泛形方法,接收一个任意数组,并颠倒数组中的所有元素*/

publicvoidchange(T[]arr){

for(inti=0;i

Ttemp=arr[i];

arr[i]=arr[arr.length-1-i];

arr[arr.length-1-i]=temp;

}

}

另外一方法:

数组顺序反转,使用Collections.reverseOrder()

 

/*使用自定义泛型封装formbean*/

publicTrequest2Bean(HttpServletRequestrequest,ClassbeanClass)throwsException{

Tbean=beanClass.newInstance();

Enumerationparams=request.getParameterNames();

while(params.hasMoreElements()){

Stringname=(String)params.nextElement();

Stringvalue=request.getParameter(name);

BeanUtils.setProperty(bean,name,value);

}

returnbean;

}

 

3、枚举类

1、java中声明的枚举类,都是java.lang.Enum的实例

2、枚举类中的构造方法默认只能是private的,

为什么枚举类中的构造方法默认只能是private呢?

答:

因为使用枚举给变量赋值时,他必须是规定的范围的枚举值,既然是规定范围的,那么就不能让外界new出一个对象。

3、枚举类中声明的每一个枚举值都是枚举类的一个实例对象

publicclassEnumTest{

publicstaticvoidmain(String[]args){

WeekDayweekday=WeekDay.MON;

System.out.println(weekday);

}

//内部类与成员变量平级,他的修饰可以是publicprotected,friendlyprivate

publicenumWeekDay{

MON

(1){},//枚举列表要写最前面否则会报错

SUN(7){};

privateWeekDay(){};

privateintday;//定义一成员变量表示第几天

privateWeekDay(intday){

this.day=day;

}

publicStringtoString(){

if(this.day==1){

return"星期一";

}elseif(this.day==7){

return"星期天";

}

 

}

returnnull;

}

}

}

 

4、枚举中常用的方法:

1、name()获得枚举对象的名字

2、ordinal()获得枚举的下标

3、valueof(Stringname)将一字符串转变成枚举

4、values()返回枚举数组,用于遍历枚举数组

4、反射

1、反射就是将java的各个成分映射成java类。

使用反射需要使用到以下一个API:

Class、onstructor、Field、Method

2、使用发射的要领就是需要先得到类的字节码对象,得到了字节码对象就得到了类身上的所有的一切,有了字节码,利用反射就可以操作类,给类的成员变量赋值,调用类的方法等。

3、使用反射得到泛型的实际参数类型,比如:

List需要获得Date的实际类型

publicclassBaseEnhance2{

publicstaticvoidmain(String[]args)throwsException{

Classclazz=BaseEnhance2.class;

Methodmethod=clazz.getMethod("add",List.class,Vector.class);

Typetype=method.getGenericParameterTypes()[0];

ParameterizedTypeparameterizedType=(ParameterizedType)type;

System.out.println(parameterizedType.getActualTypeArguments()[0]);

}

publicvoidadd(Listlist){

}

}

 

4、如何得到字节码:

1、类名.class2、对象名.class3、Class.forName(“包名.类名”);

5、Class.forName()方法的作用:

他首先查看内存之中有没有某个类的字节码,若没有,则创建一份字节码,若有,则加载字节码到内存之中,并封装成Class对象

5、内省---javabean

1、什么是javabean?

答:

javabean就是遵循一定编写规则的特殊java类,规则有:

1、必须提供一个公共的午餐的构造方法

2、必须具有的属性都是private的

3、必须提供get和set方法供外界操作和访问该javabean的属性,方法名一定是set和get后要紧跟属性名,属性名的第一个字母要大些

2、使用BeanUtils工具包操作javabean

1、常用的方法:

1、BeanUtils.popluate(Objectbean,Mapproperties)

2、BeanUtils.setPoperty(Objectbean,Stringname,Objectvalue)

3、BeanUtils.copybean(Objectdest,Objectsrc)

2、使用BeanUtils时,有些复杂类型,BeanUtils不能自动将值设置到javabean中,必须手动注册一个转换器

ConvertUtils.register(Converterconverter,Classclazz)

converter:

表示注册的自定义的类型转换器

clazz:

就是要将别类型转换成clazz字节码代表的类的类型

//定义一个转换成Date类型的转换器

publicstaticvoidcopybean(Objectdest,Objectsrc){

try{

ConvertUtils.register(newConverter(){

publicObjectconvert(Classtype,Objectvalue){

Stringstr=(String)value;

if(str==null||str.trim().equals("")){

returnnull;

}

DateFormatdf=newSimpleDateFormat("yyyy-MM-dd");

try{

returndf.parse(str);

}catch(ParseExceptione){

thrownewRuntimeException(e);

}

}

},Date.class);

BeanUtils.copyProperties(dest,src);

}catch(Exceptione){

thrownewRuntimeException(e);

}

}

 

细节:

1、Math.random()生成0-1的小数,包含0,不包含1

2、在拆箱,装箱方法调用时,原则:

使用jdk5.0与jdk1.4的结果相同

3、通过查看API知道,使用反射,若是调用getConstructor()方法不能生成一个对象,因为不是public的,getConstructor()方法只能是针对public修饰的若是硬要生成一个对象,那么应该是使用getDeclaredConstructor()方法。

javaweb第二天

1、xml

1、什么是xml?

答:

xml是可扩展标记语言

2、xml有那写特点?

答:

xml类似于html,但是xml中没有预定义的标签,最初设计是用来传输数据的。

3、xml的应用在哪里?

答:

1、存储和传输复杂关系模型数据2、作为配置文件

2、xml文档声明

xmlversion="1.0"encoding=“utf-8”standalone=”yes”?

>

encoding:

表示文档编码

standalone:

说明文档是否独立(文档如果依赖别的文档就是不独立)

3、XML元素指XML文件中出现的标签

4、对于XML标签中出现的所有空格和换行,XML解析程序都会当作标签内容进行处理

5、CDATA区

在编写xml时,有些内容不想让解析程序执行,须当做原始内容处理,那么将该数据放大CDATA区中

[CDATA[数据]]>

例如:

[CDATA[

]]>

6、DTD约束

1、xml文档为什么要引入约束?

答:

因为xml是可扩展的标记语言,在xml中没有预定义标签,那么程序员就可以随意书写xml的标签,这样在开发中就没有统一使用标准,这样的就会造成xml文档中的标签混乱。

所以引入约束,指定xml中可以使用那些标签,不可以使用那些标签。

这样就统一了使用标准。

2、DTD与xml三种关联的方式

DOCTYPE书架[

ELEMENT书架(书+)>

ELEMENT书(书名,作者,售价)>

ELEMENT书名(#PCDATA)>

ELEMENT作者(#PCDATA)>

ELEMENT售价(#PCDATA)>

]>

1、使用内部DTD

 

2、使用外部DTD

若关联的dtd文件在本地则使用:

DOCTYPE根元素SYSTEM“dtd文件的URL”>

3、使用公共DTD

若关联的是一个公共的dtd文件则使用:

DOCTYPE根元素PUBLIC“dtd名称”“dtd文件的URL”>

3、元素(Element)的定义

 

4、元素(Element)内容的定义

5、属性(ATTLIST)定义

属性类型中常用有:

CDATA,表示属性值为字符型数据

属性的约束有四种:

#REQUIRED表示属性是必须的,#IMPLIED表示可以忽略的,#FIXED表示只能是规定的值,Defaultvalue表示默认值

7、Schema约束

1、schema的使用例子

schema_view_books.xsd

xmlversion="1.0"encoding="UTF-8"standalone="no"?

>

//www.w3.org/2001/XMLSchema"

xmlns:

tns="itcast"

elementFormDefault="qualified"

targetNamespace="itcast">

 

schema_view_books.xml

xmlversion="1.0"encoding="UTF-8"?

>

xmlns:

xsi="http:

//www.w3.org/2001/XMLSchema-instance"

xsi:

schemaLocation="itcastschema_view_books.xsd">

zzz

xxx

1

 

2、schema文件不用指定约束他的约束文档在哪

答:

schema也是一个xml文档,为什么使用schema文档不用指定他的约束文档在哪里?

因为他所使用的约束文档是一个著名的约束文档,不用指定。

3、在使用schmea约束文档时,schmea文件中的targetNamespace与要约束的xml文档中声明的命名空间要相同,因为targetNamspace是自己定义的元素来自哪个命名空间

8、DOM与SAX解析xml文档的原理与优缺点?

DOM解析xml的原理:

将xml一次性装在到内存之中,以树状形式存贮,占用的内存比较大

优点:

对xml的crud速度快

缺点:

不合适解析大的xml文档

SAX解析xml原理:

逐行解析xml

优点:

适合解析比较大的文件

缺点:

不适合对xml文件的crud

9、在工程中文件的位置,路径问题?

?

?

?

答:

myeclipse下默认是从工程名下加载

10、在DOM解析中,所有的元素、属性、文本都是节点,都是Node的子类

11、DTD的数据类型

PCDATA是元素的标签体的数据类型

CDATA是属性的数据的类型

javaweb第四天

1、web通信详解

web系统通信是这样的:

客户在浏览器地址栏中输入要访问的URL地址,这时操作系统会查找C:

\WINDOW\system32\drivers\etc下的hosts文件,查看在host文件中是否注册了域名,在host文件中是ip与域名是映射关系,如果在host文件中没有查找到要访问的域名,这时操作系统会将这个域名发送到DNS服务器中,进行域名解析,解析完之后得到目标服务器的ip地址,然后浏览器再与目标服务器建立连接,通过HTTP协议将要请求的数据发送给目标服务器,服务器接收到请求,然后做出相应的处理,将相应结果发送给客户浏览器显示

 

2、配置虚拟目录

在server.xml中的标签中配置标签

例如:

\itcast”>

3、配置虚拟主机

配置虚拟主机

\itcast">将映射在本地

1、配置虚拟主机时,appBase的值是相对路径,也可以是绝对路径,相对路径是相对tomcat安装目录的,默认值webapps,所以可以这样配置:

配置完之后必须在window的host文件中,进行域名注册,127.0.0.1

 

4、配置虚拟主机案例

输入不要访问XX,而是访问本地的首页index.jsp

1、配置虚拟主机

2、在main文件夹中新建一个文件夹WEB-INF,再在里面新建一个web.xml,在web.xml中配置欢迎页面

index.html

3、在tomcat的web.xml中修改端口号,改为80

4、在hosts文件中注册域名让他指向127.0.01

完成以上步骤,就可以是实现在浏览器输入访问本地文件

 

5、

 

javaweb第五天

1、servlet的生命周期?

当用户访问servlet时,服务器会首先会查看在内存中是否已经存在该servlet的实例,若存在那么就直接使用该servlet响应客户端的请求,若是不存在,则创建该servlet实例,并紧接着调用init方法初始化该servlet实例,然后调用service方法响应用户请求,当服务器被关闭或者web应用被卸载时servlet引擎调用destroy方法,摧毁servlet实例对象。

倘若用户再次请求该servlet,服务器将会使用刚才已经创建好了的servlet实例对象,响应客户端的请求,因为在servlet是单实例的的,在服务器的内存之中只有一个servlet实例对象,所以servlet的init方法也只会被调用一次。

这里小小的注意一点就是:

servlet并不一定在用户第一次访问时被创建,你可以在web.xml中配置load-up-startup参数。

让tomcat启动时就创建servlet对象。

 

2、线程与进程的区别?

进程是有线程组成,一个进程包含多个线程

进程是资源(内存)管理的最小单位

线程是程序执行的最小单位

Java多线程执行过程:

JVM启动时,向操作系统申请一块内存,然后线程启动时,向JVM申请内存

 

3、缺省servlet

当servlet的映射路径为“/”时,那么该servlet就成了当前web应用下的缺省servlet,

但访问tomcat中的静态页面或图片时,实际上访问的就是tomcat中的缺省的servlet

org.apache.catalina.servlets.DefaultServlet为tomcat中缺省servlet

4、在servlet初始化时,建议不要覆盖init(ServletConfigconfig),只需覆盖无参的init()

当servlet配置了初始化参数之后,web容器在创建servlet实例对象时,会自动将这些初始化参数封装到ServletConfig对象中,并在init(ServletConfigconfig)方法传递给servlet,程序员就可以通过ServletConfig对象获得servlet的初始化信息。

@Override

publicvoidinit(ServletConfigconfig)throwsServletException{

Stringvalue=config.getInitParameter("charset");

System.out.println("value:

"+value);

}

倘若覆盖

 

5、获得ServletContext对象两种方法:

servletConfig.getServletContext()

this.getServletContext()

6、web工程中读取文件的两种方法

1、文件系统路径(使用ServletContext)

ServletCont

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 教育学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2