下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、JavaWeb组件(试必看)1.ServletServlet是来处理客户端请求的动态资源,也就是当我们在浏览器中键个地址回车跳转后,请求就会被发送到对应的Servlet上进处理。1.1 Servlet的任务有:1)接收请求数据:客户端请求会被封装成HttpServletRequest对象,包含了请求头、参数等各种信息。2)处理请求:通常我们会在service、dopost或者doget法进接收参数,并且调业务层(service)的法来处理请求。3)完成响应:处理完请求后,我们般会转发(forward)或者重定向(redirect)到某个页,转发是HttpServletRequest中的法,重定
2、向是HttpServletResponse中的法,两者是有很区别的。1.2 Servlet的创建:Servlet可以在第次接收请求时被创建,也可以在在服务器启动时就被创建,这需要在web.xml的中添加条配置信息 5,当值为0或者于0时,表容器在应启动时就加载这个servlet,当是个负数时或者没有指定时,则指容器在该servlet被请求时才加载。/Servert/requestadress / Servlet映射个请求地址 Servletweb服务器请求要有请求地址web服务器,如发送的请求为个地址/requestadress,web.XML中会映射这个请求地址给ServletServlet
3、-namewebServlet-nameServlet实例, Servletservice()法完成数据的处理。1.3 Servlet命周期Servlet的命周期是指Servlet的对象由被创建到销毁的过程。Servlet的命周期法:1)构造器:- Servlet第次处理请求的时候调,于创建Servlet的实例,只会调次。- Servlet是单例,同个Servlet在服务器中只有个对象,但是它是多线程的,效率;- 它是以多线程的式调service()法,Servlet不是线程安全的,在service()中尽量不要操作全局变量。2)init()-构造器执后,init马上被调,来做初始化操作,只会
4、调次-注意如果我们调的是HttpServlet,那么他有两个init法,如果要重写只能重写参的法。3)service()-每次处理请求时都会调service法,它来处理户发送的请求,会调多次-如果我们通过继承HttpServlet实现Servlet,我们只需重写doGet或doPost4)destroy()-Servlet对象销毁之前调,来做些收尾作吗,只会调次。1.4 ServletConfig接每个Servlet都有其唯对应的ServletConfig,ServletConfig代表Servlet的配置信息,具体来说就是servlet标签中的内容usernameroot1.5 Servle
5、tContext接代表整个的web应,每个web应都有其唯的ServletContext对象,ServletContext对象在服务器启动时创建,在服务器停时销毁获取:通过ServletConfig的getServletContext()法获取1.6 HttpServletRequest接request代表浏览器发送给服务器的请求报获取:由服务器创建(服务器将请求报封装为HttpServletRequest对象),最终作为参数传递到doGet或doPost法中。功能:1)获取浏览器发送的请求参数2)动态的获取项的名字(主要来设置绝对路径)3)作为个域对象在不同web资源之间共享数据4)请求的转
6、发1.7 HttpServletResponse接代表服务端发送浏览器的响应报获取:由服务器创建(服务器将响应报封装为HttpServletRsponse对象),最终作为参数传递到doGet或doPost法中。功能;1)可以向浏览器发送个页或页段2)做请求的重定向3)将数据写到页1.8 转发和重定向的区别两种跳转获得对象的式/getRequestDispatcher()HttpServletResponse(httpServletResponse).sendRedirect();转发和跳转的结1、转发使的是getRequestDispatcher()法;重定向使的是sendRedirect()
7、;2、转发:浏览器URL的地址栏不变。重定向:浏览器URL的地址栏改变;3、转发是服务器为,重定向是客户端为;4、转发是浏览器只做了次访问请求。重定向是浏览器做了少两次的访问请求;5、转发2次跳转之间传输的信息不会丢失,重定向2次跳转之间传输的信息会丢失(request范围)。转发和重定向的选择1、重定向的速度转发慢,因为浏览器还得发出个新的请求,如果在使转发和重定向都所谓的时候建议使转发。2、因为转发只能访问当前WEB的应程序,所以不同WEB应程序之间的访问,特别是要访问到另外个WEB站点上的资源的情况,这个时候就只能使重定向了。转发和重定向的应场景在上我已经提到了,转发是要重定向快,因为重
8、定向需要经过客户端,转发没有。有时候,采重定向会更好,若需要重定向到另外个外部站,则法使转发。另外,重定向还有个应场景:避免在户重新加载页时两次调相同的动作。例如,当提交产品表单的时候,执保存的法将会被调,并执相应的动作;这在个真实的应程序中,很有可能将表单中的所有产品信息加到数据库中。但是如果在提交表单后,重新加载页,执保存的法就很有可能再次被调。同样的产品信息就将可能再次被添加,为了避免这种情况,提交表单后,你可以将户重定向到个不同的页,这样的话,这个页任意重新加载都没有副作; 但是,使重定向不太便的地是,使它法将值轻松地传递给标页。采转发,则可以简单地将属性添加到Model,使得标视图可
9、以轻松访问。由于重定向经过客户端,所以Model中的切都会在重定向时丢失。但幸运的是,在Spring3.1版本以后,我们可以通过Flash属性,解决重定向时传值丢失的问题。要使Flash属性,必须在Spring MVC的配置件中添加个。然后,还必须再法上添加个新的参数类型:org.springframework.web.servlet.mvc.support.RedirectAttributes。如下所:RequestMapping(value=saveProduct,method=RequestMethod.POST)public String saveProduct(ProductForm
10、 productForm,RedirectAttributes redirectAttributes)/执产品保存的业务逻辑等/传递参数redirectAttributes.addFlashAttribute(message,The product is saved successfully);/执重定向return redirect:/;1.9 Servlet的线程安全性?Servlet不是线程安全的当Tomcat接收到Client的HTTP请求时,Tomcat从线程池中取出个线程,之后找到该请求对应的Servlet对象并进初始化,之后调service()法。要注意的是每个Servlet对象
11、再Tomcat容器中只有个实例对象,即是单例模式。如果多个HTTP请求请求的是同个Servlet,那么着两个HTTP请求对应的线程将并发调Servlet的service()法。上图中的Thread1和Thread2调了同个Servlet1,所以此时如果Servlet1中定义了实例变量或静态变量,那么可能会发线程安全问题(因为所有的线程都可能使这些变量)。1.10 Servlet实现线程安全的三种式(1)在Servlet中不使全局变量.Servlet线程安全问题很部分是由实例变量造成的,只要在Servlet的任何法都不使实例变量,那么该Servlet就是线程安全的。将实例变量编程局部变量,多线程
12、下每个线程对局部变量都会有的份copy,这样对局部变量的修改只会影响到的copy不会对别的线程产影响,线程安全的。*Java 内存模型中,法中的临时变量是在栈上分配空间,且每个线程都有私有的栈空间,所以它们不会影响线程的安全。*但是对于实例变量来说,由于servlet在Tomcat中是以单例模式存在的,所有的线程共享实例变量。多个线程对共享资源的访问就造成了线程不安全问题。(2)同步共享的数据,使synchronized(this)/共享数据.同步块.使synchronized 关键字能保证次只有个线程可以访问被保护的区段,在本论中的Servlet可以通过同步块操作来保证线程的安全。(3)实现
13、SingleThreadModel接.该接指定了系统如何处理对同个Servlet的调。如果个Servlet被这个接指定,那么在这个Servlet中的service法将不会有两个线程被同时执,当然也就不存在线程安全的问题。2.1 Filter简介filer是javaweb中的过滤器,它与servlet样,也有三个命周期法,同时在web.xml的配置也差不多.但是两者的主要功能不同,servlet负责处理请求,filter负责拦截请求和放.可以实现Url级别的权限访问,敏感词汇过滤,解决编码问题等等.2.2 filter实现原理Filter接中有个doFilter法,当我们编写好Filter,并配
14、置对哪个web资源进拦截后,WEB服务器每次在调web资源的service法之前,都会先调下filter的doFilter法,因此,在该法内编写代码可达到如下的:(1)调标资源之前,让段代码执。(2)是否调标资源(即是否让户访问web资源)。(3)调标资源之后,让段代码执。web服务器在调doFilter法时,会传递个filterChain对象进来,filterChain对象是filter接中最重要的个对象,它也提供了个doFilter法,我们可以根据需求决定是否调此法,调该法,则web服务器就会调web资源的service法,即web资源就会被访问,否则web资源不会被访问。2.3 filter的四种拦截式REQUEST:直接访问标资源时执过滤器。包括:在地址栏中直接访问、表单提交、
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年石材清洁保养合同3篇
- 二零二五年度U8+电子合同云服务合作协议3篇
- 二零二五年度全球供应链金融风险控制合作协议3篇
- 舞蹈编导专业就业能力展示
- 2024版快递收派服务合同范本
- 2025版矿山安全生产事故调查处理合同范本3篇
- 2024版加油站租赁业务经营合同条款版
- 2024年高新技术产业贷款抵押协议2篇
- 二零二五年度10kv配电站施工违约责任合同2篇
- 2025钢材运输合同模板
- 我国农村社会保障制度存在的问题分析及对策样本
- 西晋的短暂统一和北方各族的内迁 一等奖
- RTO工艺流程简介
- 语文新课标背景下单元整体教学:六下第4单元大单元设计
- 最高人民法院民事审判第一庭裁判观点侵权责任卷
- 提高自我意识的方法
- 长租公寓课件
- 《康复护理专科》课件
- 2024年度医院肝胆胰脾外科带教计划课件
- 品质部规划方案
- JGJT157-2014 建筑轻质条板隔墙技术规程
评论
0/150
提交评论