JSP和Servlet的生命周期+浏览器和服务器的交互+核心Servlet组件

合集下载

JavaWeb三大组件

JavaWeb三大组件

JavaWeb三⼤组件1.javaweb三⼤组件:servlet,listener,filter;都需要在web.xml中配置(除了两个感知监听器)。

2.服务器端⼩程序每个Servlet都是唯⼀的,能处理的请求是不同的(⽐如登录,查询);前⾯的调度由tomcat完成;要完成获取请求数据,处理请求,完成响应的任务。

3.实现servlet的三种⽅法:javax.servlet.Servlet接⼝,GenericServlet抽象类(service⽅法待实现),HttpServlet类(常⽤)。

4.Servlet接⼝5⼤⽅法:其中3个⽣命周期⽅法不由我们来调⽤,由Tomcat调⽤;对象也不⽤我们来创建,Tomcat创建。

4.1:init(ServletConfig):⽣命周期⽅法,在对象创建之后只执⾏⼀次;当第⼀次被请求才被创建;4.2:destroy():⽣命周期⽅法,在servlet对象被销毁之前调⽤,只调⽤⼀次;⽐如IO流等释放(很少);服务器被关闭时调⽤;4.3:service(ServletRequest,ServletResponse):⽣命周期⽅法,被调⽤多次⽤来处理请求;4.4:getServletConfig()(有⽤),getServletInfo()(⽆⽤)。

5.浏览器如何访问Servlet:必须把Servlet绑定到⼀个路径(web.xml配置):<servlet>name,class</servlet>,<servlet-mapping>name,url-pattern</servlet-mapping>,其中pattern必须/开头。

6.Servlet单例,线程不安全,效率⾼。

7.ServletConfig接⼝:对应的就是web.xml⾥的本Servlet的配置信息被xml解析器解析后,加载到⾥⾯;返回的实例的实现类是Tomcat提供的;7.1:getServletName()(⼏乎没⽤);7.2:getServletContext()(有⽤);7.3:getInitParameter[Names()]:初始化参数相关8.ServletRequest(Tomcat封装的请求信息),ServletResponse(设置状态码,设置响应头,发送html代码)。

javaweb程序填空题

javaweb程序填空题

javaweb程序填空题JavaWeb程序是一种基于Java语言开发的Web应用程序。

它可以运行在Web服务器上,通过浏览器进行访问和交互。

下面是一些填空题,涉及到JavaWeb程序的相关知识。

1. JavaWeb程序的核心组件是__________。

答,Servlet.2. Servlet是一个__________的Java类,用于处理客户端请求和生成响应。

答,无状态。

3. Servlet容器是指__________,负责管理和执行Servlet的生命周期。

答,Web服务器。

4. JSP是JavaServer Pages的缩写,它是一种__________。

答,动态网页技术。

5. JSP页面中的Java代码可以使用__________标签进行嵌入。

答,<% %> 或者 <%! %>。

6. JSP页面中的表达式可以使用__________标签进行输出。

答,<%= %>。

7. JSP中的__________标签用于定义可重用的页面片段。

答,<jsp:include>。

8. JSP中的__________标签用于循环输出集合或数组中的元素。

答,<c:forEach>。

9. JSP中的__________标签用于条件判断和分支选择。

答,<c:if>。

10. JSP中的__________标签用于定义和使用JavaBean。

答,<jsp:useBean>。

11. JavaWeb程序中的__________用于存储和管理用户的会话数据。

答,Session.12. JavaWeb程序中的__________用于将请求转发给其他资源进行处理。

答,RequestDispatcher.13. JavaWeb程序中的__________用于将请求重定向到其他URL。

答,重定向。

14. JavaWeb程序中的__________用于处理前端发送的异步请求。

JSP Servlet生命周期

JSP  Servlet生命周期

JSP Servlet生命周期Servlet与Servlet容器的关系有点像枪和子弹的关系,枪是为子弹而生,而子弹又让枪有了杀伤力。

虽然它们是彼此依存的,但是又相互独立发展。

从技术角度来说是为了解耦,通过标准化接口来相互协作。

Servlet运行在Servlet容器中,其生命周期由容器来管理。

Servlet的生命周期通过javax.Servlet.Servlet接口中的init()、service()和destroy()方法来表示。

Servlet 的生命周期包含了下面4个阶段:1.加载ServletServlet容器负责加载和实例化Servlet。

当Servlet容器启动时,或者在容器检测到需要这个Servlet来响应第一个请求时,创建Servlet实例。

主要是解析web.xml 文件,这个文件描述了一个Web应用的关键信息,也是一个Web应用的入口。

Servlet容器可以从本地文件系统、远程文件系统或者网络服务中,通过类加载器加载Servlet类,成功加载后,容器创建Servlet的实例。

因为容器是通过Java的反射API来创建Servlet实例,调用的是Servlet的默认构造方法(即不带参数的构造方法),所以在编写Servlet类的时候,不应该提供带参数的构造方法。

2.初始化在Servlet被实例化之后,Servlet容器将调用Servlet的init()方法初始化这个对象。

初始化的目的是为了让Servlet对象在处理客户端请求前完成一些初始化的工作,如建立数据库的连接,获取配置信息等。

在初始化期间,Servlet实例可以通过容器的ServletConfig对象从Web应用程序的配置信息(web.xml中)中获取初始化的参数信息。

事实上,Servlet从被web.xml中解析到完成初始化,这个过程非常复杂,中间有很多过程,包括各种容器状态的转化引起的监听事件的触发、各种访问权限的控制和一些不可预料的错误发生的判断行为等等。

java总结

java总结

1、Servlet与JSP有什么区别?Servlet和JSP完成的功能是相同的,都可以接收用户的请求,可以对用户进行响应,可以调用业务方法。

不同点在于JSP是在html或者xml中嵌入了Java代码或者JSP的标记,在制作页面方面具有优势,可以使用网页编辑工具来制作网页,然后嵌入Java或者JSP的标记。

Servlet是纯Java代码,通常用于控制,不用于输出。

在MVC模式中,JSP通常充当视图,Servlet通常充当控制器。

另外,JSP 在运行的时候还要转换成类似于Servlet的Java代码。

2、Servelt通常有哪些方法init方法,完成初始化service方法,包括doGet和doPost,用于接收用户的请求,调用后台的JavaBean或者EJB,选择界面对用户响应。

destroy方法,用于释放资源3、谈谈Servlet的生命周期当接收到请求的时候,容器察看对应的Servlet对象是否存在,如果不存在,需要加载Servetl,实例化Servlet,调用init方法进行初始化。

如果已经存在,根据用户的请求创建request和response对象,把这两个对象作为参数调用Servlet对象的service方法,Servlet通过这个方法与用户进行交互,方法执行完之后,对请求的处理结束。

Servelt对象继续等待下一个请求。

当应用卸载的时候,调用destroy 方法释放资源。

多个请求共享Servelt对象。

4、Servlet API的两个主要包javax.servlet.*;javax.servlet.http.*;5、编写Servlet需要继承的类是什么?HttpServlet6、编写Servlet通常需要实现的两个方法是什么?doGet方法和doPost方法7、doGet方法和doPost方法中的两个参数是什么?HttpServletRequest和HttpServletResponse,前者封装了与请求相关的信息,后者封装了与响应相关的信息。

JSP应用与开发技术第12、13、14章 课后习题答案

JSP应用与开发技术第12、13、14章 课后习题答案

第12章Servlet基础1.简述Servlet和JSP的关系。

答:Servlet是服务器端运行的一种Java应用程序。

当浏览器端有请求则将其结果传递给浏览器。

在JSP中使用到的所有对象都将被转换为Servlet或者非Servlet的Java对象,然后被执行,所以执行JSP实际上与执行Servlet是一样的。

2.简述Servlet的生命周期。

答:Servlet的生命周期可分为下面几个阶段:(1)装载Servlet。

(2)实例化一个Servlet实例对象。

(3)调用Servlet的init( )方法进行初始化。

(4)服务。

(5)卸载。

3.简述HttpSession接口的功能和使用方法。

答:.HttpSession接口是Servlet提供会话追踪解决方案。

HttpSession对象存放在服务器端,只是对cookie和url重写技术的封装应用。

使用HttpSession进行会话控制的过程:(1)获得一个HttpSession实例对象;(2)访问和设置与会话相关联信息,维护会话的状态;(3)废弃会话数据。

4.简述开发一个Servlet所需要的步骤。

答:第一步:编写Servlet实例第二步:在web.xml文件中配置该Servlet第三步:编写其它文件5.编写一个html页面和一个Servelt,实现利用Servelt的doPost方法读取html文件中Form表单内容。

答:参考12.6.26.写一个利用HttpSession接口的用户登录的Servlet,当用户已经登录时,返回欢迎信息;否则转向登录页面。

答:第一步:编写Servlet实例SessionServlet.java所示。

package com;import java.io.*;import java.util.*;import javax.servlet.*;import javax.servlet.http.*;/**** 使用HttpSession管理会话的登录Servlet*/public class LoginServlet extends HttpServlet {p rotected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException { doPost(request, response);}p rotected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=GB2312");PrintWriter out = response.getWriter();out.println("<html>");out.println("<body>");out.println("<head>");out.println("<title>使用HttpSession管理会话的登录页面</title>");out.println("</head>");out.println("<body>");// 获取会话对象HttpSession session = request.getSession();// 从会话对象中读取数据Boolean isLogin = (Boolean) session.getAttribute("isLogin");if (isLogin == null) {isLogin = Boolean.FALSE;}String user = request.getParameter("user");String password = request.getParameter("pass");if (isLogin.booleanValue()) {// 从会话对象中读取数据user = (String) session.getAttribute("user");Date loginTime = new Date(session.getCreationTime());out.println("<h2>欢迎您," + user + "!</h2>");out.println("<h2>您的登录时间是:" + loginTime + "!</h2>");} else if ((user != null) && (password != null)) {// 在会话对象中保存数据session.setAttribute("user", user);session.setAttribute("isLogin", Boolean.TRUE);Date loginTime = new Date(session.getCreationTime());out.println("<h2>欢迎您," + user + "!</h2>");out.println("<h2>您的登录时间是:" + loginTime + "!</h2>");} else {out.println("<h2>请在下面输入登录信息</h2>");out.println("<form method=\"post\" action=\"login\">");out.println("<table>");out.println("<tr>");out.println("<td>用户名:</td>");out.println("<td><input name=\"user\" type=\"text\"></td>");out.println("</tr>");out.println("<tr>");out.println("<td>密码:</td>");out.println("<td><input name=\"pass\" type=\"password\"></td>");out.println("</tr>");out.println("<tr>");out.println("<td></td>");out.println("<td><input name=\"ok\" type=\"submit\" value=\"确定\">");out.println("<input name=\"cancel\" type=\"reset\" value=\"重置\"></td>");out.println("</tr>");out.println("</table>");out.println("</form>");}out.println("</body>");out.println("</html>");}}第二步:在web.xml文件中配置该Servlet<web-app>……<!-- ServerInfoServlet definition --><servlet><description></description><display-name>getSession</display-name><servlet-name> getSession </servlet-name><servlet-class>com.SessionServlet</servlet-class></servlet><!-- SessionServlet definition --><servlet-mapping><servlet-name>getSession</servlet-name><url-pattern>/getSession</url-pattern></servlet-mapping>……</web-app>第13章使用Servlet过滤器和监听器1、什么是过滤器?什么是监听器?分别应用在哪些方面?答:对Web应用来说,过滤器就是驻留在服务器端,在源数据和目的数据间,对Web请求和Web响应的头属性(Header)和内容体(Body)进行操作的一种特殊Web组件。

JavaWeb答辩问题

JavaWeb答辩问题

Web项目答辩问题1.css和div 开发的优势?A、显示和内容实现分离B、有利于搜索引擎搜索C、有利于维护和程序的扩展2.谈谈页面间的参数传递有哪些方式?A、通过作用域对象session、request 的setAttribute()和getAttribute()方法进行参数传递。

B、<jsp:forward><jsp:param name= value=></jsp:forward>C、request.gerRequestDispatcher(“1.jsp?name=XX”).forward(requ est,response);D、<jsp:useBean id= class= scope=request/session>3.hidden表单域有什么作用?A、多个表单的区分B、多个提交按钮4.jsp有哪些内置对象?pageContex,request,session,application,request,out,exception ,config,page,5.request的作用有哪些?获取客户端传递的参数值获取客户端请求头信息获取会话获取转发对象可作为容器使用, 利用setAttribute()和getAttribute()方法进行参数传递6.session有什么作用。

因为http协议是无状态的协议,但我们需要保存客户端在多次请求之间状态信息的时候,我们需要session来维护客户端的状态Session对象类似于一个容器,可以存放任何对象,以供不同页面间共享数据7.application有什么作用。

保存的一些全局性的对象信息。

8.在jsp中怎样操作page作用域特定于JSP 的一个类型,代表当前的JSP 页面。

pageContext.setAttribute(“java”,”lovo”);9.jsp有哪些动作?作用分别是什么?<jsp:include /> 包含<jsp:forward /> 转发到另一页面相当于request.gerRequestDispatcher(“1.jsp?name=XX”).forward(request,response);<jsp:usebean /> 设置javaBean<jsp:setProperty /> 设置属性<jsp:getProperty /> 获得属性<jsp:plugin /> 设置插件10.java servlet api中forward() 与redirect()的区别?1.forward客户端请求服务器一次,redirect请求服务器两次,所以forward方式可以获得request作用域的信息,而redirect方式不能获得。

软件工程师面试题(含答案)

软件工程师面试题(含答案)

软件工程师面试题(含答案)一、MVC设计模式及其优缺点,结合Struts框架讨论其在Web应用中的使用MVC是一种应用观察者模式的框架模式,包括三个主要组成部分:模型、视图和控制器。

模型是业务处理层,独立于表现层;视图通过客户端数据类型显示数据,并回显模型层的执行结果;控制器是视图层和模型层之间的桥梁,控制数据的流向,接受视图层发出的事件,并重绘视图。

MVC的优点是分离了应用程序的关注点,使得应用程序更易于维护和扩展。

缺点是增加了开发复杂度,需要更多的代码和设计时间。

在Web应用中,常用的MVC实现模式是Servlet-centric,即使用JSP、Servlet和JavaBean实现。

其中,JSP负责显示和收集数据,Servlet连接视图和模型,将视图层数据发送给模型层,JavaBean分为业务类和数据实体,业务类处理业务数据,数据实体承载数据。

Struts是一个Web应用程序框架,使用MVC实现模式二,即以控制器为核心。

它提供了一些组件,包括:Model:Struts没有提供model类,开发者需要自行提供商业逻辑的JavaBean或EJB形式。

View:n form创建form bean,用于在控制器和视图之间传输数据。

此外,Struts还提供了自定义JSP标签库,辅助开发者用JSP创建交互式的以表单为基础的应用程序。

应用程序资源文件保留了一些文本常量和错误消息,可转变为其它语言,可用于JSP中。

nServlet,n。

n需要符合Struts规范,并在struts-config.xml中进行配置,n form,n控制器。

n控制器提供了model的逻辑接口。

WebService是基于SOA架构的,不依赖于语言和平台,可实现不同语言间的相互调用,进行基于Http协议的网络应用交互。

WebService遵守WSDL/SOAP规范,实现不同语言间的调用。

Web Service = WSDL + SOAP + UDDI(webservice的注册)。

jsp四种会话跟踪技术

jsp四种会话跟踪技术

1.共享数据在web中的范围(四种会话跟踪技术)(1).page:仅在当前页可用(保存在当前的PageContext中)(2).request:仅用于当前客户端的请求(保存在ServletRequest对象中),它在同一个请求范围内有效.(3).session:仅在当前的HttpSession的生命周期内,当前浏览器窗口的整个生存期都有效.关闭浏览器时,这个对象会跟着消失,在整个对话期间都有效.(4).application:在整个应用范围内都有效,只有当服务器重启时,这个对象才会消失.2.Servlet的生命周期。

(1)初始化阶段,Servlet容器调用init()初始化Servlet对象。

(2)执行阶段, Servlet容器创建ServletRequest对象和ServletResponse对象,Servlet调用service方法来处理客户端的请求了,调用doGet(),doPost()方法接收客户端的请求,并且发回相应的响应。

(3)终止阶段,当Web应用被终止,或Servlet容器终止运行,或Servlet容器重新装载Servlet的新实例.Servlet调用destroy方法释放占用的资源3. 至少要能说出7个隐含对象以及他们的区别(1) request:代表了客户端的请求信息,主要用于接受客户端通过HTTP协议传送到服务器端的数据.它是javax.servlet.ServletRequest的一个实例.(2) response:用于用户端发送数据,它封装由JSP引擎产生的响应,并将响应返回给客户端.它是javax.servlet.ServletResponse类的一个实例.(3) out :用来输出各种类型的数据流,为用户打开的输出流,它是javax.servlet.jsp.JspWriter类的一个实例.(4) session:为发送请求的每一位客户建立一个会话,并且只对HTTP的用户请求有效.作用域是一次会话.它是javax.servlet.http.HttpSession类的一个实例.(5) exception:运行时的异常,即被调用的错误页面中的结果(6) page:JSP网页本身(7) application:它是javax.servlet.ServletContext类的一个实例,作用域是对所有的访问,当服务器启动时,applcation对象就被创建,生存期将一直持续到服务器关闭.(8) config:表示servlet的配置.(9) pageContext:管理网页的属性4. JSP的常用指令<%@ page language= “java” import = “” errorPage=”” isErrorPage= “” method = “”contxtPage=”text/html;charset=UTF-8” %><%@ include file = “”%><%@ taglib uri = “”%>5.forward 和redirect的区别<jsp:include page="included.jsp" flush="true"><jsp:forward page= "nextpage.jsp"/>前者页面不会转向include所指的页面,只是显示该页的结果,主页面还是原来的页面。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
设置域和路径
setDomain();setPath()
Cookie的生命周期
getMaxAge();setMaxAge()
Cookie的安全性
setSecure()
Cookie协议版本
getVersion();setVersion()
服务器如何知道要调用哪个Servlet?
部署描述符中指定要调用的Servlet类 映射
初始化和清除:
init()
getInitParameter() super.init()
destroy()
JSP的生命周期


JSP编译

JSP引擎先将JSP文件转化成Servlet,然后再编译Servlet

缓冲响应
setBufferSize();getBufferSize() Flush();reset()

HttpServletResponse


设置报头变量

setHeader();addHeader()
让浏览器重定向

sendRedirect()
setStatus();setError() encodeURL();encodeRedirectURL() addCookie()
JSP初始化

jspInit()
_jspService() jspDestroy()
JSP执行


JSP清除

JSP重载
当修改JSP本身时,系统会自动识别你的修改,
重新编译执行 如果调用其他的类作了修改,而JSP本身未作修 改,修改的内容不会立即体现出来。
第十二章 浏览器和服务器的交互
HTTP协议
Http是一种简单的网络套接字连接,构建在
TCP/IP之上,Web服务器通常在端口80处侦听 连接请求。 是一种无状态连接 可以用telnet和web服务器进行交互
常用的请求报头
Accept报头:指定浏览器所能接收内容的类型 Accept-Language报头:浏览器使用语言的优先级顺序 Accept-Charset报头:浏览器选择字符集的优先级顺序 User-Agent报头:表明什么样的浏览器发送的请求, 这可能是最有用的,Netscape和IE都标识自己为 Mozilla,如何区分是不是,只需察看User-Agent中是 否有MSIE的字样。
HttpServletRequest
和HTTP协议相关 获取报头各项值


getHeaderNames();getHeader() getMethod


获取Http方法

接收Cookie


getCookies()
getSession(true|false)
获取Session信息

ServletContext

常用的响应报头
Content-Type报头:文档类型,常用的是
text/html类型 Content-Length报头:对于许多包含二进制数据 的内容来说非常重要 Cache-Control报头:控制浏览器保存一个页面 的时间
Get和Post方法
当调用方法为get()时,参数信息附在URL的后

… <form action=“UploadServlet” method=“post” enctype=“multipart/formdata” > <input type=“file” name=“foo” > </form> …


获得地区信息

getLocale();getLocales()
面,用“?”隔开,参数通常是“名字=值”的 形式,参数之间用“&”隔开 当调用方法为post()时,浏览器发送的信息附着 在请求报头之后 get()方法受传递信息长度的限制,同时还存在 一定的安全隐患 默认为get()方法
HTTPS—安全的HTTP
采用SSL(Secure
Sockets Layer) 访问方式https://…
浏览器
Web 服务器
SSL
TCP/IP
第十三章 核心Servlet组件
核心Servlet组件
ServletRequest ServletResponse HttpServletRequest HttpServletResponse ServletContext HttpSession ServletInputStream ServletOutputStream Cookie
返回状态信息

给URL编码

发送Cookie

输入输出流
ServletInputStream
readLine()
ServletOutputStream
print();println()
HttpSession
存储和接收对象
setAttribute();getAttribute()
控制session的终止
invalidate()
getMaxInactiveInterval();setMaxInactiveInterval()
获得session状态信息
getId() getCreationTime();getLastAccessedTime()
Cookie


接收请求数据
getContentLength();getContentType();getCharacterEncoding() getReader();getInputStream()

ServletRequest(续)

处理上载文件
采用ServletInputStream进行处理 上载页面的写法

ServletRequest

访问request参数
getParameter() getParameterNames();getParameterValues()


访问request的属性

setAttribute();getAttribute()
获得协议方面的信息
getServerName();getServerPort() getRemoteHost();getRemoteAddr()
第十一章 JSP和Servlet的生命周期
Servlet技术—生命周期
初始期:init()
运行期:service() 结束期:destroy() Init() doGet() doPost()
service()
doHead() doOption() …….
destroy()
Servlet加载和卸载


初始化参数

getInitParameterNames();getInitParameter()
保存应用程序范围内的对象

setAttribute();getAttribute()
log() getRequestDispatcher() getResource();getResourceAsStream()
记录日志

调用其他Servlet和JSP

访问应用程序资源

ServletResponse


设定内容类型和长度

setContentType();setContentLength()
打开一个输出流

getOutputStream();getWriter()
setLocale()
设置地区特定信息
相关文档
最新文档