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学习心得总结_第1张图片

作为初学者,且只针对简单的JavaWeb项目,Tomcat是一个不错的Web 应用服务器。Tomcat最核心的功能是对于JSP与Servlet的管理。

JavaWeb学习心得总结_第2张图片

二:Servlet技术

Servlet本质为Java接口或类,开发者通过实现或继承Servlet接口或类形成自己的一个Servet子类,并在方法中写上自己的业务,写上给客户端的返回等(比如MyFirstServlet):

JavaWeb学习心得总结_第3张图片

同时配置该类的在当前Web服务中的访问地址。JavaWeb学习心得总结_第4张图片

这样浏览器就可以根据 Tomcat地址+当前Servlet的地址访问到当前Servlet,并执行相关业务。

JavaWeb学习心得总结_第5张图片

三:JSP

从语言的角度来讲,可以将JSP理解为包含 Java语言+前端3大语言的一个文件。

从实现的本质上来讲,JSP是需要传输给客户端很多前端语句的 Servlet。

JSP中含有大量的前端标记语言等,这些将用来给用户一个完整的界面 。 同时还有少量的Java语言,主要是为了能够结合实际业务,为页面提供真实的数据

在Tomcat中,JSP被访问时会自动被装载成一个Servlet。其中的Java语言部分很自然就成了Servlet中的一部分,运行、得到数据等,而其中的前端语言部分会在结合Java部分运行结果后被Servlet写给客户端形成界面。所以JSP本质为返回给客户端一整个完整界面的Servlet。

所以,既生Servlet,何生JSP

因为JSP的文件格式符合前端编程的习惯,你只需要在传统的前端页面加入少量Java语言就行,如下图所示 。

JavaWeb学习心得总结_第6张图片

当被装载成Servlet时是这个样子的:

JavaWeb学习心得总结_第7张图片

所以如果开发者要直接在Servlet中去输出一整合网页显然是不人性的,同样如果在JSP中去掺杂大量的业务代码也是不利于开发的。

于是在此基础上就形成了Servlet主内,JSP主外的格局。即Servlet主要负责接收请求、处理业务等,然后将数据等传递给某个JSP,JSP负责描述界面、展示数据等。大致可以形成以下流程图:

JavaWeb学习心得总结_第8张图片

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中的数据读取并显示。

这样做可以降低数据与程序的耦合性,无论从开发还是维护,都会减少很多工作量。同时也可以使代码逻辑更清晰,可读性更强等。

JavaWeb学习心得总结_第9张图片

五:数据库连接

数据库连接池

JDBC的基础知识这里就不在复述,这里我们主要需要了解一个数据库连接池的概念。

在基础的获取数据库连接对象时,我们每次获取都需要向数据库申请获取连接,验证⽤户名和密码等,执⾏完 SQL 语句后断开连接,这样的⽅式会造成资源的浪费,数据连接资源没有得到很好的重复利⽤。

而数据库连接池的概念是,我先申请一批连接对象放到连接池中,当程序需要调用时则提供给它一个连接,而不用重新申请。用完后程序再把该连接还给连接池,而不是直接断开连接,可供其他请求使用。

JavaWeb学习心得总结_第10张图片

DBUtils

DBUtils 可以帮助开发者完成数据的封装结果集到 Java 对象的映射)。

因为在基础的JDBC查询中,返回结果通常为ResultSet。一方面根据上述MVC中M模式,我们需要自己手动去将数据封装成对象,另一方面我们将不可避免的手写循环去遍历结果集,使得开发很低效。

六:过滤器

顾名思义,过滤器主要是对请求进行过滤的,保证特定的资源只能被特定的人、特定的情况访问。一方面可以维护安全,另一方面也可以提供不同服务。

JavaWeb学习心得总结_第11张图片

七:JavaWeb数据流程

根据以上概念我们就可以总结出一个JavaWeb,或者说大部分Web项目的大致数据流程图。

JavaWeb学习心得总结_第12张图片

上图的大部分概念都已经介绍过,接下来对MVC之C中的几个新概念再说明一下。

因为后台的代码是很复杂的,你每发送一个请求给一个Servlet,就要求他在当前Java文件即接受和返回信息,又处理具体业务,又要和数据库通信。实现上是完全可以的,但是这会使得代码耦合性很高,非常不适合大型项目开发,也不利于调试。

故我们可以用controller来接收请求,然后在controller中注入一个service的对象,使用service对象的方法来实现具体业务。 同样,如果当前业务时需要使用到数据库的,可以在service中注入一个repository对象,然后再调用他的方法来实现数据库操作。

最终的后端的Java文件代码包大致如下,至于前端的包会有一个专门的文件夹用来放JSP等前端资源。

JavaWeb学习心得总结_第13张图片

八:JavaWeb常用功能

上述的东西就大致包含了JavaWeb基本流程,下文的东西都是些现实应用中经常会用到的功能模块罢了。

1:Ajax技术:

Ajax = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。其实核心思想很简单,在不用刷新整个网页的情况下刷新局部网页数据。

比如你在B站看一个投票计数,投票数是时时刻刻都在变化的,而你不用刷新整个页面就能看到最新的投票数据。这就是自动局部刷新,我只向后端要局部的数据,既可以避免整个页面的不断刷新,也可以避免重复请求固定的数据,导致效率降低。

2:文件上传与下载

这个没什么新鲜的,但是却是必需功能。

3:监听器

主要是对整个Java项目的运行状况等进行监听,增强Web应用的事件处理能力。

九:结语

如开头提到的,本文档只是个人在JavaWeb学习路上一个心得和理解的总结与分享,所以通篇没有提到过具体实现,希望能够给同作为新手的孩子画一个模样

当然也希望大佬们看到后能在评论区批评一下孩子不对的地方。

Respect!

你可能感兴趣的:(java,jsp,后端,servlet,web)