JavaWeb学习心得总结
JavaWeb(JSP+Servlet)新手学习心得总结
说明:
由于篇幅的原因,本文只是对于JavaWeb项目的大致数据流程做一个介绍,同时引出一些JavaWeb开发中很基础的知识点,且不会精确到具体代码实现。
所以本文的适合读者为刚刚接触JavaWeb开发的人,或者是想了解一下网页服务的大致流程的新手。
当然如果你关心具体实现,可以跟学https://www.bilibili.com/video/BV1BJ411L7NR,该教程从针对JavaWeb入门者的角度进行教学,非常适合新手。
同时如果你关心整体项目构建。可以查看https://gitee.com/YangTang-Gitee/library ,学习搭建一个简单的JavaWeb项目。
推荐结合目录食用。
预备知识:
1:Java 基础知识
2:HTML、CSS、JavaScript等前端基础知识
主要开发工具:
IntelliJ IDEA:非常流行的Java开发IDE,因为其足够智能且可扩展性很强,目前市场占用率已经位居Java开发IDE榜首,且学生党可以免费使用完整版,非常适合我等穷孩子。建议新手可以跟https://www.bilibili.com/video/BV1PW411X75p系统学习一下IDEA的使用。
一:JavaWeb服务容器
JavaWeb服务需要特定的容器来管理动态和静态资源。
作为初学者,且只针对简单的JavaWeb项目,Tomcat是一个不错的Web 应用服务器。Tomcat最核心的功能是对于JSP与Servlet的管理。
二:Servlet技术
Servlet本质为Java接口或类,开发者通过实现或继承Servlet接口或类形成自己的一个Servet子类,并在方法中写上自己的业务,写上给客户端的返回等(比如MyFirstServlet):
同时配置该类的在当前Web服务中的访问地址。
这样浏览器就可以根据 Tomcat地址+当前Servlet的地址访问到当前Servlet,并执行相关业务。
三:JSP
从语言的角度来讲,可以将JSP理解为包含 Java语言+前端3大语言的一个文件。
从实现的本质上来讲,JSP是需要传输给客户端很多前端语句的 Servlet。
JSP中含有大量的前端标记语言等,这些将用来给用户一个完整的界面 。 同时还有少量的Java语言,主要是为了能够结合实际业务,为页面提供真实的数据。
在Tomcat中,JSP被访问时会自动被装载成一个Servlet。其中的Java语言部分很自然就成了Servlet中的一部分,运行、得到数据等,而其中的前端语言部分会在结合Java部分运行结果后被Servlet写给客户端形成界面。所以JSP本质为返回给客户端一整个完整界面的Servlet。
所以,既生Servlet,何生JSP ?
因为JSP的文件格式符合前端编程的习惯,你只需要在传统的前端页面加入少量Java语言就行,如下图所示 。
当被装载成Servlet时是这个样子的:
所以如果开发者要直接在Servlet中去输出一整合网页显然是不人性的,同样如果在JSP中去掺杂大量的业务代码也是不利于开发的。
于是在此基础上就形成了Servlet主内,JSP主外的格局。即Servlet主要负责接收请求、处理业务等,然后将数据等传递给某个JSP,JSP负责描述界面、展示数据等。大致可以形成以下流程图:
EL表达式与JSTL标签:
从本质上来讲这两者是一样的,都是JSP中为了简化Java语言部分的编写而生的,但是两者的侧重点不一样。
EL的主要功能是简化JSP开发中对对象的引用,更侧重于数据交互。
JSTL的主要功能对Java中常用语句的封装,比如你可以用类似HTML那样标签来做一个for循环,而不用像Java代码中那样手写循环。
总而言之,没有这两个东西你也可以写,但是有这两个开发会简单很多,代码也会简洁不少,值得一学。
四:MVC模式
MVC模式并不是新的技术,而是新的思想。
M代表Model,指一个确实的实体类,比如一本书,一个用户等
V代表View,指返回给用户看的视图(JSP)
C代表Controller,指处理具体业务的代码(Servlet)
Controller负责接收请求、处理业务,然后将处理的数据打包成Model,再将Model整个传给JSP,JSP则将Model中的数据读取并显示。
这样做可以降低数据与程序的耦合性,无论从开发还是维护,都会减少很多工作量。同时也可以使代码逻辑更清晰,可读性更强等。
五:数据库连接
数据库连接池
JDBC的基础知识这里就不在复述,这里我们主要需要了解一个数据库连接池的概念。
在基础的获取数据库连接对象时,我们每次获取都需要向数据库申请获取连接,验证⽤户名和密码等,执⾏完 SQL 语句后断开连接,这样的⽅式会造成资源的浪费,数据连接资源没有得到很好的重复利⽤。
而数据库连接池的概念是,我先申请一批连接对象放到连接池中,当程序需要调用时则提供给它一个连接,而不用重新申请。用完后程序再把该连接还给连接池,而不是直接断开连接,可供其他请求使用。
DBUtils
DBUtils 可以帮助开发者完成数据的封装(结果集到 Java 对象的映射)。
因为在基础的JDBC查询中,返回结果通常为ResultSet。一方面根据上述MVC中M模式,我们需要自己手动去将数据封装成对象,另一方面我们将不可避免的手写循环去遍历结果集,使得开发很低效。
六:过滤器
顾名思义,过滤器主要是对请求进行过滤的,保证特定的资源只能被特定的人、特定的情况访问。一方面可以维护安全,另一方面也可以提供不同服务。
七:JavaWeb数据流程
根据以上概念我们就可以总结出一个JavaWeb,或者说大部分Web项目的大致数据流程图。
上图的大部分概念都已经介绍过,接下来对MVC之C中的几个新概念再说明一下。
因为后台的代码是很复杂的,你每发送一个请求给一个Servlet,就要求他在当前Java文件即接受和返回信息,又处理具体业务,又要和数据库通信。实现上是完全可以的,但是这会使得代码耦合性很高,非常不适合大型项目开发,也不利于调试。
故我们可以用controller来接收请求,然后在controller中注入一个service的对象,使用service对象的方法来实现具体业务。 同样,如果当前业务时需要使用到数据库的,可以在service中注入一个repository对象,然后再调用他的方法来实现数据库操作。
最终的后端的Java文件代码包大致如下,至于前端的包会有一个专门的文件夹用来放JSP等前端资源。
八:JavaWeb常用功能
上述的东西就大致包含了JavaWeb基本流程,下文的东西都是些现实应用中经常会用到的功能模块罢了。
1:Ajax技术:
Ajax = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。其实核心思想很简单,在不用刷新整个网页的情况下刷新局部网页数据。
比如你在B站看一个投票计数,投票数是时时刻刻都在变化的,而你不用刷新整个页面就能看到最新的投票数据。这就是自动局部刷新,我只向后端要局部的数据,既可以避免整个页面的不断刷新,也可以避免重复请求固定的数据,导致效率降低。
2:文件上传与下载
这个没什么新鲜的,但是却是必需功能。
3:监听器
主要是对整个Java项目的运行状况等进行监听,增强Web应用的事件处理能力。
九:结语
如开头提到的,本文档只是个人在JavaWeb学习路上一个心得和理解的总结与分享,所以通篇没有提到过具体实现,希望能够给同作为新手的孩子画一个模样。
当然也希望大佬们看到后能在评论区批评一下孩子不对的地方。
Respect!
JavaWeb学习心得总结相关推荐
- javaweb学习心得-01(西部开源-秦疆随堂笔记)
maven maven 创建一个maven项目的过程 1.在maven官网下载安装包 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mzwwfNnx-163583458 ...
- JavaWeb学习心得之JSP内置对象
一.内置对象(九个) request.response.session.application.config已有详细介绍,这里重点介绍pageContext.out.page对象. 二.page对象 ...
- Java EE学习心得
–Java EE学习心得 1. 称为编程专家的秘诀是: 思考-----编程--------思考------编程--.. 编程不能一步到位,不能一上来就编,必须先思考如何写,怎样写?然后再编程 ...
- Assembly学习心得
http://blog.csdn.net/etmonitor/ Assembly学习心得 说明: 最近开始准备把学到的.NET知识重新整理一遍,眼过千遍不如手过一遍,所以我准备记下我的学习心得,已备参 ...
- 对于mysql存储过程感想_存储过程学习心得
存储过程学习心得 (2014-12-28 17:28:06) 标签: it 我使用过几次SQL Server,但所有与数据库的交互都是通过应用程序的编码来实现的.我不知到在哪里使用存储过程,也不了解实 ...
- JavaWeb学习笔记(十)--HttpServletRequest
1. HttpServletRequest简介 HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中 2. Ht ...
- 好程序员Web前端教程分享Vue学习心得
为什么80%的码农都做不了架构师?>>> 好程序员Web前端教程分享Vue学习心得,Vue是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向 ...
- 大学计算机课英语心得体会,关于计算机网络辅助大学英语教学的思考学习心得...
关于计算机网络辅助大学英语教学的思考学习心得 [摘要]计算机网络辅助教学可以增强学生的学习兴趣,提高他们自觉学习的能力,因而得到了大多数学生的认可,取得了比较显著的成效.计算机网络辅助教学也对大学英语 ...
- 我的MYSQL学习心得(十六) 优化
原文:我的MYSQL学习心得(十六) 优化 我的MYSQL学习心得(十六) 优化 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看 ...
最新文章
- OpenCV下三对点计算仿射变换实现图像的水平镜像(翻转)的详细说明和源程序
- JZOJ__Day 8:【普及模拟】马农
- Android DatePicker, TimePicker控件的使用
- CSS属性选择器温故-4
- 接口工具使用对比(apipost、jmeter、postman、swagger等)
- iOS中用到的唯一标示符
- 子div撑不开父div的几种解决方法
- java8种基本类型长度_【Java基础】Java的8种基本数据类型深入介绍
- oracle10.2.0.4 dbca,10.2.0.4 DBCA problem :Error securing Database Control,...
- es mapping 设置
- 《D o C P》学习笔记(3 - 0)Regular Expressions, other languages and interpreters - 简介
- word用宏修改文档中图片大小
- 发票信息提取系统解决方案(纸质发票、电子发票)
- CPU问题导致的大量进程崩溃问题
- 关于小米手机连接电脑,不能查看logcat日志的解决方法
- 原生js实现星级评分
- 2021-06-22 离散数学图论复习笔记
- 数据库------MYSQL
- HTML学习笔记——列表标签
- 高博第9讲project opencv viz模块