JavaWeb项目式开发教程课件 项目3 使用内置对象响应用户请求_第1页
JavaWeb项目式开发教程课件 项目3 使用内置对象响应用户请求_第2页
JavaWeb项目式开发教程课件 项目3 使用内置对象响应用户请求_第3页
JavaWeb项目式开发教程课件 项目3 使用内置对象响应用户请求_第4页
JavaWeb项目式开发教程课件 项目3 使用内置对象响应用户请求_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

JavaWeb项目式开发教程实现会员登录实现网站访问人数统计认识到保护用户隐私、安全传输敏感数据的重要性,培养信息安全意识,遵守相关法律法规,树立正确的数据保护观念。掌握JSP内置对象的基本概念。掌握运用request对象处理表单信息。掌握运用response对象处理响应信息。掌握运用out对象向客户端输出信息。掌握运用session对象和application对象实现数据共享。掌握运用Cookie对象维护客户端状态数据。学习目标项目3使用内置对象响应用户请求12实现会员自动登录2实现会员登录013.1

实现会员登录会员登录是网站的一个常见功能,网站通过用户登录来确定用户在该网站的操作权限,防止非法用户访问。通常会员在登录网站时需要填写用户名、密码等信息,本任务通过使用JSP内置对象response、request和out等实现简单的会员登录功能。用户在登录页填写登录信息,任务说明3.1

实现会员登录如果用户未输入用户名或密码直接登录,则提示“用户名和密码不能为空!”。如果输入的用户名或密码不正确,则提示“用户名和密码不正确!”。如果用户输入了正确的用户名和密码(例如,用户名为“admin”,密码为“123”),则跳转到会员信息页。任务说明3.1实现会员登录•通常,登录验证的处理过程可以考虑由客户端完成或者服务器端完成。这里考虑使用服务器端完成验证,即使用Java代码处理验证过程。•确定使用服务器端完成验证之后,还要考虑处理登录的代码写在哪里。一般,有两种实现方法。方法一,在登录页和会员信息页之间增加一个处理登录的中间页;方法二,在登录页完成登录处理。这里选择方法二。•可以使用JSP内置对象中的request对象、response对象和out对象的相关方法实现获取表单数据、页面重定向、页面输出文本信息等功能。任务分析相关知识01040302JSP内置对象response对象request对象out对象3.1.1

JSP内置对象JSP提供了9个内置对象,包括request对象、response对象、session对象、out对象、application对象、page对象、exception对象、pageContext对象、config对象。这些内置对象不需要预先声明和创建就能直接使用。在客户端和服务器交互的过程中,它们分别完成不同的功能。根据Tomcat版本的不同,内置对象的类型会有所变化。表中各对象的类型来源于Tomcat9。对象类型功能requestjavax.servlet.http.HttpServletRequest请求对象,用于接收客户端传输到服务器端的数据responsejavax.servlet.http.HttpServletResponse响应对象,用于服务器端向客户端发送数据outjavax.servlet.jsp.JspWriter用于向客户端浏览器输出数据sessionjavax.servlet.http.HttpSession用于保存会话数据applicationjavax.servlet.ServletContext用于保存所有用户的共享数据pageContextjavax.servlet.jsp.PageContext包装JSP页面的上下文,用来管理网页属性configjavax.servlet.ServletConfig配置对象,可以获得Servlet的配置信息pagejavax.servlet.jsp.HttpJspPageJSP页面对象本身,也就是当前页面转换后的

Servlet类的实例exceptionjava.lang.ThrowableJSP页面执行时发生的错误和异常3.1.2

request对象request对象是请求对象,是javax.servlet.http.HttpServletRequest类的实例。request对象包含的请求信息有请求的来源、标头、cookies和请求相关的参数值等。方法描述ObjectgetAttribute(Stringname)

获取保存在request中用于指定名称的属性对象setAttribute(Stringname,Objectobj)将对象和name关联后,保存到request中StringgetCharacterEncoding()返回请求中的字符编码,可以在response对象中设置StringgetContentType()返回在response中定义的内容类型StringgetContextPath()返回请求的路径EnumerationgetHeaderNames()返回包含所有HTTP头的名称的集合StringgetHeader(Stringname)返回指定名称的HTTP头的信息StringgetLocalName()获取响应请求的服务器端主机名StringgetLocalAddr()获取响应请求的服务器端IP地址StringgetLocalPort()获取响应请求的服务器主机端口号StringgetMethod()获取客户端向服务器端发送请求的方法(GET、POST)3.1.2

request对象续方法描述StringgetParameter(Stringname)获取客户端发送给服务器端的参数值EnumerationgetParameterNames()返回请求中所有参数名称的集合String[]getParameterValues(Stringname)获取请求中指定参数的所有值StringgetQueryString()返回get方法传递的参数字符串,该方法不分解出单独的参数StringgetRemoteAddr()获取发出请求的客户端IP地址StringgetRealPath(Stringpath)返回给定虚拟路径对应的物理路径StringgetRequestURI()返回发出请求的服务器端地址,不包括请求的参数字符串StringgetServletPath()获取客户端请求的脚本文件的文件路径StringgetServerName()返回响应请求的服务器主机名或IP地址intgetServerPort()返回响应请求的服务器端主机端口号voidsetCharacterEncoding(Stringname)设置请求的字符编码RequestDispatcher

getRequestDispatcher(Stringpath)获取封装了指定路径的RequestDispatcher接口3.1.2

request对象1.通过表单传递数据Web项目中,经常需要用户填写表单将数据提交到服务器端,服务器端则使用request对象的getParameter()方法和getParameterValues()方法来获取表单中的数据。<formmethod="提交方式"action="提交地址">…</form>GETPOST在浏览器地址栏中显示提交数据以“name=value”的形式显示在地址栏中否提交数据是否有长度限制不能大于2KB否数据安全性低高例3-1使用getParameter()方法获取文本框中的值。例3-2使用getParameterValues()获取复选框的值。例3-3根据输入的半径,计算并输出圆的面积。3.1.2

request对象2.通过超链接传递数据request对象的getParameter()方法除了能获取表单传递过来的数据之外,还能获取超链接传递过来的数据。在使用超链接传递数据时,超链接的href属性设置参数值对遵循如下格式。3.请求转发当服务器接收到客户端处理时,可以使用request对象的getRequestDispatcher()方法获取RequestDispatcher接口,使用接口的forward()方法将当前JSP携带的请求和响应信息转发给getRequestDispatcher()方法中指定的JSP来处理。或跳转相对路径?参数名1=参数值1&参数名2=参数值2&…&参数名n=参数值n例3-4超链接传递数据示例。RequestDispatcherrd=request.getRequestDispatcher("转发JSP的相对路径");rd.forward(request,response);request.getRequestDispatcher("转发JSP的相对路径").forward(request,response);例3-5请求转发示例。3.1.2

request对象4.使用request对象属性传递数据在JSP中,使用setAttribute()方法和getAttribute()方法在request对象属性中保存和读取数据,使用request对象的请求转发可以传递请求和响应信息。例3-6会员注册时验证用户输入的密码和确认密码是否一致。3.1.3

response对象response对象是响应对象,是javax.servlet.http.HttpServletResponse类的实例,负责将响应结果发送到客户端浏览器,也可以用来重定向请求、向客户端浏览器写入Cookie等操作。方法描述voidaddCookie(Cookiecookie)将Cookie对象保存到客户端voidsetHeader(Stringname,Stringvalue)设置HTTP头信息voidaddHeader(Stringname,Stringvalue)添加HTTP头信息StringencodeRedirectURL(Stringurl)对sendRedirect()方法使用的URL进行编码StringencodeURL(Stringurl)对URL进行编码,回传包含sessionID的URLvoidflushBuffer()强制把当前缓冲区的内容发送到客户端StringgetCharacterEncoding()获取响应的字符编码voidsetCharacterEncoding(Stringcharset)设置响应使用的字符编码voidsetContentLength(intlength)设置响应的BODY长度voidsetContentType(Stringtype)设置响应类型voidsendRedirect(Stringurl)用于将对客户端的响应重定向到指定的URL上,这里可以使用相对URLvoidsetBufferSize(intsize)设置以KB为单位的缓冲区的大小3.1.3

response对象1.设置响应头信息通过response对象的addHeader()方法和setHeader()方法可以添加或设置响应头信息,实现页面刷新、设置缓存、设置页面编码方式等。2.页面重定向页面重定向是指将用户从一个页面转移到另一个页面。这种跳转可以在客户端通过JavaScript实现,也可以在服务器端通过响应头实现,这里使用服务器端的response对象的sendRedirect()方法实现。例3-7实时显示当前系统时间。例3-8页面重定向示例。不同点页面重定向请求转发调用方法response.sendRedirect()request.getRequestDispatcher().forward()浏览器地址栏显示新请求地址原请求地址浏览器显示内容新请求地址内容新请求地址内容使用request对象属性在页面传值不可以可以使用参数值对在页面传值可以可以3.1.4

out对象out对象是对客户端的输出流进行写操作的对象,是javax.servlet.jsp.JspWriter类的实例。它的作用与response.getWriter()方法返回的PrintWriter对象相似,可以在JSP页面中把文本信息发送到客户端浏览器。方法描述voidprint(objectobj)将指定类型的数据输出到HTTP流,不换行voidprintln(objectobj)将指定类型的数据输出到HTTP流,并输出一个换行符voidclear()清除缓冲区中的数据,不把数据写到客户端voidclearBuffer()清除缓冲区的当前内容,不把数据写到客户端voidflush()输出缓冲区中的数据intgetBufferSize()返回缓冲区的字节数大小,如不设缓冲区则为0booleanisAutoFlush()返回缓冲区满时是否自动清空缓存,默认值为trueintgetRemaining()返回缓冲区中剩余空间的大小例3-9使用out对象输出示例。实现步骤创建chap0301项目新建login.jsp页面新建css.css外部样式表文件增加判断登录信息的代码新建userinfo.jsp页面运行项目,查看效果实现网站访问人数统计023.2

实现网站访问人数统计统计网站访问人数是为了了解当前访问网站的用户数量。通过这个信息,可以直观地了解网站的吸引力和网站的运行效率。本任务通过一个网站计数器,记录访问网站的总人数。当用户打开网站时,页面显示“您是第xxx个访问该页面的用户!”。刷新页面,人数不会发生变化。等待5分钟后在浏览器中单击刷新按钮,人数增加,重启服务,再次单击浏览器的刷新按钮,计数器重新从1开始。任务说明3.2

实现网站访问人数统计项目实现了防止用户通过刷新页面来增加访问人数的功能,所以此时刷新页面,访问人数不会发生变化。为了防止用户长时间未操作,一直占用服务器资源,设置用户访问的有效时间为5分钟。等待5分钟后在Chrome浏览器中单击刷新按钮,人数增加。重启服务,再次单击Chrome浏览器的“刷新”按钮,发现计数器重新从1开始计算。任务说明3.2实现网站访问人数统计•为什么同一台计算机上两个浏览器可以模拟两个用户?因为不同浏览器会创建独立的会话,每个会话使用各自的session对象来存储数据,所以可以模拟两个不同的用户。•访问人数的统计是全体用户共享的,需要使用application对象来保存这些统计信息。•用户访问的有效时间是5分钟,可以通过设置会话session的有效期来实现。•服务重启后,访问人数的统计信息会失效,因此不需要考虑访问人数的持久性问题。任务分析相关知识0102session对象application对象3.2.1

session对象session对象是javax.servlet.http.HttpSession类的实例,用于共享同一用户的信息。从一个用户发送第一个JSP页面请求开始,会话被自动创建,并维持会话信息到下一个请求。通过会话,服务器能够识别出同一用户所发送的请求,并且会一直保存连接状态。session工作原理session对象的常用方法session对象的有效期1

session工作原理当客户端首次发送请求时,服务器会自动创建一个session对象。为了区分每个session对象,服务器会为session对象分配一个唯一的ID。服务器将这个ID和响应信息一起发送到客户端,ID存放在客户端的Cookie中。这样,session对象和客户端之间就建立了一一对应的关系。当用户再次发送请求时,会携带保存在Cookie中的ID,服务器根据这个ID存取对应的session对象。例3-10查看session对象的ID。2

session对象的常用方法方法描述voidsetAttribute(Stringname,Objectobj)将obj对象以name为名存储到会话中ObjectgetAttribute(Stringname)获取与指定名称相关联的session属性值EnumerationgetAttributeNames()获取包含session对象內所有属性的集合,返回一个枚举类型的数据longgetCreationTime()返回session对象的创建时间,单位为千分之一秒StringgetId()获取session对象的ID值longgetLastAccessedTime()返回与当前session对象相关的客户端最后一次访问时间,从1970年1月1日0点开始计算,单位为毫秒intgetMaxInactiveInterval()返回会话总时间,以秒为单位。即session对象的有效时间,当超过这个有效时间时,此session被清除voidsetMaxInactiveInterval(intinterval)设置session对象的有效时间,单位为秒ServletContextgetServletContext()返回一个该JSP页面对应的ServletContext对象实例booleanisNew()判断是否由服务器产生一个新的session对象voidinvalidate()销毁session对象例3-11在【例3-10】的基础上使用session保存和读取数据。3

session对象的有效期默认session的有效时间是30分钟,可以通过session对象的getMaxInactiveInterval()方法获取有效时间。当有效时间结束时,客户端一直没有向服务器发送请求,服务器就认为客户端已结束请求,服务器与该客户端创建的session对象会被垃圾收集器从内存中清除。当客户端再次发送请求时,服务器会创建一个新的session对象。例3-12根据有效时间查看session中保存的数据。例3-13session.invalidate()方法应用示例。3.2.2

application对象服务器启动后会创建一个application对象,当用户在网站的各个页面之间浏览时,访问的都是同一个application对象,直到服务器关闭。所以,可以在application对象中存放全局数据,它在服务器启动时创建,在服务器关闭时销毁。application对象是javax.servlet.ServletContext类的实例。方法描述voidsetAttribute(Stringname,Objectobj)将obj对象以name为名存储到application对象中ObjectgetAttribute(Stringname)获取与指定名称相关联的application对象属性值ServletContextgetContext(Stringuripath)获取当前应用的ServletContext对象StringgetInitParameter(Stringname)获取在web.xml中定义的由name指定的初始化参数值EnumerationgetInitParameterNames()获取在web.xml中定义的所有初始化参数的名称StringgetRealPath(Stringpath)获取指定虚拟路径所对应的物理路径RequestDispatchergetNamedDispatcher(Stringname)获取指定名称的RequestDispatcher对象的实例RequestDispatchergetRequestDispatcher(Stringpath)获取指定URL的RequestDispatcher对象的实例StringgetServletContextName()获取在web.xml中配置的display-name元素的值voidremoveAttribute(Stringname)移除指定名称的application属性例3-14使用application对象保存和读取数据。例3-15使用application对象读取配置信息。实现步骤创建chap0302项目新建count.jsp页面新建css.css外部样式表文件在count.jsp文件中添加实现网站计数器的代码显示统计值在配置文件web.xml中设置session对象的有效时间重启服务,查看效果实现会员自动登录033.3

实现会员自动登录用户第一次访问系统时需要输入用户名和密码才能登录系统,如果用户在进入系统前勾选了“自动登录”选项,则系统会记录用户的登录信息。当该用户再次访问同一系统时,无须重新输入用户名和密码,可直接进入。这种交互方式就是“自动登录”。本任务主要实现会员自动登录功能。用户填写登录信息,用户名不能为空、密码为“admin”,勾选“自动登录”复选框。单击“登录”按钮,进入主页,并显示“xxx,欢迎来到本网站!”页面。关闭并重新打开浏览器,重新访问登录页时不需要输入用户名和密码,直接跳转到主页并输出“xxx,欢迎来到本网站!”。任务说明3.2实现会员自动登录•用户登录信息需要保存在客户端,使用Cookie进行保存。•使用request对象和response对象的相关方法实现Cookie的存取。•为了防止浏览器关闭之后Cookie丢失,需要设置Cookie的有效时间。任务分析相关知识0102Cookie对象其他内置对象3.3.1

Cookie对象Cookie是服务器发送到客户端浏览器的纯文本信息。当用户再次访问同一个Web服务器时,浏览器会将保存的Cookie信息传回服务器。通过使用Cookie,可以维持用户的状态信息,能够实现识别用户身份、定制个性化内容、在安全性较低的情况下避免重复登录验证,以及精准投放广告等功能。每个Cookie的大小限制为4KB,在客户端进行维护。1.创建CookieCookie对象是javax.servlet.http.Cookie类的实例,需要使用page指令导入Cookie类以创建Cookie对象。2.保存Cookie到客户端将Cookie对象保存到客户端需要使用response对象的addCookie()方法。<%@pageimport="javax.servlet.http.Cookie"%>Cookiec=newCookie("name","zhangsan");response.addCookie(c);3.3.1

Cookie对象3.读取客户端中的Cookierequest对象的getCookies()方法以数组形式获取客户端保存的所有Cookie对象。如果要取出符合要求的Cookie对象,需要循环比较数组中每个对象的名称。4.设置Cookie对象的有效时间将Cookie对象保存到客户端时,如果没有设置有效时间或者有效时间为0,则表示此Cookie对象存放在浏览器的内存空间中,浏览器关闭时会自动清除Cookie。如果设置了有效时间,则表示该Cookie对象以文件形式保存在特定路径下,其有效时间的单位为秒。如果需要将保存的Cookie对象的状态更改为失效,只需要将有效时间设置成一个负值即可。Cookie[]cs=request.getCookies();for(Cookiec:cs){if(c.getName().equals("name")){out.print(c.getValue());}}response.addCookie(c);例3-16读取Cookie示例。3.3.2

其他内置对象除了out、request、response、session和application等内置对象外,在JSP中还可以使用page、pageContext、exception和config等内置对象。例3-17page对象的常用方法示例。方法描述voidforward(StringrelativeUrlPath)将页面重定向到另外一个页面或者Servletvoidinclude(StringrelativeUrlPath)在当前位置包含另一个文件voidsetAttribute(Stringname,Objectvalue,[intscope])在指定范围内设置属性及属性值Obje

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论