Java Web总结.doc

上传人:一*** 文档编号:12572166 上传时间:2022-04-25 格式:DOC 页数:25 大小:49KB
返回 下载 相关 举报
Java Web总结.doc_第1页
第1页 / 共25页
Java Web总结.doc_第2页
第2页 / 共25页
点击查看更多>>
资源描述

《Java Web总结.doc》由会员分享,可在线阅读,更多相关《Java Web总结.doc(25页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Java Web总结Java Web总结JavaWebWeb访问原理客户1输入网址5页面内容HTTP超文本协议2发出请求客户端浏览器4返回结果服务器3处理请求浏览器只能读取Html文本所以服务器返回的只是Html服务器动态生成Html页面服务器工作原理服务器产生动态页面的方法和技术:实现动态输出HTML页面时由运行在服务端的CGI程序产生的,CGI根据不同客户的请求输出相应的HTML页面,然后Web服务器在把这个静态页面返回哥浏览器作为客户端的响应。CGI的操作过程服输出生成Html务页面端请求运行某个CGI程序CGI程序(生成所需的Html文件)数据库读取数据和文件注意:CGI程序在服务器执

2、行,并可以和Web服务器在同一个主机上。CGI可以访问存储数据库中的数据和其他系统中的文件。CGI的不足:需要为每个请求都启动一个操作CGI的系统进程,开销很大。需要重复编写出来网络歇息的代码及进行编码,非常耗时。JavaServletJavaServlet改进的CGI思想:CGI程序为每个请求都运行一个CGI程序的系统进程开销很大,Servlet技术只需要启动一次服务进程而且只需加载一次JVM,之后这个JVM在加载另外的类。好处:只需启动一个操纵系统进程以及加载一个JVM,大大降低了系统的开销如果有多个请求需要做同样的处理的时候,这时只需加载一个类。所有动态加载的类可以实现对网络协议以及请求

3、解码的代码共享Servlet能够直接额Web服务器交互,能够各个程序之间共享数据,数据库连接池之类的功能很容易实现Servlet类重复使用PrintWriter.println();方法来输出相应的HTML页面,以达到动态生成HTML页面的效果。注意:所有的JavaWeb服务器都应该遵守JavaServletAPI(运用程序接口)的编码标准。Servlet的缺点:Servlet生成网页的方法是在Java类中嵌入HTML标签和表达式,所以修改起来很麻烦。JSP基本原理JSP:Servlet的模板JavaServerPages(JSP)是一种实现静态HTML和动态HTML混合编码的技术,是Serv

4、letAPI的一个扩展。JavaBean返回的数据JSP页面访问原理服务器端浏览器请求调用某个JavaBean组件读取数据库和文件JavaBean(基于Java组件)返回HTML页面数据库服务器存储的JSP文件(后缀.jsp)相应请求JSP基本原理:Web容器出来JSP文件步骤翻译阶段编译阶段请求处理阶段会话会话请求会话翻译转换JavaServlet实现代码(.java)编译JavaServlet实现类(.class):二进制文件激活请求准备JavaServlet实现对象Java编译工具Java编译工具JSP容器响应翻译阶段:JSP文件首先被Web容器中的JSP引擎转换成Java源代码也是就是

5、通过Servlet引擎编译阶段:JSP文件所翻译成的Java源代码会被翻译成可执行的二进制文件请求阶段:当容器接受了客户端的请求后,就执行前面已经编译成的二进制的JSP文件,容器吧生成的页面反馈给客户进行显示。注意:一旦容器把JSP文件翻译和编译之后来自客户端的每一个JSP请求就可以重用这个编译好的二进制文件,没有必要把同一个JSP进行翻译和编译。也就是说如果一个JSP文件是第一次请求要经历上述三个阶段,如果一个JSP文件之前已经就被请求过就没必要经历翻译和编译阶段,直接使用编译好的二进制文件。扩展阅读:Java Web总结JavaWeb总结1.Web工作原理.21.1.HTTP处理步骤.21

6、.2.HTTP请求的组成.21.3.HTTP响应的组成.31.4.理解HTTP无状态协议.31.5.CGI与Servlet.31.6.Servlet的主要任务.41.7.Web容器.41.8.JavaWeb应用程序的组成.42.Servlet基础.42.1.Servlet框架的组成.42.2.Servlet编码和部署.52.3.ServletURL映射路径.52.4.Servlet生命周期.62.5.ServletConfig与ServletContext.63.HTTP请求.83.1.Servlet与Web容器配合处理请求和响应.83.2.GET与POST提交方式的区别.83.3.获取HTT

7、P协议请求行.83.4.获取HTTP协议请求头.93.5.获取表单数据.93.6.请求转发.93.7.请求范围对象绑定.94.HTTP响应.94.1.HTTP状态行.94.2.设置响应头.104.3.设置响应消息体.104.4.传输数据.104.4.1.传输文本数据.104.4.2.传输二进数据.104.4.3.请求重定向.105.Web应用程序状态管理.115.1.Cookie.115.2.Session.115.3.URL重写.126.对象作用域与Servlet事件监听器.136.1.对象作用域.136.2.监听器.137.过滤器.158.JSP.JSP运行机制:.16JSP语法和语义.1

8、68.2.1.JSP脚本元素.168.2.2.JSP注释.178.2.3.JSP指令.178.2.4.JSP标准动作.178.2.5.JSP隐式对象.179.JavaWeb开发模式.189.1.MVC模型.189.1.1.视图.189.1.2.模型.189.1.3.控制器.189.2.MVC实现步骤.1910.JSTL与EL表达式.1910.1.EL表达式解释.1910.2.在EL表达式中的隐式变量.198.1.8.2.1.Web工作原理1.1.HTTP处理步骤创建与服务器的连接发送HTTP请求接收客户端HTTP请求,生成HTTP响应回发关闭与服务器的连接1.2.HTTP请求的组成请求行请求头

9、空行消息体1.3.HTTP响应的组成状态行响应头空行消息体1.4.理解HTTP无状态协议主要是说,客户机的状态,服务器是不知道的。比如说,用户关掉浏览器,服务器无法得知。只能向客户端提供静态网页内容1.5.CGI与ServletCGI:即通用网关接口(CommonGatewayInterface),它可以用Shell、Perl、C、PHP、Python等编写。每次请求就打开一个CGI进程,严重消耗服务器资源。极大地限制了一个服务器可以支持的并发CGI用户数量,但是安全性高。Servlet:Servlet与Web容器被设计用来解决CGI的问题,JavaServlet的优点在于它们的执行速度更快于

10、CGI程序。各个用户请求被激活成单个程序中的一个线程,而无需创建单独的进程,这意味着服务器端处理请求的系统开销将明显降低。Servlet运行在一个主进程或者一个父程序中,这就是为什么Servlet更高效的关键原因。1.6.Servlet的主要任务读取客户端发送的显式和隐式数据生成结果向客户端发送显式数据(即文档)和隐式数据(HTTP响应数据)1.7.Web容器Web容器负责管理和运行Servlet,容器对Servlet的支持包括:通信支持生命周期管理多线程支持JSP支持处理安全性1.7.1.1.1.7.1.2.1.7.1.3.1.7.1.4.1.7.1.5.1.8.JavaWeb应用程序的组成

11、配置文件、静态HTML文件和JSP、类文件和包。2.Servlet基础2.1.Servlet框架的组成Servlet框架的核心是:javax.servlet.Servlet接口,所有的Servlet都必须实现这一接口。Servlet框架是由2个Java包组成:javax.servlet和javax.servlet.httpjavax.servlet包中定义了所有Servlet类都必须实现的接口和类。javax.servlet包的接口为:ServletConfig接口-在初始化过程中由Servlet容器使用ServletContext接口-定义Servlet用于获取容器信息的方法ServletR

12、equest接口-向服务器请求信息ServletResponse接口-响应客户端请求Servlet接口-定义所有Servlet必须实现的方法javax.servlet包中的类为:ServletInputStream类-用于从客户端读取二进制数据ServletOutputStream类-用于将二进制数据发送到客户端GenericServlet类-抽象类,定义一个通用的,独立于底层协议的Servlet。javax.servlet.http包中定义了采用HTTP通信的HttpServlet类。javax.servlet.http包的接口为:HttpServletRequest接口-提供http请求H

13、ttpServletResponse接口-提供http响应HttpSession接口-用于标识客户端并存储有关客户信息HttpSessionAttributeListener接口-实现这个侦听接口用户获取会话的属性列表的改变的通知javax.servlet.http包中的类:HttpServlet类-扩展了GenericServlet的抽象类,用于扩展创建HttpServlet处理Http请求Cookie类-创建一个Cookie,用于存储Servlet发送给客户端的信息注意javax.servlet包和javax.servlet.http包的区别,javax.servlet.http这个包里的

14、类都去实现了javax.servlet包里的接口,用于专门用于HTTP协议。2.2.Servlet编码和部署Servlet体系结构:Servlet-GenericServlet-HttpServlet-用户自定义的Servlet2.2.1.1.用户自定义的Servlet继承HttpServlet,重写一下方法中的一个:doGet()和doPost()2.2.1.2.在容器中注册Servlet,配置web.xml,在web.xml文件中加入Hellocom.lovo.servlet.Hello2.2.1.3.映射虚拟路径,同样是通过配置web.xml,在web.xml文件中加入Hello/Hel

15、lo2.3.ServletURL映射路径2.3.1.1.精确模式匹配。这种类型的模式用于将请求一对一映射到指定的Servlet。2.3.1.2.扩展名匹配“*.扩展名”。在这种情况下,所有以指定扩展名结尾的URL都转向指定的Servlet。2.3.1.3.路径映射。路径映射必须以/开始,以/*结尾,在这之间可以出现任意字符。路径匹配通常用于将对某个目录的所有请求转向一个指定的Servlet。2.3.1.4.默认的Servlet,/。默认的Servlet映射用于定义一个在没有给出路径信息时请求转向的Servlet。2.4.Servlet生命周期Servlet的生命周期由Servlet容器控制,该

16、容器创建Servlet的实例。Servlet生命周期就是指创建Servlet实例后响应客户请求直至销毁的全过程。Serlvet生命周期的三个方法:init()-service()-destroy()Servlet生命周期:实例化:Servlet容器创建Servlet类的实例对象,有两种方式,一种是容器检测到需要这个Servlet来响应第一个请求时,创建Servlet实例。另一种是容器启动时创建Servlet实例,1,数字越小启动顺序越靠前。初始化:Servlet容器调用Servlet的init()方法服务:容器调用service()方法,根据请求的方式,调用doGet或者doPost方法销毁:

17、销毁实例之前调用destroy()方法2.5.ServletConfig与ServletContext2.5.1.ServletConfig与ServletContext的关系一个Servlet对应一个ServletConfig,也就是说容器加载了多少个Servlet就有多少个ServletConfig。而ServletContext是在容器启动时创建,一个Web应用一个ServletContext,可以把ServletContext看成是一个全局变量,所有的Servlet共享。2.5.2.ServletContext应用上下文属于整个Web应用程序,可以访问到Web应用程序资源的本地输入流,

18、把资源的虚拟路径转换为物理路径,绑定一个对象在整个Web应用程序中共享。常用的方法有:getRealPath():返回一个web资源的真实路径getResourcePaths(path):返回一个指定路径下的所有资源列表getResourceAsStream(path):返回一个资源的InputStreamgetResource(path):返回一个web资源的URL地址setAttribute(name,value):保存一个共享数据getAttribute(name):提取共享数据2.5.3.ServletConfig通过重写有参数的init(ServletConfigconfig)方法获

19、取到ServletConfig对象,通过config.getInitParameter(driver)方法获取到web.xml里相对应的配置信息。publicvoidinit(ServletConfigconfig)throwsServletExceptionHellocom.lovo.servlet.Hellodriver/TODOAuto-generatedmethodstubconfig.getInitParameter(driver);super.init(config);Hello:com.mysql.driver.Driver3.HTTP请求3.1.Servlet与Web容器配合处

20、理请求和响应3.1.1.客户端向Web服务器发起一个HTTP请求。3.1.2.HTTP请求被Web服务器接受,如果请求的是静态页面,则由Web服务器负责处理。如果请求的是JavaWeb组件(Servlet或者JSP),则移交给Web容器。Web容器可以在主机的同一个进程、不同的进程或其他的Web服务主机的进程中启动。3.1.3.Web容器根据Servlet的配置文件确定调用的具体Servlet类,并把HttpServletRequest对象、HttpServletResponse对象传给它。3.1.4.Servlet通过HttpServletRequest对象知道客户端的使用者是谁,客户的请求

21、信息是什么和其他的一些信息。Servlet处理完请求后把要返回的信息放入HttpServletResponse对象返回到客户端。3.1.5.一旦Servlet完成了请求的处理,Web容器就会刷新HttpServletResponse,把控制权返回给web服务器。由此可见,每一次请求容器都会创建去创建HttpServletRequest对象与HttpServletResponse3.2.GET与POST提交方式的区别GET方式只能提交文本数据,POST即可以提交文本数据也可以提交二进制数据。GET方式一次只能提交1024个字节,而POST没有限制。安全性问题。使用GET的时候,参数会显示在地址栏

22、上,而POST不会。所以,如果这些数据是中文数据而且是非敏感数据,那么使用GET,如果用户输入的数据不是中文字符而且包含敏感数据,那么还是使用POST为好。3.3.获取HTTP协议请求行3.3.1.getMethod():获取HTTP的请求方法,例如GET、POST等3.3.2.getRequestURI():获取请求的URI资源3.3.3.getRequestURL():获取请求的URL,包含协议名、服务器名或IP、端口号和请求资源但不包括查询字符串参数3.3.4.getQueryString():获取请求URL后面的查询字符串3.3.5.getProtocol():获取HTTP的协议名和版

23、本号3.3.6.getContextPath():获取请求URI资源的上下文路径3.3.7.getServletPath():获取Servlet的映射路径3.4.获取HTTP协议请求头1.2.3.4.5.getHeader(name):返回指定的请求头的值getHeaders(name):返回一个Enumeration(枚举)包含请求头中的所有值getHeaderNames():特定请求中接受到的所有请求头的名称getIntHeader(name):获取特定请求头的值,并将其转化为int类型getDateHeader(name):获取特定请求头的值,并将其转化为Date类型3.5.获取表单数据

24、1.getParameter(parameterName):获取表单参数的值,参数名区分大小写,与HTML表单中出现的参数名一致,GET请求还是POST请求都可以采用相同的方式2.getParameterValues(parameterName):获取同一个参数名的多个参数值,返回字符串数组对象3.getParameterNames():以Enumeration(枚举)的方式返回请求中所有的表单参数名列表3.6.请求转发请求转发是客户端向服务器发送请求后,服务器将这一次请求又交给了另一个Servlet。由另一个servlet来作出响应。请求转发只有一次请求。1.getRequestDispat

25、cher(path):方法返回给定路径的RequestDispatcher对象2.getNamedDispatcher(name):返回某个名称的Servlet的RequestDispatcher对象3.forward(ServletRequest,ServletResponse):派发请求和响应对象到RequestDispatcher对象所确定的新资源(Servlet、JSP或者HTML等)4.include(ServletRequest,ServletResponse)该方法关键是能包含服务器端的资源3.7.请求范围对象绑定变量可以可以通过request.setAttribute(valu

26、e,param)将对象保存在请求范围中,可以通过request.getAttribute(value)获取在请求范围内所绑定的相应的对象但是在请求范围之外就不能进行访问了。结合请求转发理解。4.HTTP响应4.1.HTTP状态行状态行分为HTTP协议、状态码和状态描述三个部分100-199:表示信息性代码,标示客户端应该采取的其他动作,请求正在进行。200-299:表示客户请求成功。300-399:表示用于已经移走的资源文件,指示新的地址。400-499:表示由客户端引发的错误。500-599:表示由服务器端引发的错误。浏览器会根据以上的状态码作出相应的处理。通过response.setSta

27、tus(HttpServletResponse.SC_NOT_FOUND),设置响应的响应码,注意使用HttpServletResponse的常量进行设置。4.2.设置响应头1.2.3.4.5.6.7.setHeader()addHeader()setIntHeader()setDateHeader()containsHeader()setContentType()addCookie()4.3.设置响应消息体response.setContentType(image/gif);方法可以处理乱码和显示其他形式的内容例如把内容以其它的形式显示出来(如:图片、Excel等)4.4.传输数据4.4.1

28、.传输文本数据利用PrintWriterout=response.getWriter()获取一个字符输出流传输文本out.println(HelloWorld);4.4.2.传输二进数据利用OutputStringout=getOutputStream()获取一个字节输出流传输二进制数据our.write(byteb);4.4.3.请求重定向response.sendRedirect(:3030/bbs/main.html);与请求传发不同,重定向是先对客户端作出响应,响应码为302或者307,浏览器再根据重定向的路径再发起一次新的请求。(结合请求转发理解)5.Web应用程序状态管理对容器而言

29、,每一个请求都来自于一个新的客户,我们可以利用Cookie、Session、以及URL重写让服务器知道,这一系列的请求都是同一个用户的行为。5.1.Cookie服务器在响应请求时将一些数据以“键-值”对的形式通过响应信息保存在客户端。Cookiecookie=newCookie(cookie,tiger!);response.addCookie(cookie);Servlet中提供了如下一系列操作Cookie的API:1.Cookie(name,value):构造方法用于创建一个或多个Cookie2.setMaxAge(intlifetime):设置Cookie的过期时间(以秒为单位)。默认值

30、为负值(Cookie将在浏览器关闭时过期)3.getMaxAge():获取Cookie的过期时间。4.setName(StringcookieName):设置Cookie的名字5.getName():获取Cookie的名字6.setValue(Stringvalue):指定Cookie的值。7.getValue():获取Cookie的值5.2.Session服务器可以为客户端创建并维护一个Session对象,用于存放数据。在创建Session对象的同时,服务器将会为该Session对象产生一个唯一编号,这个编号称之为SessionID,服务器以Cookie的方式将SessionID存放在客户端。当浏览器再次访问该

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 汇报体会

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁