Web技术——复习笔记
jsp:useBean
语句的 scope
属性取 session
、 application
时有何区别。
可以从英文翻译上理解:
- 前者(application:应用程序)仅在WEB服务启动时才刷新;
- 后者(session:会话)在重新打开浏览器时刷新(但是刷新打开的页面无效)。
分别说出JSP技术中的三种编译指令、动作指令和常用对象,并做简要的功能说明。
编译:
page
:针对当前页面;include
:包含另一个页面;taglib
:定义和访问自定义标签。
动作
jsp:forward
:执行页面转向,将请求的处理转发到下一个页面。jsp:param
:用于传递参数,必须与其他支持参数的标签一起使用。jsp:include
:用于动态引入一个JSP页面。jsp:plugin
:用于下载JavaBean或Applet到客户端执行。
对象
out
:javax.servlet.jsp.JspWriter
的实例,代表jsp的页面输出流,用于输出内容page
:代表页面本身,也就是servlet中的this,一般不用request
:javax.servlet.http.HttpServletRequest
的实例,封装了一次请求response
:javax.servlet.http.HttpServletResponse
的实例,封装了一次响应session
:javax.servlet.http.HttpSession
的实例,代表一次会话
请简述Servlet的生命周期主要有哪几个过程组成?主要调用哪几个方法?
Servlet的生命周期包括:创建、初始化、执行、销毁四大阶段。
1、创建:在启动Tomcat的过程中,根据配置文件来决定Servlet实例何时创建,默认在第一次被访问时创建,可以通过配置web.xml中的
标签或者是@WebServlet注释中的loadOnStartup的值,调用Servlet实现类的构造器进行创建; 2、初始化:首先调用init(ServletConfig config),然后创建ServletConfig实力对象调用getServletConfig()方法;
3、执行:Tomcat只会调用Servlet接口中的service()方法,然后在通过方法的层层调用,最后去调用我们重写的doXXX方法;
4、销毁:Tomcat会调用Servlet实例的destory()方法。
简述JSP与Java Servlet的关系。
- JSP是Servlet技术的扩展,本质上是Servlet的简易方式,更强调应用的外表表达。
- JSP编译后是"类servlet"。
- JSP侧重于视图,Servlet主要用于控制逻辑。
HTML、JSP、JAVA程序中的注释格式分别是怎样的?
<!-- -->
<%-- --%>
行注释://….. 块注释:/*……*/
请简述 <%@ include file="a.jsp"%>
和 <jsp:include page="a.jsp">
两个指令的相同点和不同点。
- 前者是指令元素、后者是行为元素。
- 执行时间不同:前者是在翻译阶段执行,后者在请求处理阶段执行。
- 引入内容的不同: 前者引入静态文本(html,jsp),在JSP页面被转化成servlet之前和它融和到一起;后者引入执行页面或servlet所生成的应答文本。
什么是Java Bean?
JavaBeans是Java中一种特殊的类,可以将多个对象封装到一个对象(bean)中。特点是可序列化,提供无参构造器,提供getter方法和setter方法访问对象的属性。名称中的“Bean”是用于Java的可重用软件组件的惯用叫法。
一般的WEB服务器包含以下几个目录组成,请说明各部分的主要功能。
/bin /common /conf /logs /webapps /work
bin: 存放启动和关闭tomcat的脚本文件,如打开startup.bat 关闭shutdown.bat
conf: 存放tomcat各种的配置文件
lib:存放tomcat服务器和web程序需要访问的JAR文件
logs:存放tomcat的日志文件
temp:存放tomcat运行时临时产生的文件
work:存放服务器运行时产生的文件
一个标准的javabean类的构造方法有何特别要求?
- 一个公共类。
- 有一个公共的无参的构造方法。
- 属性定义为私有的。
- 在Javabean中,需要每队属性提供两个公共方法(get方法和set方法)。
- 定义时,通常放在一个命名的包下。
说明 response.sendRedirect("a.jsp");
和 <jsp:forward page="a.jsp">
的区别。
- 前者属于客户端跳转(两次request两次响应);后者属于服务器端跳转(一次request一次响应)。
- 前者会在客户端(新的页面)呈现跳转后的URL地址。
- 后者完全是在服务器上进行的,浏览器上的地址栏中的地址没有发生改变。
配置tomcat安装环境时,要配置哪些环境变量?
CATALINA_HOME、CATALINA_BASE,在 Path 后添加 ;%CATALINA_HOME%lib; %CATALINA_HOME%in;
request
和 response
这两个jsp内建对象有何不同?
request
:封装了用户提交给服务器的信息,用来取出请求信息。
response
:封装了服务器给客户端的响应信息,用来添加要返回给浏览器的信息。
简述JSP中动态 INCLUDE
与静态 INCLUDE
的区别。
- 格式不同,静态包含:
<%@ include file="文件" %>
,而动态包含<jsp:include page = "文件" />
。 - 包含时间不同,静态包含是先将几个文件合并,然后再被编译,缺点就是如果含有相同的标签,会出错。 动态包含是页面被请求时编译,将结果放在一个页面。
- 生成的文件不同,静态包含会生成一个包含页面名字的servlet和class文件;而动态包含会各自生成对应的servlet和class文件。
- 传递参数不同,动态包含能够传递参数,而静态包含不能。
说明JSP技术中的编译指令和动作指令的区别
- 编译指令是通知Servlet引擎的处理消息。动作指令是执行时的脚本动作。
- 编译指令是在将JSP编译成Servlet时起作用,而动作指令可替换成JSP脚本,是JSP脚本标准化写法。
<jsp:include>
和 <jsp:forward>
的区别。
前者可以一个静态的页面;后者是跳转,发送一次请求,可以为当前跳转设置参数,下一页面可接收到设置的参数。