JavaWeb(三)【webday03_request&response总结】

本文深入讲解了JavaWeb开发中的三个核心案例:正确读取Web工程中的资源文件、实现文件下载功能及解决中文乱码问题、设计注册功能并与数据库交互。同时介绍了ServletContext对象的功能及其重要用途,并对比了request对象在转发和重定向中的表现。
摘要由CSDN通过智能技术生成
 JavaWeb基础都是重点吗?变成鱼的脑子了,学了后面忘了前面。

  案例一从web工程文件夹下读取文件。与传统文件读取不同,web工程发布到Tomcat以后文件结构发生了改变。正确在web工程中读取资源是利用ServletContext里面的两个方法getResourceAsStream(filename)和getRealPath(path)的方法获取资源在tomcat的磁盘绝对路径。两个方法的区别是getResourceAsStream()返回的是字节流对象,getRealPath()返回的是字符串路径。

  第二个案例手动编写一个下载文件的方法。这个案例涉及到的知识很多。
  第一,前端页面的文件连接是用get的方式上传把文件名给Servlet。Servlet接收文件名后,又使用ServletContext获得这个文件的MIME类型,用来给浏览器识别。
  第二,通过ServletContext的getRealPath得到文件的绝对路径。
  第三,设置了两个头:头一"Content-type",后面接一个文件的MIME类型让浏览器识别这个文件类型。头二"Content-Disposition","attachment;url=filename="+filename;告诉要通过下载的方式获得这个文件
  第四,输出文件到用户的浏览器中。使用字节流的形式来操作文件。输入流可以从ServletContext的getResourceAsStream(filename)方法来获得,输出流是response的输出流OutputStream()输出流
  第五,有了输入流和输出流,把输入流转换成文件流。建立一个字节数组byte[1024] ,利用while()循环读到结束。
  第六,解决中文乱码问题。不论是post方法或是get方法传送都会产生中文乱码问题。在参考资料中有服务端的编码问题处理。这里要将的是当把文件传给浏览器的时候, 浏览器也识别不了中文名字文件。要获取浏览器的类型,然后火狐浏览器用Base64编码处理,其他浏览器用URLEnconder编码处理

  总结,这个案例学习了ServletContext里面的两个功能:获取文件的MIME类型;获取文件的绝对路径。

  案例三是写一个注册功能。比较重要的是Servlet->UserService->DAO这三个层次的数据操作。登录成功:设置头"Location"重定向到index.jsp页面;登录失败的话,因为要设置提示信息,所以利用ServletContext的setAttribute()方法把信息设置到里面,前提是,要先在初始化函数init()中先设置一个空的msg。在jsp页面中获取ServletContext的方式是${msg}。
  注册功能是查询数据库有没有存在该实体类,没有存在就表示成功,然后再把这个实体类User插入进去。另外,要把用户昵称,和网站人数传给index.jsp的话,使用域对象ServletContext存取数据。JSP文件再获取。
  
  上面三个案例使用ServletContext域对象的三个功能。ServletContext域对象是服务器在启动的时候,就开辟了一块空间,只要服务器不关闭,这个空间就一直存在,存的数据也可以随时拿来用或者更新。ServletContext有四个功能
1.获取初始化参数。很少用。
2.获取文件的MIME类型
3.获取文件的绝对路径。
4.当作域对象为所有Servlet和JSP共享数据。是重点

   第四学习的是request这个对象。有两个重点,一是request当作域对象存取数据。二是request重定向和转发的区别。
首先request的生命周期是用户请求的时候创建,当响应完毕后结束。重定向是先响应一个空白,再做一次请求,最后响应定位到新的页面,所以是两次请求两次响应,request域对象在重定向中就不起作用了,不要尝试往里面存取数据。转发是request.Redict("servlet的路径"),地址栏不的地址不发生改变。request还存在,可以传数据给新的servlet。


  第五,上自习课学习了Tomcat处理web工程的流程:
   浏览器根据前端传来的地址,首先找到web工程的web.xml配置文件,前端的Servlet虚拟路径/aa,和web.xml中的url-pattern匹配,通过servlet-name找到了要访问的Servlet,其中Tomcat利用反射获取了<servlet-class>Servlet字节码文件。最后把封装的reuqest数据给了Servlet.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值