《企业级JavaI》复习要点.docx

上传人:b****7 文档编号:8853295 上传时间:2023-02-02 格式:DOCX 页数:61 大小:304.03KB
下载 相关 举报
《企业级JavaI》复习要点.docx_第1页
第1页 / 共61页
《企业级JavaI》复习要点.docx_第2页
第2页 / 共61页
《企业级JavaI》复习要点.docx_第3页
第3页 / 共61页
《企业级JavaI》复习要点.docx_第4页
第4页 / 共61页
《企业级JavaI》复习要点.docx_第5页
第5页 / 共61页
点击查看更多>>
下载资源
资源描述

《企业级JavaI》复习要点.docx

《《企业级JavaI》复习要点.docx》由会员分享,可在线阅读,更多相关《《企业级JavaI》复习要点.docx(61页珍藏版)》请在冰豆网上搜索。

《企业级JavaI》复习要点.docx

《企业级JavaI》复习要点

《企业级JavaI》复习要点

第1讲JavaEE概述及Web容器的安装与配置

1、J2EE是什么?

J2EE的体系结构包含哪些内容?

J2EE不是一个产品,而是一个技术规范,一系列的标准。

它涵盖企业级应用程序的设计、开发、汇编和部署等方面。

J2EE是一个多层的、端到端的解决方案,包括:

客户层中间层(表示层、业务层)企业信息系统层(EIS)

2、简述J2EE的分层思想.

J2EE提供了企业级应用程序的开发平台,提供了分布式、基于组件、松耦合、安全可靠、独立于平台且反应迅速的应用程序环境。

3、什么是组件?

请说出J2EE中几种不同类型的组件.

组件概念:

是一个封装一定功能的软件单元,能够与相关的一些类和文件一起组装成J2EE应用程序,并且可以与其他组件通信

EJB组件、WEB组件、客户端层组件

4、什么是容器?

J2EE中包含哪些类型的容器?

容器负责提供J2EE应用程序组件的运行时支持,所有的J2EE组件都部署于容器中并在容器中执行。

应用程序客户端容器、Applet容器、Web容器、EJB容器

5、Web应用程序能用javac编译、java运行码?

为什么?

可以用javac编译,但不能用java运行。

6、Tomcat有什么功能、特点?

Tomcat:

是Apache提供的一个免费开源的项目,是Sun推荐的运行JSP和servlet的容器,不仅具有Web服务器的基本功能,还提供数据库连接池、SSL和、Proxy等通用组件功能,已得到广泛应用;

7、说明Tomcat中bin、lib、conf、webapps等目录的功能。

目录

用途

/bin

存放启动和关闭的脚本文件

/conf

存放各种配置文件,包括:

server.xml、tomcat-users.xml和web.xml

/lib

存放服务器和所有web应用程序需要访问的jar文件

/webapps

发布web应用程序时,通常把应用程序的目录及文件存放到这一目录下

第2讲Servlet简介

1、在HTTP中,请求、响应是怎样实现的?

HTTP请求的组成

●请求行(请求方式、资源路径、HTTP版本号)

●若干消息头(可选,格式为字段名:

□值)

空一行

●请求体(只有POST、PUT、DELETE请求方式才需要)

HTTP响应的组成

●响应行(协议、状态代码、描述)

●若干消息头(格式为字段名:

值)

空一行

●响应体(与浏览器中的源代码类似)

2、比较GET方式与POST方式的不同.

比较内容

GET

POST

是否在浏览器地址栏显示?

显示

不显示,保密性好

数据放置的位置

作为请求资源的一部分放置在请求行中

放置在请求内容(即请求体)中

传输数据量有无限制?

一般在1KB以下

无限制

3、什么是Servlet?

它有什么特点?

Servlet是用Java语言编写的服务器端小程序,驻留在web服务器中,并在其中运行,扩展了web服务器的动态处理功能。

Servlet的特点

移植性好,本身是一个Java类,具有跨平台性;J2EE平台支持的全部JavaAPI都可用于Servlet;安全性提高,服务器崩溃的可能性减小;多个Servlet可以组织在一起,输出可由组生成,有助于代码复用;可以与服务器中的其它组件交互。

4、J2EE提供了Servlet的哪两个包?

Servlet接口有哪些方法?

a)javax.servlet包:

提供了所有Servlet类实现的基本接口和继承的基本类

b)javax.servlet.http包:

提供了编写基于HTTP协议的Servlet所需的基类

基本方法:

init()、service():

处理请求/响应、destroy()、getServletConfig()、getServletInfo()

5、说明对应于“请求”、“响应”的接口有哪些?

请求:

javax.servlet.ServletRequest、javax.servlet.http.HttpServletRequest

响应:

javax.servlet.ServletResponse、javax.servlet.http.HttpServletResponse

6、简述编写Servlet程序的主要步骤。

(1)继承HttpServlet抽象类;

(2)覆盖HttpServlet的部分方法(如:

doGet()、doPost());

(3)获取Http请求信息;(4)生成Http响应信息。

7、说明web应用程序的目录结构内容。

●web.xml文件:

为容器提供应用程序的配置信息

●classes目录:

存放Servlet、JavaBeans和其它的class文件

●Lib目录:

存放jar文件,如JDBC驱动程序等

8、说明web.xml的作用及其主要元素

在该文件中对servlet进行布署,主要是指定等标记的内容。

第3讲使用Servlet

1、乱码产生的原因是什么?

页面中文内容乱码的解决办法是什么?

传递中文参数乱码的解决办法是什么?

编码、解码时使用的字符集不一致,就容易出现乱码现象。

页面中文内容乱码的解决办法:

让响应对象在输出内容前,调用下列方法之一:

⏹setCharacterEncoding(“字符集”)

例如:

response.setCharacterEncoding(“GBK”);

⏹setContentType(“文本类型;charset=字符集”)

例如:

response.setContentType(“text/html;charset=GBK”);

传递中文参数乱码的解决办法:

⏹POST方式(参数在请求体中传递)

在获取请求对象内容前,调用setCharacterEncoding(“字符集”)例如:

request.setCharacterEncoding(“GBK”);

⏹GET方式(参数作为请求行的一部分内容传递)

将以获取的参数字符串为参数,按指定字符集重新构造新的字符串(《Jsp信息系统开发实例精选》p33)

例如:

Stringstr=request.getParameter(“…”);

Stringstr2=newString(str.getBytes("iso-8859-1"),"GBK"

out.println("

"+str2+"

");

2、Servlet的生命周期包含哪些阶段?

⏹加载和实例化

⏹初始化:

调用init()方法

⏹请求处理:

调用service()方法

⏹服务终止:

调用destroy()方法

3、Servlet的初始化参数存放于什么位置?

ServletConfig、GenericServlet有什么功能?

怎样获取Servlet初始化参数?

Servlet的初始化参数存放在web.xml中。

ServletConfig:

JSP的配置信息,作用域为页面

GenericServlet:

GenericServlet类定义了一个普通的、协议无关的Servlet,实现了Servlet和ServletConfig等接口。

GenericServlet类简化了Servlet的开发,并提供了生命周期方法的简单版本。

开发一个普通的Servlet必须重载service()方法。

在web.xml中通常会有如下配置:

MyServletName

MyServlet

name1

value1

name2

value2

以上配置,我们可以在servlet中得到其初始化信息。

主要为以下三种:

/*通过getServletConfig()获取单一值*/

Stringvalue=getServletConfig().getInitParameter("name1");

/*获取所有初始化变量*/

java.util.Enumerationenum=getServletConfig().

getInitParameterNames();

for(;enum.hasMoreElements();){

//获取初始化参数的名字

Stringname=(String)enum.nextElement();

//获取对应值

value=getServletConfig().getInitParameter(name);

}

/*通过getServletContext()获取单一值*/

Stringvalue=getServletContext().getInitParameter("name1");

 

4、通常,Servlet中的实例是以单线程还是多线程运行的?

采用多线程模式运行

5、Servlet中线程的安全问题是怎样产生的?

可用什么方法来解决?

类的实例变量

解决办法:

⏹将类的实例变量改为局部变量,局部变量是安全的;

⏹将确实需要共享的资源,放在synchronized块中或将方法定义为synchronized类型,但这样会影响程序执行效率。

1、Servlet要获取表单参数(type=‘text’name=‘user’),正确的语句是【C】(request、response分别为HTTP请求、响应对象)

A.Stringstr=request.getName(“user”);B.Stringstr=request.getValue(user);

C.Stringstr=request.getParameter(“user”);D.Stringstr=response.getParameter(“user”);

2、在web.xml中,【E】xml代码正确定义了Servlet的类名?

A.abcinc.OrderServlet.classB.abcinc.OrderServlet

C.abcinc.OrderServletD.abcinc.OrderServlets

E.abcinc.OrderServlet

第4讲Servlet与会话管理

1、Http协议的无状态是怎样体现的?

服务器与客户端在一系列请求、响应交互过程中,既无法判定这些请求是来自同一客户还是来自不同客户,也记不住任何有关客户端的信息,每一个请求都视为新的请求。

2、什么是会话?

SessionID是什么?

会话在什么情况下能结束?

会话:

在指定的时间段中来自同一客户端的一系列HTTP请求。

如果客户端能在规定时间内不断向服务器提出请求,那么这些请求就属于同一个会话。

session对象ID:

session对象创建之后,就会分配一个String类型的ID号(独一无二),通过这一ID号就可以对会话进行标识。

方法:

StringgetId()

会话结束条件:

⏹会话过期:

空闲时间超过指定期限(如:

30分钟)

⏹强制失效:

服务器的HttpSession对象调用invalidate()方法(在用户注销时常使用)

⏹客户关闭浏览器:

不够准确,浏览器关闭时将丢失保存在内存sessionID,无法继续与服务器联系,只有会话过期才真正结束。

3、会话管理技术主要有哪些?

4、什么是Cookie?

创建、设置、使用Cookie的主要步骤有哪些?

是Web服务器发送给客户端的一段文本信息,它保存在客户端的浏览器或硬盘上,对于后续请求,客户端将文本信息发送回给同一服务器。

简单地说,Cookie是暂存于客户端的信息(以name/value形式)

A)创建Cookie对象

格式:

Cookie对象名=newCookie(“Cookie名称”,”值”);

B)设置Cookie对象的属性

Cookie常用API:

voidsetMaxAge(int expiry):

设置Cookie最大保存时间(秒)

当ecpiry为正数,Cookie将会被保存在客户端的硬盘上

当ecpiry为负数(默认值-1),客户端浏览器关闭时,Cookie被删除

当ecpiry为0时,Cookie被删除

例如:

ckname.setMaxAge(365*24*3600);//设置存活期为1年

voidsetValue(StringnewValue):

设置新值

voidsetPath(Stringuri):

设置路径,当访问该路径下的资源时,Cookie有效

voidsetComment(Stringpurpose):

设置注释

voidsetDomain(Stringpattern):

设置Cookie起作用的域

intgetMaxAge():

获取最大保存时间,默认为-1,浏览器关闭时删除Cookie

StringgetName():

获取Cookie名字

StringgetValue():

获取Cookie值

StringgetPath():

获取Cookie起作用的路径

StringgetDomain():

获取Cookie起作用的域

StringgetComment():

获取注释

C)发送Cookie到客户端

调用HttpServletResponse对象的addCookie(Cookie对象)方法,将cookie插入到一个HTTP响应报头。

例如:

response.addCookie(ckname);

D)从客户端读取Cookie

从客户端读取你感兴趣的cookie,需要两个步骤

a)调用request.getCookies()得到一个Cookie对象的数组

b)调用每个cookie的getName方法,从数组中寻找所需的cookie

5、Cookie是会话管理的最常用技术,Cookie的不足之处。

一台机器,多个用户;多台机器,一个用户;浏览器不支持Cookie

6、URL重写技术在什么情况使用?

怎样实现?

当浏览器不支持或禁用Cookie时,常采用URL重写技术

利用GET的方法,在URL的尾部添加一些额外的参数(sessionID)来达到会话追踪的目的,服务器将这个标识符与它所存储的有关会话的数据关联起来。

7、表单隐藏字段技术与SSL技术有什么用途。

表单隐藏字段技术:

将sessionID以隐藏表单字段方式发送

SSL(安全套接字层)技术:

在客户机与服务器之间建立安全信道的协议(https),也用于向客户机认证服务器及向服务器认证客户机。

8、如果在会话中要多次使用username,该怎样保存、调用这一变量?

//MailLogin.java程序片断

HttpSessionsession=request.getSession(true);

if(!

session.isNew()){

name=(String)session.getAttribute("username");

if(name==null)

name="";

}

out.println("

SessionID:

"+session.getId()+"

");

out.println("");

out.println("

");

//MailCheck.java程序片断

HttpSessionsession=request.getSession(true);

if(!

session.isNew()){

session.setAttribute("username",name);

}

out.println("

SessionID:

"+session.getId()+"

");

out.println("登录   ");

out.println("注销   ");

 

//MailLogout.java程序片断

HttpSessionsession=request.getSession(true);

if(!

session.isNew()){

name=(String)session.getAttribute("username");

if(name==null)

name="";

out.println("

SessionID:

"+session.getId()+"

");

session.invalidate();

}

out.println("重新登录邮件系统   ");

 

9、怎样用会话来验证用户身份?

//身份验证,派发通告证,存放在session中

Stringname=request.getParameter("username");

Stringpwd=request.getParameter("password");

HttpSessionsession=request.getSession();

if(name.equals("sise")&&pwd.equals("123456"))

session.setAttribute("permitted","yes");

else{

session.setAttribute("permitted","no");

response.sendRedirect("maillogin");

}

//后续操作

 

10、怎样设计购物车?

⏹购物车是一个Java集合(如:

ArrayList、vector等)对象,可让它作为session的一个属性来存放;

⏹通过判断session的该属性值是否为null来检验,购物车是否已创建?

如没有,则要先创建;

⏹选购或册删除物品,就是在购物车上增加或删除对象。

参考代码:

//HomePage.java

importjava.io.*;

importjava.util.ArrayList;

importjava.util.Iterator;

importjavax.servlet.*;

importjavax.servlet.http.*;

publicclassHomePageextendsHttpServlet{

privateStringbook[][]={

{"Servlet/Jsp深入详解——基于Tomcat的web开发","孙鑫","75"},

{"专家门诊——JSP开发答疑200问","马斗等","52"},

{"深入体验JavaWeb开发内幕——核心基础","张孝祥","58"},

{"深入体验JavaWeb开发内幕——高级特性","张孝祥","52"},

{"Tomcat与JavaWeb开发技术详解","孙卫琴","45"}};

publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{

//将数组内容存放于ServletContext中

ServletContextcontext=getServletContext();

context.setAttribute("books",book);

HttpSessionsession=request.getSession();

ArrayListcart=(ArrayList)session.getAttribute("cart");

if(cart==null){

cart=newArrayList();

session.setAttribute("cart",cart);

}

response.setContentType("text/html;charset=GBK");

PrintWriterout=response.getWriter();

out.println("");

out.println("");

out.println("");

out.println("网上书店");

out.println("");

out.println("");

out.println("");

out.println("");

out.println("欢迎光顾网上书店");

out.println("

");

out.println("


");

out.println("

");

out.println("");

out.println("");

out.println("");

out.println("请选择");

out.println("书名");

out.println("作者");

out.println("<

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

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

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1