版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JavaWeb项目式开发教程实现网站在线调查使用监听器统计在线人数能运用Servlet技术进行实际项目开发,培养创新思维和实践能力。掌握Servlet的配置方法。掌握编写和调用Servlet的方法。掌握运用Servlet处理实际问题的方法。学习目标项目4使用Servlet技术响应用户请求12使用过滤器验证会员登录3实现网站在线调查014.1
实现网站在线调查网站在线调查采用简单的选择和填写方式收集用户信息,操作简单,耗时短。调查数据可以帮助开发者了解用户的特定需求,为网站的改进指明方向。本任务实现一个网站在线问卷调查的JavaWeb项目。用户在问卷页填写问卷信息,单击“提交并查看”按钮,跳转到结果显示页,该页面显示用户填写的调查信息,任务说明4.1实现网站在线调查•问卷页不涉及服务器代码,使用静态网页HTML即可实现。•问卷页的form表单提交给Servlet进行处理。•Servlet负责接收用户的输入并向客户端浏览器输出。任务分析相关知识01040302什么是Servlet创建和配置ServletServlet常用的类和接口Servlet的生命周期4.1.1
什么是ServletServlet的概念Servlet的特点Servlet的版本1
Servlet的概念Servlet是一种服务器端的Java程序,由Web服务器负责加载,用于生成动态Web页面。Servlet使用JavaServlet应用程序接口(ApplicationProgramInterface,API)及其相关类和方法来实现功能。除了JavaServletAPI,Servlet还可以利用其他Java类库来扩展和增强功能。Servlet的主要作用是处理客户端传递的HTTP请求,并返回相应的响应结果。其涉及的功能如下所示。(1)创建并返回一个根据客户端请求生成的包含动态内容的JSP页面。(2)生成可嵌入现有HTML页面中的部分JSP页面片段。(3)与其他服务器资源(如文件、数据库、Applet、Java应用程序等)进行通信。(4)处理多个客户端连接,接收多个客户端的输入,并将结果返回给多个客户端。(5)通过MIME类型设置,以满足特定处理需求,例过滤上传文件类型、转换图形格式等。(6)为服务器提供定制的标准处理程序,例如设置用户认证的方式等。2
Servlet的特点Servlet不仅具有Java语言的优点,也对Web技术的相关应用进行了封装,其主要具有以下几个特点。(1)功能强大。(2)性能高。(3)安全性高。(4)灵活性和可扩展性强。(5)可移植。3
Servlet的版本Servlet版本、Tomcat版本和Java版本的对应关系。Servlet版本Tomcat版本Java版本Servlet5.0Tomcat10.0.x8andlaterServlet4.0Tomcat9.0.x8andlaterServlet3.1Tomcat8.5.x/Tomcat8.0.x7andlaterServlet3.0Tomcat7.0.x6andlaterServlet2.5Tomcat6.0.x5andlaterServlet2.4Tomcat5.5.x1.4andlaterServlet2.3Tomcat4.1.x1.3andlaterServlet2.2Tomcat3.3.x1.1andlater4.1.2
Servlet常用的类和接口ServletAPI提供了javax.servlet包,该包为编写Servlet提供了接口和类。所有的Servlet都必须实现Servlet接口,该接口定义了Servlet的生命周期方法。4.1.2
Servlet常用的类和接口编写Servlet时用到的是HttpServlet类,该类是GenericServlet类的子类,而GenericServlet类实现了Servlet接口。一般情况下要用到的HttpServletRequest接口继承自ServletRequest接口,HttpServletResponse接口继承自ServletResponse接口。Servlet接口HttpServlet抽象类HttpServletRequest接口HttpServletResponse接口类/接口描述Servlet接口定义Servlet必需的实现方法HttpServlet类提供Servlet接口的HTTP特定实现HttpServletRequest接口获取客户端的请求信息HttpServletResponse接口获取服务器端的响应信息ServletContext接口与相应的Servlet容器通信ServletConfig接口用于在Servlet初始化时向其传递信息1
Servlet接口Servlet接口是所有Servlet都必须直接或间接实现的接口。它由Web服务器负责创建并调用,用于接收和响应客户端请求。方法描述voidinit(ServletConfigconfig)Servlet实例化后,Servlet容器调用此方法来完成初始化工作ServletConfiggetServletConfig()返回传递到Servlet的init()方法的ServletConfig对象voidservice(ServletRequestreq,ServletResponseresp)处理request对象中描述的请求,使用response对象返回请求结果StringgetServletInfo()返回有关Servlet的信息,该信息是纯文本格式的字符串,如作者、版权等voiddestory()当Servlet将要卸载时,由Servlet容器调用并释放资源2
HttpServlet抽象类HttpServlet抽象类是所有基于Web的Servlet类的基础类。HttpServlet抽象类是专门为HTTP设计的,对Servlet接口中的方法都提供了默认实现。一般通过继承HttpServlet抽象类并重写它的doGet()和doPost()方法就可以实现自己的Servlet。方法描述voiddoPost(HttpServletRequestreq,HttpServletResponseresp)用于处理和响应HTTPPOST请求voiddoGet(HttpServletRequestreq,HttpServletResponseresp)用于处理和响应HTTPGET请求voiddoPut(HttpServletRequestreq,HttpServletResponseresp)处理HTTPPUT请求,请求URI指出被载入的文件位置voiddoDelete(HttpServletRequestreq,HttpServletResponseresp)用于处理和响应HTTPDELETE请求,删除服务器上指定资源voidservice(HttpServletRequestreq,HttpServletResponseresp)根据请求方式将请求分派到对应的doGet()、doPost()等具体方法3
HttpServletRequest接口HttpServletRequest接口封装了HTTP请求,通过此接口可以获取客户端传递的HTTP请求参数。方法描述StringgetContextPath()返回上下文路径,路径以“/”开头Cookie[]getCookies()返回所有Cookie对象,返回值类型为Cookie数组StringgetHeader(Stringname)返回指定的HTTP标头StringgetMethod()返回HTTP请求的类型,如GET和POST等StringgetQueryString()返回请求的查询字符串StringgetRequestURI()返回主机名到请求参数之间的字符串StringgetServletPath()返回请求URI上下文后的字符串HttpSessiongetSession()返回与客户端页面关联的HttpSession对象4
HttpServletResponse接口HttpServletResponse接口封装了对HTTP请求的响应。通过此接口可以向客户端发送响应。方法描述voidaddCookie(Cookiecookie)向客户端发送Cookie信息voidaddDateHeader(Stringname,longdate)使用指定日期值加入带有指定名称的响应头标voidsetHeader(Stringname,Stringvalue)设置具有指定名称和取值的一个响应头标StringgetCharacterEncoding()返回响应使用字符编码的名称voidsendError(intsc)发送一个错误状态代码为sc的错误响应到客户端voidsendError(intsc,Stringmsg)发送包含错误代码状态及错误信息的响应到客户端voidsendRedirect(Stringlocation)将客户端请求重新定向到新的URL4.1.3
创建和配置Servlet类1.创建Servlet类2.使用配置文件web.xml配置ServletServlet的配置方式有两种:使用配置文件web.xml进行配置和使用@WebServlet注解进行配置。在Servlet3.0之前,只能使用web.xml进行配置,(1)通过servlet标签声明Servlet类,此标签包含两个子标签,分别为servlet-name和servlet-class。(2)使用servlet-mapping标签映射访问Servlet类的URL,servlet-mapping标签有两个子标签,分别为servlet-name和url-pattern。例4-1创建Servlet类示例。子标签描述servlet-name指定Servlet的名称,必须唯一servlet-class指定Servlet类的全限定名,包括包名和类名description指定Servlet的描述信息display-name指定Servlet的显示名url-pattern指定访问Servlet的URL地址例4-2修改web.xml文件,配置【例4-1】中的TestServlet。4.1.3
创建和配置Servlet类3.使用@WebServlet注解配置Servlet在Servlet3.0之后,引入了@WebServlet注解替代web.xml文件中的servlet、servlet-mapping等标签。@WebServlet注解提供了一些属性用于配置Servlet,@WebServlet注解是类级别的注解,标注在类名上方。属性描述Stringname指定Servlet的名称,等价于servlet-name标签,默认为Servlet类的全限定名StringurlPatterns指定一组URL地址,等价于url-pattern标签String[]value等价于urlPatterns属性,urlPatterns属性和value属性不能同时使用Stringdescription指定Servlet的描述信息,等价于description标签StringdisplayName指定Servlet的显示名,等价于display-name标签例4-3使用@WebServlet注解配置【例4-1】中的TestServlet。例4-4使用Servlet读取HTML表单数据。4.1.4
Servlet的生命周期Servlet的生命周期可以分为3个阶段:初始化阶段、处理请求阶段和销毁阶段。在Servlet整个生命周期中,会依次调用Servlet接口的init()、service()和destroy()方法来完成不同阶段的任务,例4-5Servlet生命周期示例。实现步骤创建chap0401项目创建问卷页question.html新建css.css外部样式表文件创建处理问卷信息的SurveyServlet.java运行项目,查看效果使用监听器统计在线人数024.2
使用监听器统计在线人数在线人数的统计数据可以很好地体现网站的访问峰值等信息,对后续网站运营计划的修订、网站内容和风格的改进等都能起到一定的参考作用。本任务实现一个统计在线人数的项目,能较为准确地反映网站在线用户数量。单击浏览器的“刷新”按钮,页面上的数字不会发生变化。打开另一个浏览器Edge浏览器,再次访问此页面,计数器的值增加。此时刷新Chrome浏览器,会发现该浏览器中计数器的值和Edge浏览器中计数器的值相同。关闭Edge浏览器,10分钟后再次刷新Chrome浏览器,计数器的值减少。任务说明4.2使用监听器统计在线人数•本任务的实现效果与任务3.2的实现效果非常相似,不同的是任务3.2中计数器的值不会减少,而本任务中当用户不再访问计数器页面时,计数器的值会减少。•Servlet监听器提供了会话监听的功能,可以监听会话的创建和销毁,从而实现人数的加减。任务分析相关知识0102什么是监听器监听器分类03创建和配置监听器4.2.1
什么是监听器Servlet监听器是在Servlet2.3中引入的,并在Servlet2.4中进行了较大的改进。Servlet监听器主要用来对Web应用进行监听和控制,可以在事件发生前后做一些必要的处理。在ServletAPI中定义了8个监听器接口和6个事件类。监听器接口事件类HttpSessionAttributeListenerHttpSessionBindingEventHttpSessionBindingListenerHttpSessionListenerHttpSessionEventHttpSessionActivationListenerServletContextListenerServletContextEventServletContextAttributeListenerServletContextAttributeEventServletRequestListenerServletRequestEventServletRequestAttributeListenerServletRequestAttributeEvent4.2.2
监听器分类根据Servlet中提供的监听器的监听范围,可以把8个监听器接口分为3类:Servlet上下文监听器HTTP会话监听器Servlet请求监听器1
Servlet上下文监听器监听ServletContext对象的创建、销毁,以及该对象属性的增加、删除和修改操作。Servlet上下文监听器提供了两个接口,ServletContextListener和ServletContextAttributeListener。接口描述ServletContextListener用于监听ServletContext对象的创建与销毁ServletContextAttributeListener用于监听ServletContext对象属性改变的过程,包括增加属性、删除属性、修改属性等方法描述voidcontextInitialized(ServletContextEventsce)当创建ServletContext对象的时候,将会调用此方法进行处理voidcontextDestroyed(ServletContextEventsce)当销毁ServletContext对象的时候,将会调用此方法进行处理voidattributeAdded(ServletContextAttributeEventscae)当ServletContext中增加一个属性时,将会调用此方法进行处理voidattributeRemoved(ServletContextAttributeEventscae)当ServletContext中删除一个属性时,将会调用此方法进行处理voidattributeReplaced(ServletContextAttributeEventscae)当ServletContext中修改一个属性时,将会调用此方法进行处理2
HTTP会话监听器HTTP会话监听器提供了4个接口,分别是HttpSessionListener、HttpSessionAttributeListener、HttpSessionBindingListener和HttpSessionActivationListener。监听器接口描述HttpSessionListener用于监听HttpSession对象的创建、销毁HttpSessionAttributeListener用于监听HttpSession对象属性改变的过程HttpSessionBindingListener用于监听对象加入session(即调用HttpSession对象的setAttribute()方法)或从session中移出(即调用HttpSession对象的removeAttribute()方法或session过期)的事件HttpSessionActivationListener用于监听HTTP会话的active、passivate状态2
HTTP会话监听器方法功能voidsessionCreated(HttpSessionEventse)当创建一个session时激发voidsessionDestroyed(HttpSessionEventse)当销毁一个session时激发voidattributeAdded(HttpSessionBindingEventse)当在session中增加一个属性时激发voidattributeRemoved(HttpSessionBindingEventse)当在session中删除一个属性时激发voidattributeReplaced(HttpSessionBindingEventse)当在session中重新设置属性时激发voidvalueBound(HttpSessionBindingEventevent)当有对象加入session的范围时会自动调用voidvalueUnbound(HttpSessionBindingEventevent)当有对象从session的范围内移除时会自动调用voidsessionDidActivate(HttpSessionEventse)通知正在收听的对象,session状态变为有效状态voidsessionWillPassivate(HttpSessionEventse)通知正在收听的对象,session状态变为无效状态HttpSessionListener接口、HttpSessionAttributeListener接口、HttpSessionBindingListener接口和HttpSessionActivationListener接口的方法。3
Servlet请求监听器Servlet请求监听器是Servlet2.4规范中新增的一个技术,用来监听客户端的请求,Servlet请求监听器主要提供了两个接口。接口描述ServletRequestListener用于监听ServletRequest对象的创建与销毁ServletRequestAttributeListener用于监听ServletRequest对象属性改变的过程方法功能voidrequestInitialized(ServletRequestEventevent)当创建及初始化ServletRequest时,调用此方法进行处理voidrequestDestroyed(ServletRequestEventevent)当销毁ServletRequest时,调用此方法进行处理voidattributeAdded(ServletRequestAttributeEventevent)当ServletRequest中增加一个属性时,将会调用该方法进行处理voidattributeReplaced(ServletRequestAttributeEventevent)当ServletRequest中修改一个属性时,将会调用该方法进行处理voidattributeRemoved(ServletRequestAttributeEventevent)当ServletRequest中删除一个属性时,将会调用该方法进行处理4.2.3
创建和配置监听器1.创建监听器2.使用配置文件web.xml配置监听器3.使用@WebListener注解配置监听器例4-6创建Servlet上下文监听器。例4-8使用@WebListener注解配置【例4-6】中的TestServletContextListener。例4-7修改web.xml文件,配置【例4-6】中的TestServletContextListener。实现步骤创建chap0402项目新建count.jsp页面新建css.css外部样式表文件创建监听器OnlineCountListener.java设置会话超时时间重启服务,查看效果使用过滤器验证会员登录033.3
实现会员自动登录在用户登录成功之后的请求中,只要不允许匿名访问就都需要对用户登录进行验证,以防止非法用户入侵网站。本任务实现一个验证用户登录项目,在用户请求不允许匿名访问的页面之前对当前用户进行身份验证。在页面中输入用户名和密码,如果输入的密码不是“admin”,则提示用户“密码不正确!”。如果输入的密码为“admin”,则跳转到欢迎页welcome.jsp。任务说明3.3
实现会员自动登录重启浏览器,直接访问welcome.jsp页面或者处理登录的URL“/login”,会提示用户未登录。任务说明3.2实现会员自动登录•欢迎页welcome.jsp和处理登录的URL“/login”是不允许匿名访问的,所以直接访问会提示用户未登录。•要实现禁止匿名访问,可以考虑以下两种方法:方法一,使用工具类方法实现每个页面或目标资源禁止匿名访问;方法二,使用Servlet提供的过滤器Filter,对目标资源的请求进行拦截,实现禁止匿名访问。•在本任务中,采用方法二,即使用Servlet过滤器来实现对特定资源的访问控制。任务分析相关知识0102什么是过滤器创建和配置过滤器03过滤器链4.3.1
什么是过滤器与监听器类似,Servlet过滤器也是在Servlet2.3中引入的新功能,主要用于过滤和拦截请求或响应信息。它可以在Servlet或JSP页面运行之前或之后自动调用,在处理客户端请求和发送响应的过程中发挥着重要作用,增强了JavaWeb项目的灵活性和安全性。4.3.2
创建和配置过滤器创建过滤器配置过滤器使用配置文件web.xml配置过滤器使用@WebFilter注解配置过滤器1
创建过滤器Servlet过滤器必须实现javax.servlet.Filter接口,该接口提供了3个方法。创建Servlet过滤器需要实现javax.servlet.Filter接口,通过重写doFilter()方法对客户端请求进行拦截。方法描述voidinit(FilterConfigconfig)用于初始化,在容器装载并实例化过滤器的时候自动调用void
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年桂北审计事业岗结构化面试题库
- 安全技术资料归档管理细则
- 深度乳品知识试题及答案解析
- 2026年甘肃电力投资集团招聘试题及答案
- 2026年蒂森克虏伯(中国)秋招试题及答案
- 2026年厦门网格员培训考试试题及答案
- 会计模拟试题与标准答 案
- 医院财务工作总结
- 医院放射科年工作总结
- 大数据在企业管理中的应用试题及答案
- 2026年广州市海珠区教育系统引进教育管理急需人才6人考前冲刺密卷及参考答案详解【满分必刷】
- 2026秋小学人音版音乐二年级上册(新教材)教学计划
- 电子设备手工装接工岗中实操水平考核试卷含答案
- 群体塔吊安全管理培训
- 人工智能技术基础与应用课件 第8章 提示词工程
- 2026年特种设备安全管理员试题(附答案)
- 校园消防安全评估报告
- 2026年陕西省中考生物试卷附答案
- GB/T 47655-2026电力电子装备和系统的构网性能要求及试验方法
- GB/T 7631.13-2012润滑剂、工业用油和有关产品(L类)的分类第13部分:A组(全损耗系统)
- GB/T 17247.1-2000声学户外声传播衰减第1部分:大气声吸收的计算
评论
0/150
提交评论