(*****)Servlet的生命周期,并说出Servlet和CGI的区别?
web容器加载servlet,生命周期开始。
通过调用servlet的init()方法进行servlet的初始化。
通过调用service()方法实现,根据请求的不同调用不同的do***()方法。
web容器调用servlet的destroy()方法。
与cgi的区别在于servlet处理服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。
(*****)JSP的内置对象及方法
request表示HttpServletRequest对象。它包含了有关浏览器请求的信息,并且提供了几个用于获取cookie, header, 和session数据的有用的方法。
response表示HttpServletResponse对象,并提供了几个用于设置送回浏览器的响应的方法(如cookies,头信息等)
out对象是javax.jsp.JspWriter的一个实例,并提供了几个方法使你能用于向浏览器回送输出结果。
pageContext表示一个javax.servlet.jsp.PageContext对象。它是用于方便存取各种范围的名字空间、servlet相关的对象的API,并且包装了通用的servlet相关功能的方法。
session表示一个请求的javax.servlet.http.HttpSession对象。Session可以存贮用户的状态信息
application 表示一个javax.servlet.ServletContext对象。这有助于查找有关servlet引擎和servlet环境的信息
config表示一个javax.servlet.ServletConfig对象。该对象用于存取servlet实例的初始化参数。
page表示从该页面产生的一个servlet实例。
(***)如何实现一个自定义的servlet?
extends HttpServlet 并覆盖doPost或doGet方法
在web.xml中进行部署
(***)如何实现servlet的单线程模式
在doGet及doPost方法前加入synchoronized
JSP:
<%@
pageisThreadSafe="true"%>
(***)描述Cookie和Session的作用,区别和各自的应用范围,Session工作原理。
Cookie:主要用在保存客户端,其值在客户端与服务端之间传送,不安全,存储的数据量有限。
Session:保存在服务端,每一个session在服务端有一个sessionID作一个标识。存储的数据量大,安全性高。占用服务端的内存资源。
(***)forward 和redirect的区别
forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。
redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request参数都可以获取。
forward: 转发,同一个request,在下一个页面中,request保留上一个页面中的request的所有值
redirect: 跳转,不同的request,不传递request对象。
(***)JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?
JSP是Servlet技术的扩展,本质上是Servlet的简易方式,更强调应用的外表表达。JSP编译后是"类servlet"。Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑。
(***)四种会话跟踪技术
会话作用域ServletsJSP 页面描述
page是代表与一个页面相关的对象和属性。一个页面由一个编译好的 Java servlet 类(可以带有任何的 include 指令,但是没有 include 动作)表示。这既包括 servlet 又包括被编译成 servlet 的 JSP 页面
request是代表与 Web 客户机发出的一个请求相关的对象和属性。一个请求可能跨越多个页面,涉及多个 Web 组件(由于 forward 指令和 include 动作的关系)
session是代表与用于某个 Web 客户机的一个用户体验相关的对象和属性。一个 Web 会话可以也经常会跨越多个客户机请求
application是代表与整个 Web 应用程序相关的对象和属性。这实质上是跨越整个 Web 应用程序,包括多个页面、请求和会话的一个全局作用域
jsp页面中两种跳转方式分别是什么?有什么区别?
转发: 保留上次的request
<jsp:forward>
actionMapping.findForWard(“”);
pageContext.forward();
request.getRequestDispacher(“a.jsp”).forward(request,response)
跳转:不保留上次的request
Response.setRedirect(“”)
Servlet的体系结构是什么?
GenericServlet
HttpServlet
自定义
Servlet执行时一般实现哪几个方法?
public void init(ServletConfig config)
public ServletConfig getServletConfig()
public String getServletInfo()
public void service(ServletRequest
request,ServletResponse response)
public void destroy()
Request对象的主要方法:
setAttribute(String name,Object):设置名字为name的request的参数值
getAttribute(String name):返回由name指定的属性值
getAttributeNames():返回request对象所有属性的名字集合,结果是一个枚举的实例
getCookies():返回客户端的所有Cookie对象,结果是一个Cookie数组
getCharacterEncoding():返回请求中的字符编码方式
getContentLength():返回请求的Body的长度
getHeader(String name):获得HTTP协议定义的文件头信息
getHeaders(String name):返回指定名字的request Header的所有值,结果是一个枚举的实例
getHeaderNames():返回所以request Header的名字,结果是一个枚举的实例
getInputStream():返回请求的输入流,用于获得请求中的数据
getMethod():获得客户端向服务器端传送数据的方法
getParameter(String name):获得客户端传送给服务器端的有name指定的参数值
getParameterNames():获得客户端传送给服务器端的所有参数的名字,结果是一个枚举的实例
getParameterValues(String name):获得有name指定的参数的所有值
getProtocol():获取客户端向服务器端传送数据所依据的协议名称
getQueryString():获得查询字符串
getRequestURI():获取发出请求字符串的客户端地址
getRemoteAddr():获取客户端的IP地址
getRemoteHost():获取客户端的名字
getSession([Boolean create]):返回和请求相关Session
getServerName():获取服务器的名字
getServletPath():获取客户端所请求的脚本文件的路径
getServerPort():获取服务器的端口号
removeAttribute(String name):删除请求中的一个属性
简单介绍JSP的标记库
做一个标记处理类 extends TagSupport
通过tld说明标记处理的类的前缀及后缀
在web.xml中说明tld文件
<taglib>
<taglib-uri>
<taglib-location>
<taglib>
在jsp页面是引用tld<%@taglib uri=”” prefix=””%>
JSP中动态INCLUDE与静态INCLUDE的区别?
动态INCLUDE用jsp:include动作实现 <jsp:include page="included.jsp"
flush="true" />它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数。
静态INCLUDE用include伪码实现,不会检查所含文件的变化,适用于包含静态页面<%@ include file="included.htm" %>
描述JSP和Servlet的区别、共同点、各自应用的范围
Jsp主要在于页面的显示动态生成页面,可以与html标记一起使用,其还是要生成为一个servlet。
Servlet:主要是控制的处理,如调用业务层,跳转不同的jsp页面。
Mvc:
Jsp:v
Servlet:c
什么情况下调用doGet()和doPost()?
Jsp页面中的form标签里的method属性为get时调用doGet(),为post时调用doPost()。
jsp有哪些动作?作用分别是什么?
JSP共有以下6种基本动作
jsp:include:在页面被请求的时候引入一个文件。
jsp:useBean:寻找或者实例化一个JavaBean。
jsp:setProperty:设置JavaBean的属性。
jsp:getProperty:输出某个JavaBean的属性。
jsp:forward:把请求转到一个新的页面。
jsp:plugin:根据浏览器类型为Java插件生成OBJECT或EMBED标记。
MVC的各个部分都有那些技术来实现?如何实现?
MVC是Model-View-Controller的简写。
"Model" 代表的是应用的业务逻辑(通过JavaBean,EJB组件实现)。
"View" 是应用的表示面(由JSP页面产生)。
"Controller" 是提供应用的处理过程控制(一般是一个Servlet)。
通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以进行交互和重用。
请罗列jsp中的脚本、指令及动作?
脚本
<%%> <%=%> <%!%> <%----%>
指令
<%@page contentType=”text/html;charset=utf-8” language=”java” import=””%>
<%@include file=””%>
<%@taglib uri=”” prefix=””%>
动作:
<jsp:useBean class=”” id=”” scope=””> 在scope中如果没有实例化一个对象,如果有直接用以前的。
<jsp:getProperty name=”” property=””> 向一个bean中设置属性值
<jsp:forward> jsp页的转发
<jsp:include page=””> 导入一个jsp页面
include的两种实现方式的区别?
<@include file>:在将jsp生成servlet类前将两个文件和在一起,生成一个java类,一起运行的。所以是一家子,当中的变量名不能重名。
<jsp:include page>:是两个类,是一个调用关系,在运行时动态的调用,不是一家子,可以重复变量。
在JSP中如何读取客户端的请求,如何确定某个Jsp文件的真实路径?
Request.getparameter(“”)
<%=application.getRealPath("aa.jsp")
%>
说明Jsp中errorPage的作用,应用范围。
正常页面中
%@page erropage=”error.jsp”%
错误页面
<%@page iserrorpage=”true”%>
有一内置对象:exception
介绍在Jsp中如何使用JavaBeans
<jsp:useBean class=”” id=”” scope=””/>
<%
New 类();
%>
Servlet中重要的包有那些,有什么区别?
javax.servlet.*;javax.servlet.http.*;
JSP的常用指令
<%@page language=”java” contenType=”text/html;charset=gb2312” session=”true”
buffer=”64kb” autoFlush=”true” isThreadSafe=”true” info=”text”
errorPage=”error.jsp” isErrorPage=”true” isELIgnored=”true”
pageEncoding=”gb2312” import=”java.sql.*”%>
isErrorPage(是否能使用Exception对象),isELIgnored(是否忽略表达式)
<%@include file=”filename”%>
<%@taglib prefix=”c”uri=”http://……”%>
页面间对象传递的方法
request,session,application,cookie等
Jsp&Servlet知识点