实现可序列化的方法:实现java.io.Serializable接口。
7、代码示例:如何读写对象流
//读
try{
Stringstr="123";
FileOutputStreamf=newFileOutputStream("test.txt");
ObjectOutputStreams=newObjectOutputStream(f);
s.writeObject(str);
f.close();
}catch(Exceptione){
e.printStackTrace();
}
//写
FileInputStreamf=newFileInputStream("test.txt");
ObjectInputStreams=newObjectInputStream(f);
str=(String)s.readObject();
8、简述File类的基本功能
处理文件和获取文件信息;文件或文件夹的管理。
概括一句话就是:除了读写文件内容其他的都可以做。
9、代码示例:如何使用随机文件读写类来读写文件内容
RW表示文件时可读写的
读:
RandomAccessFilef=newRandomAccessFile("test.txt","rw");
longlen=0L;
longallLen=f.length();
inti=0;
while(len Strings=f.readLine(); if(i>0){ col.add(s); i++; //游标 len=f.getFilePointer(); }catch(Exceptionerr){ err.printStackTrace(); 写: StringBufferbuffer=newStringBuffer(""); Iteratorit=col.iterator(); while(it.hasNext()){ buffer.append(it.next()+""); f.writeUTF(buffer.toString()); 10、代码示例:如何使用流的基本接口来读写文件内容 DataInputStreamin= newDataInputStream( newBufferedInputStream( newFileInputStream("Test.java") ) ); StringcurrentLine=null; while((currentLine=in.readLine())!=null){ System.out.println(currentLine); }catch(IOExceptione){ System.err.println("Error:"+e); 多线程 1、什么是线程 轻量级的进程 2、线程的三个部分是 处理机 代码 数据 3、为什么使用多线程 使UI响应更快 利用多处理器系统 简化建模 4、代码示例:Java中实现多线程的两种方式,包括如何定义多线程,如何使用多线程 实现Runnable接口 classThread1implementsRunnable{ publicvoidrun(){ //run里一般写一个while(true)循环 System.out.println("Runnable"); publicclassTest{ publicstaticvoidmain(String[]a){ Thread1r=newThread1(); Threadt1=newThread(r); Threadt2=newThread(r); t1.start(); t2.start(); 继承Thread classThread2extendsThread{ System.out.println("extends"); Threadt=newThread2(); t.start(); 5、如何实现线程的调度如何暂停一个线程的运行 调度用wait和notify, ---- sleep() 6、什么是线程的优先级 判断哪个线程先执行的级别 7、简述sleep方法和wait方法的功能和区别 wait是让线程挂起 8、什么是守候线程 隐藏在后台持续运行的线程 9、什么是临界资源 指多个线程共享的资源 10、什么是互斥锁,Java中如何实现 用来保证在任一时刻只能有一个线程来访问临界资源的那个标记 在Java中使用 用在对象前面限制一段代码的执行 11、什么是死锁如何避免 如果程序中有多个线程竞争多个资源,就可能会产生死锁。当一个线程等待由另一个线程持有的锁,而后者正在等待已被第一个线程持有的锁时,就会发生死锁。 要避免死锁,应该确保在获取多个锁时,在所有的线程中都以相同的顺序获取锁。尽量少用临界资源。 12、简述wait和notify,notifyAll的使用 被锁定的对象可以调用wait()方法,这将导致当前线程被阻塞并放弃该对象的互斥锁,即解除了wait()方法的当前对象的锁定状态,其他的线程就有机会访问该对象。 notify使等待队列上的一个线程离开阻塞状态 notifyAll使等待队列上的所有线程离开阻塞状态 Socket编程 13、什么是url基本的格式是 统一资源定位器 Http://www.163.com:port 14、简述IP,Port,TCP的基本功能 IP代表网络位置 Port代表端口号 TCP可保证不同厂家生产的计算机能在共同网络环境下运行,解决异构网通信问题,是目前网络通信的基本协议 15、简述Java网络模型的基本功能 描述服务端和客户端的连接过程 16、简述Java网络编程究竟做些什么如何做 1.建立连接 2.准备输出的数据,流式输出 3.流式输入,编程业务需要的格式 4.关闭连接 服务器分配一个端口号。如果客户请求一个连接,服务器使用accept()方法打开socket连接。 客户在host的port端口建立连接。 服务器和客户使用InputStream和OutputStream进行通信。 17、代码示例:基于Socket编程 ServerSockets=newServerSocket(8888); while(true){ Sockets1=s.accept(); OutputStreamos=s1.getOutputStream(); DataOutputStreamdos=newDataOutputStream(os); dos.writeUTF("Hello,"+s1.getInetAddress()+"port#"+s1.getPort()+"bye!"); dos.close(); s1.close(); System.out.println("程序运行出错:"+e); 18、TCP和UDP区别 TCP(传输控制协议)和UDP(用户数据报协议)是传输层协议 TCP是面向连接的可靠数据传输协议,能保证传输内容的完整和准确;数据传输的辅助开销大,效率低 UDP:是无连接的,不可靠地传输协议,不能保证传输内容的完整和准确,对信息的适时要求比较高 设计模式 1、什么是设计模式 就是经过实践验证的用来解决特定环境下特定问题的解决方案。 2、设计模式用来干什么 寻找合适的对象 决定对象的粒度 指定对象的接口 描述对象的实现 运用复用机制 重复使用经过实践验证的正确的,用来解决某一类问题的解决方案来达到减少工作量、提高正确率等目的 3、什么是对象粒度 对象中方法的大小就是粒度 4、基本的Java编程设计应遵循的规则 面向接口编程,优先使用对象组合 5、设计模式的应用范围 所能解决的特定的一类问题中 6、简述什么是单例模式,以及解决的问题,应用的环境,解决的方案,应用时应注意什么 应用环境:需要有一个从中进行全局访问和维护某种类型数据的区域的环境下使用单例模式。 解决方案:保证一个类只有一个类实例存在。 本质:控制实例的数量。 注意:要合理的使用单例,避免单例成为瓶颈。 7、代码示例:单例模式的两种实现方法,并说明优缺点 privatestaticTesttest=newTest(); publicTest(){ publicstaticTestgetInstance(){ returntest; privatestaticTesttest=null; privateTest(){ if(test==null){ test=newTest(); 8、简述什么是工厂模式,以及他解决的问题,应用的环境,解决的方案,模式的本质 利用工厂来解决接口选择的问题的模式。 应用环境:当一个类无法预料要创建哪种类的对象或是一个类需要由子类来指定,创建的对象时,就需要用到工厂模式。 解决方案:定义一个创建对象的类,在类的方法中决定具体实例化哪一个类。 本质:就是根据不同的情况来选择不同的实现类,重在选择。 9、代码示例:工厂模式的实现方法 单独是使用工厂: publicclassFactory{ publicstaticSamplecreator(intwhich){ if(which==1){ returnnewSampleA(); }elseif(which==2) returnnewSampleB(); 工厂+单例: publicclassMyFactory{ publicstaticMyFactoryf=null; publicMyFactory(){ publicstaticMyFactorygetInstance(){ if(f==null){ f=newMyFactory(); publicDBDAOgetDAO(){ returnnewDBDAOImpl(); 10、简述什么是值对象模式,以及他解决的问题,应用的环境,解决的方案,模式的本质 用来把一组数据封装成一个对象的模式 解决方案:使用值对象的时候,可以通过仅仅一次方法调用来取得整个对象,而不是使用多次方法调用以得到对象中每个域的数值 本质:封装数据。 11、代码示例:值对象模式的实现方法 步骤: publicclassUserModel{ privateStringuserId; privateStringuserName; publicvoidsetUserId(Stringid){ this.userId=id; publicStringgetUserId(){ returnuserId; publicvoidsetUserName(Stringname){ this.userName=name; publicStringgetUserName(){ returnuserName; 12、简述什么是DAO模式,以及他解决的问题,应用的环境,解决的方案,模式的本质 数据访问对象 解决问题:根据数据源不同,数据访问也不同。根据存储的类型(关系数据库、面向对象数据库、纯文件等)和供应商实现不同,持久性存储(如数据库)的访问差别也很大。如何对存储层以外的模块屏蔽这些复杂性,以提供统一的调用存储实现。程序的分布式问题 解决方案:将数据访问逻辑抽象为特殊的资源,也就是说将系统资源的接口从其底层访问机制中隔离出来;通过将数据访问的调用打包,数据访问对象可以促进对于不同数据库类型和模式的数据访问。 本质:分层,是系统组件和数据源中间的适配器。(一层屏蔽一种变化) 13、代码示例:DAO模式的实现方法 14、什么是框架框架的优点 框架是能够完成一定功能的半成品 1.优点:完成一定的功能、提供一个精良的应用程序架构 2.框架都是以接口的形式出现 3.应该了解框架完成的功能、框架的API接口、框架的功能是怎么实现的 15、什么是开放-封闭法则(OCP) 可扩展但是不可以更改已有的模块 对扩展是开放的,对修改是封闭 16、什么是替换法则(LSP) 使用指向基类(超类)的引用的函数,必须能够在不知道具体派生类(子类)对象类型的情况下使用。 17、如何综合使用我们学过的设计模式来构建合理的应用程序结构 是采用接口进行隔离,然后同时暴露值对象和工厂类,如果是需要数据存储的功能,又会通过DAO模式去与数据存储层交互。 18、构建常用的合理的Java应用包结构 Ui(表现层) business--factory,ebi,ebo dao--factory,dao,impl awt、swing 1、什么是GUI中的容器什么是GUI中的组件 容器:能包含其他container和其他component的component。 组件:在设计上能实现一定功能的封装体; 2、简述AWT中的Frame、Panel和组件的关系 组件放在Panel上,而多个Panel可以叠加到Frame上,Frame一般只有一个,各个Panel可以互相在Frame上切换 3、简述如何使用一个组件 初始化,加到容器中,注册事件,实现相应的事件 Panelpan=newPanel(); TextFieldtd=newTextField(); td.setText("thisisinaTextField."); pan.add(td); 4、描述一个GUI界面的基本构成 Frame,Panel,组件 Popmenu 5、如何控制外观,如颜色、字体等 可使用setColor(),setFont()方法 例如: Framef=newFrame(); Fontfont=newFont("TimesRoman",Font.PLAIN,14); f.setColor(Color.red); f.setFont(f); 6、什么是布局管理器 用来管理GUI界面中组件的分布情况,负责决定布局方针以及其容器的每一个子组件的大小 7、描述每种布局管理器的基本特点 FlowLayout从左到右分布,排满推到下一行 BorderLayout上下左右中分布 CardLayout卡片式分布 GridLayout网格式分布 XYLayout坐标分布 8、什么是JFC(Java基础类) 是关于GUI组件和服务完整集合, 主要包括5个API: AWT,JavaD,Accessibility,Drag&Drop,Swing 提供了帮助开发人员设计复杂应用程序的一整套应用程序开发包; 9、Swing和AWT的区别 Swing提供了更完整的组件,引入了许多新的特性和能力。SwingAPI是围绕着实现AWT各个部分的API构筑的。 10、什么是双缓冲 在后台进行界面的更新,然后在前台进行界面交换 功能:双缓冲可以改善一个被频繁改变的组件的外观 11、描述GUI的事件机制 事件源:是一个事件的产生者,或产生事件的组件对象 事件处理器:就是一个接收事件、解释事件并处理用户交互的方法。 12、描述Swing应用程序的基本结构 组件定义 初始化界面 各种事件处理方法 各种适配类 13、描述表现层的基本功能 展示数据 人机交互 收集参数、调用逻辑层api 14、描述在开发Swing应用程序中,一般都要写那些代码都写到什么地方 一般要在类的初始化的时候给组件赋值,写在jinit的方法里面 一般要在按扭的事件处理中写收集参数,组织参数,调用业务接口的方法 15、对于GUI组件而言,最主要的方法是哪些 初始化 如何给组件初始化 如何从组件中取值 设计组件的属性 16、如何学习GUI组件的用法 主要学会组件的定义、取值、赋值的方法 类比学习 JavaScript 1、什么是Javascript JavaScript是一种基于对象(Object)和事件驱动(EventDriven)并具有安全性能的脚本语言。 2、Java和Javascript的区别 1、基于对象和面向对象 Java是一种真正的面向对象的语言,即使是开发简单的程序,必须设计对象。 JavaScript是种脚本语言,它可以用来制作与网络无关的,与用户交互作用的复杂软件。它是一种基于对象(ObjectBased)和事件驱动(EventDriver)的编程语言。因而它本身提供了非常丰富的内部对象供设计人员使用。 2、解释和编译 两种语言在其浏览器中所执行的方式不一样。Java的源代码在传递到客户端执行之前,必须经过编译,因而客户端上必须具有相应平台上的仿真器或解释器,它可以通过编译器或解释器实现独立于某个特定的平台编译代码的束缚。 JavaScript是一种解释性编程语言,其源代码在发往客户端执行之前不需经过编译,而是将文本格式的字符代码发送给客户编由浏览器解释执行。 3、强变量和弱变量 两种语言所采取的变量是不一样的。 4、代码格式不一样 Java是一种与HTML无关的格式,必须通过像HTML中引用外媒体那么进行装载,其代码以字节代码的形式保存在独立的文档中。 JavaScript的代码是一种文本字符格式,可以直接嵌入HTML文档中,并且可动态装载。编写HTML文档就像编辑文本文件一样方便。 5、嵌入方式不一样 在HTML文档中,两种编程语言的标识不同,JavaScript使用来标识,而Java使用来标识。 6、静态联编和动态联编 Java采用静态联编,即Java的对象引用必须在编译时的进行,以使编译器能够实现强类型检查。 JavaScript采用动态联编,即JavaScript的对象引用在运行时进行检查,如不经编译则就无法实现对象引用的检查。 3、Javascript的运行环境 具备javascript运行器的 4、如何在web页面加入Javascript,请写出两种方式并示例 或者 5、写出Javascript基本的数据类型 整型 实型 布尔 字符型 空值 特殊字符 6、Javascript中如何定义变量,有何规则 必须是一个有效的变量,即变量以字母开头,中间可以出现数字如test1、text2等。除下划线(-)作为连字符外,变量名称不能有空格、(+)、(-)、(,)或其它符号。 不能使用javascript中的关键字 7、代码示例:Javascript中的if控制语句的结构 if(i>4){ alert(11); 8、代码示例:Javascript中的for、while循环语句的结构 for(vari=0;i<10;i++){ while(i<10){ alert(22); 9、简述break和continue的用法和功能 使用break语句使得循环从For或while中跳出,continue使得跳过循环内剩余的语句而进入下一次循环。 10、Javascript中如何定义类,如何定义属性,如何定义方法,请代码示例 functionQuaryArgItem(){ this.keys=newArray(); this.values=newArray(); QuaryArgItem.prototype.push=function(key,value) { key=(key==null)"":""+key; value=(value==null)"":""+value; this.keys.push(key.toUpperCase()); this.values.push(value); QuaryArgItem是类名 push相当于方法名 使用的时候: a=newQuaryArgItem(); a.push(); 11、Javascript的function如何定义,有何规则 Function方法名(参数,变元){ 方法体; Return表达式; 12、如何触发Javascript的function functiontest(){ 13、说出下列String对象的方法的功能和用法:toLowerCase、indexOf、subString、toUpperCase toLowerCase将指定字符串转化为小写 indexOf判断是否包含某一字符或字符串 substring从字符串中取一段并返回 toUpperCase将指定字符串转化为大写 14、Javascript的日期对象是如何初始化日期对象 date=newDate(); 15、说出下列Javascript系统方法的功能和用法:eval、unEscape、escape、parseFloat eval:返回字符串表达式中的值 unEscape:返回字符串ASCI码 escape:返回字符的编码 parseFloat:返回实数 16、Javascript中如何定义数组如何初始化如何取值和赋值 vararrayName=newArray(); FunctionarrayName(size){ This.length=Size; for(varx=;x<=size;x++){ this[x]=0; Returethis; 17、简要描述Javascript中下列内部对象的功能:Navigator、Window、Location、History、Document Navagator:提供有关浏览器的信息 Window:Window对象处于对象层次的最顶层,它提供了处理Navagator窗口的方法和属性 Location:提供了与当前打开的URL一起工作的方法和属性,是一个静态的对象 History:提供了与历史清单有关的信息 Document:包含与文档元素一起工作的对象,它将这些元素封装起来供编程人员使用 18、如何利用Document来从页面上取值和赋值 取值:vara=document.all("text1").value; 19、简要描述Javascript对象层次结构 window--document--组件 20、说出下列常见事件什么时候被触发:onFocus、onBlur、onSelect、onChange、onClick onBlur:当失去输入焦点后产生该事件 onFocus:当输入获得焦点后,产生该文件 onchange:当文字值改变时,产生该事件 onselect:当文字加亮后,产生该事件 onClick:当组件被点击时产生的事件 21、代码示例:使用Frame作一个基本的三分页面 22、框架如何载入页面 23、如何从框架中的一个页面访问另一个页面中的组件 varvalue=parent.right.document.all("text1"); CSS 1、如何把样式表加入到html页面中 在文档中用定义; 使用元素链接到外部的样式表单。; 2、如何链接元素和样式,请写出4种方法,并代码示例 1、直接连接 2、class连接 3、id连接 4、元素的style="" Xml 1、XML有几种解析方法,有什么区别 有XMLDOM解析、SAX解析、StAX解析 XMLDOM:(XMLDocumentObjectModel)处理大型文件时其性能下降的非常厉害。这个问题是由DOM的树结构所造成的,这种结构占用的内存较多,而且DOM必须在解析文件之前把整个文档装入内存,适合对XML的随机访问; SAX:(SimpleAPIforXML)不同于DOM,SAX是事件驱动型的XML解析方式。它顺序读取XML文件,不需要一次全部装载整个文件。当遇到像文件开头,文档结束,或者标签开头与标签结束时,它会触发一个事件,用户通过在其回调事件中写入处理代码来处理XML文件,适合对XML的顺序访问; StAX:(StreamingAPIforXML)与其他方法的区别就在于应用程序能够把XML作为一个事件流来处理,无论从性能还是可用性上都优于其他方法; DOM解析代码如下: importjava.io.*; importjava.util.*; importjavax.xml.parsers.*; importjavax.xml.transform.*; importjavax.xml.transform.dom.*; importjavax.xml.transform.stream.*; importorg.w3c.dom.*; publicclassFuxi{ publicFuxi(){} publicvoidrunXml(){ Filef=newFile("f:/test/xmltest/student.xml"); //首先创建一个documentbuilderfoctory的工厂 DocumentBuilderFactorydbf=DocumentBuilderFactory.newInstance(); //利用工厂来创建documengbuilder DocumentBuilderdb=dbf.newDocumentBuilder(); //利用db的parse方法来解析xml文件 Documentdoc=db.parse(f); //将读出来的文件格式化 doc.normalize(); //定义一个nodelist数组来存放xml文件中的节点(标签) NodeListstudents=doc.getElementsByTagName("student"); //从xml文件中读取数据 for(inti=0;i //定义一个元素 Elementstudent=(Element)students.item(i); System.out.println("stu_id:"+student.getElementsByTagName("stu_id").item(0).getFirstChild().getNodeValue()); System.out.println("name:"+student.getElementsByTagName("name").item(0).getFirstChild().getNodeValue()); System.out.println("age:"+student.getElementsByTagName("age").item(0).getFirstChild().getNodeValue()); //向文件中写数据 Stringstu_id="001"; Stringname="xingxing"; Stringage="22"; Textmsg; //创建元素 ElementstudentNew=doc.createElement("student"); //创建子元素 Elementstuid=doc.createElement("stu_id"); //设置元素的值 msg=doc.createTextNode(stu_id); //将值添加给元素 stuid.appendChild(msg); //将元素添加到节点数组中 studentNew.appendChild(stuid); Elementname1=doc.createElement("name"); msg=doc.createTextNode(name); name1.appendChild(msg); studentNew.appendChild(name1); Elementage1=doc.createElement("age"); msg=doc.createTextNode(age); age1.appendChild(msg); studentNew.appendChild(age1); //将元素studentnew添加到document树中 doc.getDocumentElement().appendChild(studentNew); //进行写操作 TransformerFactorytff=TransformerFactory.newInstance(); Transformertfor=tff.newTransformer(); DOMSourcedos=newDOMSource(doc); StreamResultresult=newStreamResult(f); tfor.transform(dos,result); System.out.println(e.toString()); publicstaticvoidmain(String[]args){ Fuxiff=newFuxi(); ff.runXml(); JEE 1、简述JEE JEE:JAVAPLATFORMENTERPRISEEDITION JEE是一个规范集; JEE是一个框架集; JEE是一个技术集或API集; 适用于创建服务器端的大型的软件服务系统 2、C/SB/S模式 C/Sclient/server即客户机/服务器模式,客户端也参与程序的运行与计算(富客户端、胖客户端) B/Sborder/server即浏览器/服务器模式,又称为瘦客户端,客户端不参与程序的运行与计算 3、企业级应用(大规模的应用)的特点 1.生命周期长、稳定、可靠 2.组件往往分布在异构的环境中,能够跨平台 3.维护性、扩展性、重用性 4.有事务、安全、线程 4、什么是业务逻辑 依照业务逻辑划分模块, 所谓判定业务就是具有以下特征: 1.业务流程 2.业务判断 3.功能组合 5、平台(角色)的划分 1.平台供应商。提供满足API集实现的厂商(BEAweblogicIBMwebshphere) 2.组件供应商 3.组件装配人员 4.部署人员 5.系统管理人员 6.工具供应商提供开发组件所使用的工具(Jbuilder、eclipse) 6、java技术分布(设计架构模块内部设计) 1.表现层Servlet、Jsp、JavaBean、Taglib 2.逻辑层EJB(SessionBean) 3.数据层(JDBCEJB(EntityBean)) 5.分布式通讯RMI(IIOP)+JNDI、JAXP(JAVA的XML架构) JAVAMAIL(邮件服务)、JMS(消息服务)、IDLC、JCA(JAVA连接器框架(成)) 7、JEE的体系结构:是一种组件的体系结构 1.组件:能够完成一定功能的封状体(独立的功能的集合) 不能单独运行,必须运行在容器上 分为两类:web组件、ejb组件 2.容器:提供组件的运行环境,并对组件进行管理(一段程序) 管理组件的生命周期 不能单独运行,必须运行在服务器上 程序(组件)通过上下文来调用容器(context) 组件通过web.xml向容器描述自己,使容器能够认识组件 容器通过回调方法来调用组件 分为两类:web容器、ejb容器 3.服务器:提供容器的运行环境,提供大量的JEE基础服务 web服务器(只提供web服务) jee服务器(提供web、jee服务) 8、什么是回调方法 由容器自动调用的方法,就叫回调方法。 9、RMI远程方法的调用机制 例如:A主机有B()方法,C主机有D()方法,A想调用C主机的D方法 10、学习方法 1.规范(熟记)2.熟悉API3.多练4.多想 Servlet 1、描述war包、jar包、ear包的结构 war-web文档压缩包 ---WEB-INF ----web.xmlweb应用部署文件 ----lib本web应用需要的jar包(可选) ----classes本web应用需要的类文件(可选) jar-java文件压缩包 ---META-INF ----*.MFjava包的启动和描述文件 ear-企业资源包/企业应用包 --META-INF ---Application.xml配置文件 --*.war --*.jar 2、什么是servletservlet主要做什么 Servlet是运行在服务器端的小应用程序,是接收网络服务的请求和产生响应的一种方式。 3、servlet与cgi相比的优点servlet的缺点 优点: 性能(线程比进程更快) 可伸缩 Java强健且面向对象 Java平台的独立 缺点: 处理代码(业务逻辑)与HTML(表现逻辑)混合在一起 4、常用的servlet包的名称是 javax.servlet 5、描述servlet接口的层次结构 --GenericServlet --HttpServlet --自己的servlet ServletRequest --HttpServletRequest ServletResponse --HttpServletResponse 6、对比get方法和post方法 (1)安全性问题,通过Get方式提交数据,数据在URL中可以看到;POST方式,数据在URL中不可见。 (2)GET方式提交的数据最多只能有1024字节,而POST则没有此限制。 (3)GET方式不可以传输中文,POST方式可以传输中文。 (4)POST是被设计用来向上放东西的,而GET是被设计用来从服务器取东西的,GET也能够向服务器传送较少的数据,而Get之所以也能传送数据,只是用来设计告诉服务器,你到底需要什么样的数据。POST的信息作为HTTP请求的内容,而GET是在HTTP头部传输的。 7、归类描述HttpServletRequest接口都完成那些功能 读取HTTP头标 读取cookie 读取路径信息 标识HTTP会话。 8、归类描述HttpServletResponse接口都完成那些功能 设置HTTP头标 设置cookie 设定响应的content类型 输出返回数据 9、描述service方法所完成的基本功能默认是在那里实现的 基本功能:service方法是在servlet生命周期中的服务期,根据HTTP请求方法(GET、POST等),将请求分发到doGet、doPost等方法 实现:默认在HttpServlet类中实现 10、如何开发自己的Servlet描述应该做的步骤和每步需要完成的工作 1.引jar包 1)构建开发环境:新建工程,把tomcat下lib文件夹下的servlet-api.jar引入到Eclipse的工程中 2.开发servlet类 1)首先继承HttpServlet 2)重写doGet()doPost() 3.部署 安装web服务器,例如Tomcat 在Tomcat的webapps目录下新建一个文件夹作为web应用的根 在根下新建一个名为WEB-INF的文件夹,里面建立一个web.xml的文件、一个classes的文件夹、一个lib文件夹 按照servlet的DTD配置web.xml文件 把编译好的servlet的class文件复制到classes目录下 lib文件存放程序所需要的jar包 4.启动服务器 11、为何servlet需要部署描述 servlet需要配置web.xml文件来使容器认识servlet程序(web组件) 12、Servlet基本的描述应该是请写出来 Hello com.javakc.web.action.MyServlet /greeting 13、如何在html中使用servlet FORM标记 METHOD–指定HTTP方法(GET或POST) 语法: {HTMLformtagsandotherHTMLcontent} 14、如何接受request中的参数 StringuserName=request.getParameter("userName")方法 15、如何接受request中header的值 request.getHeader(name); request.getIntHeader(name); request.getDateHeader(name); request.getHeaderNames(); 16、如何输出html PrintWriterpw=response.getWriter(); pw.write(""); pw.write("Hello"); 17、如何设置输出的contentType response.setContentType("text/html") 18、描述servlet的生命周期 生命周期是指servlet实例在web容器中从:首次创建调用init方法开始初始化期,经过service方法运行期,一直到destory方法销毁期结束。 servlet实例的生命周期由web容器来管理。 19、描述init,service,destroy方法的功能和特点 init方法:是在servlet实例创建时调用的方法,用于创建或打开任何与servlet相的资源和初始 化servlet的状态,Servlet规范保证调用init方法前不会处理任何请求 service方法:是servlet真正处理客户端传过来的请求的方法,由web容器调用, 根据HTTP请求方法(GET、POST等),将请求分发到doGet、doPost等方法 destory方法:是在servlet实例被销毁时由web容器调用。Servlet规范确保在destroy方法调用之 前所有请求的处理均完成,需要覆盖destroy方法的情况:释放任何在init方法中 20、什么是回调方法有什么特点 由容器来调用程序的方法 由容器来决定什么时候来调 21、如何设置初始化servlet的参数 在中添加如下配置 greetingText 22、如何获取servlet初始化的参数 publicvoidinit(){ greetingText=getInitParameter("greetingText"); 23、ServletConfig接口默认实在那里实现的 GenericServlet类实现ServletConfig接口 24、什么是ServletContext有什么作用 Servlet上下文 ServletContext对象是Web应用的运行时表示,约等于整个web应用;可通过其实现Web应用中的资源共享 25、如何访问ServletContext接口是在那里实现的 在Servlet的实现类中通过this.getServletContext()方法访问。 GenericServlet类实现了ServletContext接口。 26、ServletContext接口的功能包括分别用代码示例 只读初始化参数:getInitParameter(name:String):String getInitParameterNames():Enumeration 读写访问应用级属性:getAttribute(name:String):Object setAttribute(name:String,value:Object) getAttributeNames():Enumeration 只读访问文件资源:getResource(path):URL getResourceAsStream(path):InputStream 写web应用日志文件:log(message:String) log(message:String,Throwable:excp) 27、如何设置ServletContext的参数 catalogFileName /WEB-INF/catalog.txt 28、如何获取ServletContext设置的参数值 ServletContextcontext=this.getServletContext(); StringcatalogFileName=context.getInitParameter(“catalogFileName”); 29、描述Web应用的生命周期 Web容器启动时,初始化每个Web应用 Web容器关闭时,销毁每个Web应用 30、如何用代码实现监控Web应用的生命周期 publicclassTestimplementsServletContextListener{ publicvoidcontextDestroyed(ServletContextEventarg0){ System.out.println("web容器销毁了+++++"); publicvoidcontextInitialized(ServletContextEventarg0){