Web应用综合整理与练习

Web开发

Web开发者,开发一组web资源,通过Tomcat,传递给浏览器,期间使用HTTP协议。

Web资源–>浏览器,有两种不同的处理方式:

  1. 后端传递“结构化数据”到浏览器,浏览器上,利用JS把结构化的数据,做有效的展示;(前后端分离,主流)
  2. 后端直接拼接成浏览器识别的格式(例如html),传递到浏览器即可(出现历史较早,目前仍有使用)
    在拼接HTML时,如果在java代码中直接拼接,会让代码和结构过度耦合,引出模板技术
    在这里插入图片描述

模板第三方库: jsp(基本很少使用)、freemarker、thymeleaf(重点)

具体使用thymeleaf时,代码的执行时机不同:
因为我们对对象/过程的要求不同,所以我们会把代码放到不同的阶段去执行。

  1. Web应用启动阶段(会发生仅且仅有一次)∶模板引擎对象,全局有一份就够了
    通过Servlet提供的Listener机制:我们做到在ServletContext完成初始化的时候,执行代码,满足我们的要求。

  2. 访问Web资源字段/处理HTTP请求阶段(会发生无数次): context对象+处理过程。每次处理请求执行一次通过Servlet提供的service机制:我们在service 中的执行代码,就是每次请求一次。

文件上传

如何完成文件上传的操作

1.作为前端(html),通过form表单进行文件提交的,和普通form表单的区别

  1. 使用form 表单
  2. form表单enctype必须使用multipart/form-data:< form ectype=“multipart/form-data”>< /form>
  3. 使用input type=“file” :< input type=“file”>
  4. form表单的 method必须使用post:< form method=“post”>< /form>

在这里插入图片描述

重点:文件上传时,form表单指定为 enctype=multipart/form-data 时,与平时 form表单,HTTP请求的不同!

Content-Type是一种请求头内容是作为请求体

HTTP请求格式:

  1. 请求行(方法、资源路径、版本)
  2. 请求头(本次请求的元信息:请求体是什么格式?)
  3. 请求体(正文)

理论上:发送的HTTP请求的请求体格式出现了区别

请求体携带的信息有:input标签指定的name、上传文件的本地文件名称、上传文件的文件类型、上传文件的内容(只有请求中携带的信息,我们在servlet中才能读到)

作为后端(servlet 中)如何读取这些内容

  1. Servlet类必须使用@MultipartConfig 的注解修饰。(没有为什么,规定)
  2. 读取方式略有不同

如何进行文件操作

在这里插入图片描述
buffer:缓冲区,一块区域(桶) byte[] buf = new byte[1024];
1024:桶的最大容积

类型是byte类型,输入流、输出流都是以二进制方式进行处理的

InputStream(输入流)
视角:运行着的程序,可以从输入流中读取数据

OutputStream(输出流)
视角:运行着的程序可以向外部输出数据
在这里插入图片描述
上述发生了向上转型

如何进行文件的读取

int n = is.read(buf);
用最多能装1024的桶去水龙头上接水
n:实际上接到了多少水,正确:0<= n<= 1024,-1表示水龙头背后的水池被读干净了

1024: 桶最多装多少水
0: 本次没有从水龙头中接到水,但以后还有可能接到水
n: 本次接了多少水
-1: 以后再也不会从水龙头中接到水了

在这里插入图片描述

怎么确保用一个桶把水龙头的水全部读干净

byte[] buf = new byte[1024];
while (true) {
    int n = is.read(buf);
    if (n == -1){ //-1: EOS End Of Stream(水流)
        //说明这个水龙头再也不会出水了,就可以退出读取过程break;
    }
    // TODO:处理buf(桶)的数据(水)
}

对象分类

虽然大家都是对象,但是在代码中所处的角色是不同的!
粗略地分为两种:

  1. 表示数据的对象
    lmage 对象model(模型)
    重写toString、equals、hashCode
  2. 表示处理过程的对象(一般单例就够了)lmageListServlet
    Database Access Object
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值