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学习心得总结相关推荐

  1. javaweb学习心得-01(西部开源-秦疆随堂笔记)

    maven maven 创建一个maven项目的过程 1.在maven官网下载安装包 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mzwwfNnx-163583458 ...

  2. JavaWeb学习心得之JSP内置对象

    一.内置对象(九个) request.response.session.application.config已有详细介绍,这里重点介绍pageContext.out.page对象. 二.page对象 ...

  3. Java EE学习心得

    –Java EE学习心得   1.    称为编程专家的秘诀是: 思考-----编程--------思考------编程--.. 编程不能一步到位,不能一上来就编,必须先思考如何写,怎样写?然后再编程 ...

  4. Assembly学习心得

    http://blog.csdn.net/etmonitor/ Assembly学习心得 说明: 最近开始准备把学到的.NET知识重新整理一遍,眼过千遍不如手过一遍,所以我准备记下我的学习心得,已备参 ...

  5. 对于mysql存储过程感想_存储过程学习心得

    存储过程学习心得 (2014-12-28 17:28:06) 标签: it 我使用过几次SQL Server,但所有与数据库的交互都是通过应用程序的编码来实现的.我不知到在哪里使用存储过程,也不了解实 ...

  6. JavaWeb学习笔记(十)--HttpServletRequest

    1. HttpServletRequest简介 HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中 2. Ht ...

  7. 好程序员Web前端教程分享Vue学习心得

    为什么80%的码农都做不了架构师?>>>    好程序员Web前端教程分享Vue学习心得,Vue是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向 ...

  8. 大学计算机课英语心得体会,关于计算机网络辅助大学英语教学的思考学习心得...

    关于计算机网络辅助大学英语教学的思考学习心得 [摘要]计算机网络辅助教学可以增强学生的学习兴趣,提高他们自觉学习的能力,因而得到了大多数学生的认可,取得了比较显著的成效.计算机网络辅助教学也对大学英语 ...

  9. 我的MYSQL学习心得(十六) 优化

    原文:我的MYSQL学习心得(十六) 优化 我的MYSQL学习心得(十六) 优化 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看 ...

最新文章

  1. OpenCV下三对点计算仿射变换实现图像的水平镜像(翻转)的详细说明和源程序
  2. JZOJ__Day 8:【普及模拟】马农
  3. Android DatePicker, TimePicker控件的使用
  4. CSS属性选择器温故-4
  5. 接口工具使用对比(apipost、jmeter、postman、swagger等)
  6. iOS中用到的唯一标示符
  7. 子div撑不开父div的几种解决方法
  8. java8种基本类型长度_【Java基础】Java的8种基本数据类型深入介绍
  9. oracle10.2.0.4 dbca,10.2.0.4 DBCA problem :Error securing Database Control,...
  10. es mapping 设置
  11. 《D o C P》学习笔记(3 - 0)Regular Expressions, other languages and interpreters - 简介
  12. word用宏修改文档中图片大小
  13. 发票信息提取系统解决方案(纸质发票、电子发票)
  14. CPU问题导致的大量进程崩溃问题
  15. 关于小米手机连接电脑,不能查看logcat日志的解决方法
  16. 原生js实现星级评分
  17. 2021-06-22 离散数学图论复习笔记
  18. 数据库------MYSQL
  19. HTML学习笔记——列表标签
  20. 高博第9讲project opencv viz模块

热门文章

  1. javascript中 $和#符号的意思
  2. 超声波测距仪编程_Arduino轻松学Mixly编程第9课 超声波测距仪
  3. 关于快手小铃铛广告投放的方式
  4. 疯狂足球——Android手机游戏开发(实习报告)
  5. mysql主从服务器宕机,Mysql主从数据库配置及宕机处理
  6. 网络空间安全是否有必要考研
  7. PCB的EMI如何产生
  8. HTML期末大作业~节日礼品购物商城网站html模板(HTML+CSS+JavaScript)
  9. 0-1背包算法python实现
  10. RISC-V学习整理