这段韶光博主也打仗了一些事情,觉得有必要专门把JSP的根本拿出来解释一下,由于还是很多人和我说看不懂。

实在写博文真的是挺有寻衅性的一件事情,如何把知识点用普通易懂的措辞来表述出来呢?这真的是不太随意马虎的。

首先,写教程须要大量的韶光本钱,我之前学习JavaWeb的时候,网上搜到的大部分博客,至心话我看不懂。
由于那时候的水平太菜了,看视频又嫌太慢。

java用百度地图jsp文件简略粗鲁具体得不要不要的 JavaWeb快速入门 GraphQL

当时我还喜好抱怨,说网上那些大牛明明水平很高,可为什么都不肯用大口语把技能点给讲出来呢?当时我记得,碰着问题上网随便一搜,看到的大部分文章,都是代码一贴就完了。
最多便是在文章末了写一行字解释一下。

这对当时小白的我真的是心累,而且,我每每看了很多博客,创造里面的代码都是一样的。
这个时候就挺忧郁了。

博客精简一些自然有精简的好处,可是那紧张是对付有好几年事情履历的程序员而言的,对新手来说,无疑增加了阅读的难度。

那时候我总想着,假如有一个真正意义上的,完备面向初学者的博客系列就好了,而不是代码一贴,你们自己去融会吧。

好在博主终于度过了那个难熬的阶段,然后某一天创造了简书这么好的互联网产品,凭着一点激情和冲动,还有一丝丝天真,开始写我的第一篇博客。

写了之后才创造,写教程不难,可是要写出那种普通易懂的教程是非常耗韶光的,有的时候,我觉得知识点就该当是这样的,可是为了让新人随意马虎理解,我不得不花韶光去组织措辞和编写案例。

好几次我都想退出简书不写了,由于写教程真的很累。
可是看到自己写的文章阅读量越来越多,而且大部分看我文章的人都是处于迷茫期的朋友。

我仿佛看到了当年,刚走出校门的我自己。

于是,我决定连续写下去,只是更新的话,不可能像之前有段韶光那样,仿佛打了鸡血似地一天一更了。
不过我还是只管即便担保每周一到两更,当然,断更也是有可能的。
(额,我觉得自己有点轻微的洁癖,我竟然总是忍不住要区分 的,地,得 )

当然,不管若何,那个文章发布系统我肯定会坚持写完的,毕竟做出了承诺。

好的,本系列对JSP,以及如何建立JavaWeb工程做一个讲解,如果你在收看《文章发布系统》系列,而且根本相对有些薄弱的话,大概这个系列可以帮到你。

这也算是《文章发布系统》系列的一个小分支,我会尽快写完,为什么要写呢?由于我发觉看我文章的大部分人还是初学者,有的乃至连web项目是啥都不知道,于是,我觉得有必要把根本的东西做一个总结。

1. 实验环境准备

(假设你已经装好了jdk,如果不会安装jdk,请参考这篇文章)

1.1 安装一个eclipse或者MyEclipse(本文以eclipse为例),实在所谓的安装便是网上去下载一个eclipse,然后解压一下就好了。

1.2安装tomcat,网高下载一个,然后解压一下。
我这次利用的tomcat容器配的是8080端口。

1.3 将tomcat配置到eclipse中。
详细步骤为:Window -- Preferences -- Server -- Runtime Environment -- Add 将tomcat解压后的路径配置上去就行了。

本文假设读者已经对tomcat,eclipse有一定的理解。

2. 新建web项目

首先,一言不合就打开eclipse

我们新建一个项目,File -- new -- Dynamic Web Project。

项目名称是web,点击Next

build\classes是默认的编译目录,还是点击Next

好的,末了点击Finish,一个web项目就建立好了。

目录构造

2.啥叫JavaWeb项目,它能干嘛?

JavaWeb项目便是一个运用程序,你不要以为它有多么神秘。
你每天打开的QQ就一个运用程序,你在手机上打开的微信,百度舆图等等,这些都是运用程序。

不同的是,QQ是一个本地客户端程序,它须要你在自己的电脑上安装一个客户端,然后你打开QQ,可以登录,谈天。

QQ肯定也分客户端和做事端,我们电脑上装的便是客户端,你要知道的一点是,我们发送,发送到哪里去了呢?

没错,肯定是发送到QQ的做事器上了,那里保存着我们的所有数据。

想想也不可能在本地,由于我们在电脑上发送的,在手机QQ上不是也能看到吗?这就解释,肯定是上传到它的做事器然后保存下来了。

而Web项目是什么呢?

它也是一个运用程序,只不过它的客户端是运行在浏览器上的。

我们打开浏览器,访问一个地址,比如 https://mp.toutiao.com

这个便是我们的访问路径,我们通过这个URL向简书的做事器提交要求,然后做事器进行处理,给你回应。

接下来,我们就看到出来一个网页。

我们在这个网页上可以写文章,点赞,收藏,等等。

我们的每一步操作,实在都和做事器做了一个交互。

比如一个登录功能,当我们鼠标点击那个登录按钮,浏览器就向做事器提交了一个要求,做事器进行处理,然后操作数据库。
终极,它会得出一个结果,便是说,到底能不能让你登录,总会有个说法。

如果你密码写错了,它可能就会得出一个用户名或密码缺点的结论。
然后,这个信息会从做事器返回到前台,前台便是浏览器。

所谓的前台便是你的浏览器,没什么神秘的。

前台接管到后台传过来的信息后,进行一些处理,然后给你个提示,比如,见告你用户名或密码缺点。

这便是一个完全的交互过程。

现在随着网速越来越好,浏览器的性能越来越强大,我想web肯定是未来的大趋势。
毕竟,谁都不肯望在电脑上安装一大堆客户端吧。

只用一个浏览器多好。

有了web,我只须要有一个浏览器,然后就能通过互联网获取我想要的资源了。
这样不是很美妙吗?

近几年H5非常盛行,尤其是移动端,由于手机浏览器基本上都支持css3。
一样的道理,我们肯定也不肯望在手机上安装一大堆运用,卡都卡去世了,如果能直接访问一个网页,就能得到我想要的做事就好了。

而且现在WIFI也普遍了,如果往后流量能没有限定,那么APP的热度很可能会逐渐被web取代。

当然,现在是不太可能的,毕竟访问网页要流量啊,而我在手机上安装了APP,就彷佛电脑的QQ一样,大部分资源文件就在我本地,我不须要每次都去联网下载。
比如图片,app就没事,由于就在本地,可是如果用web,我每次访问那个网页,就须要把图片重新下载一遍。
这样不是很摧残浪费蹂躏流量吗?

3. 手工搭建web项目

现在,为相识释做事器和web项目的观点,我们先不用eclipse,来手工搭建一个web项目。

做事器,正常情形下便是一台配置高一点的电脑,除非是那种大型的专用做事器。

一样平常来说,所谓的做事器,便是电脑。

比如我现在有一台电脑,给他装了一个linux系统或者windos系统,然后我说,好了,从今往后,这便是做事器了。
现在做事器一样平常都是用linux系统的。

那么tomcat又是什么?

tomcat实在也是一个运用程序,你网高下载的tomcat每每是一个压缩包,然后我们解压往后就相称于安装好了。

可以这么理解:

做事器便是一台电脑,而tomcat是一个容器,专门存放web项目的容器。

以下我都将tomcat称为tomcat容器。

我们看到在tomcat容器根目录下,有一个webapps文件夹

里面是这样的:

好的,现在我要发布一个项目了,我只须要把一个已经做好的web项目往里面一丢就行了。

除了webapps,我们还创造一个bin目录。
一样平常来说,可实行的文件都放在bin目录下。

打开bin,找到一个startup.bat文件。
这便是启动tomcat的东西,双击它,tomcat就被启动了。

然后,浏览器可以访问tomcat里面的项目。

现在我们来手工搭建一个web项目,首先,在webapps目录下新建一个文件夹,是的,便是文件夹,不管你项目是什么,肯定还是放在文件夹里面的。

项目名称就叫做webapp。

打开webapp,根据web项目的规范,我们须要有一个WEB-INF文件夹。

然后,在WEB-INF文件夹里面,必须要有一个web.xml文件。

xml文件,便是一个描述性的文件,我现在的不雅观点如下:

XML = JavaBean = Json = HashMap

它无非便是描述一些东西,保存一些数据而已。

好的,我们在里面新建一个web.xml。
这个文件非常主要,正由于它的存在,tomcat容器才会知道这个文件夹里面竟然是一个web项目。

否则,tomcat容器是不知道这个web项目的,它只会将myapp文件夹看做是一个文件夹而已。

我们用记事本打开web.xml,将以下代码拷贝进去。

<?xml version=\"大众1.0\公众 encoding=\"大众UTF-8\"大众?><web-app> <display-name>web</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list></web-app>

<?xml version=\"大众1.0\"大众 encoding=\"大众UTF-8\公众?>表示这是一个1.0版本的XML文件,编码为UTF-8。

<web-app></web-app>便是这个XML文件的一个根节点,便是见告你,我这个xml文件里面,有一个东西叫做web-app。

XML的一个浸染便是配置文件,web.xml本身便是一个配置文件。
在web项目中,我们运用xml最多的也便是配置一些参数。

配置参数,便是给属性赋值嘛,没什么神秘的。

包括我们学习JavaSE,归根到底,一贯在做的一件事便是new工具,然后调用方法,调用方法的目的一方面是做一些事情,另一方面不还是给属性赋值嘛。

你可以把web.xml看做是一个java类,类名叫做 webApp。
它里面有两个属性,分别是display-name和welcome-file-list。

display-name是发布名称,也便是项目的名字。

welcome-file-list 是欢迎页面,便是说,当你在浏览器直接访问这个myapp项目,默认跳转的页面。

想象一下,该当会变得非常好理解。

XML便是一个数据描述措辞,我们通过web.xml描述这个项目的构成和配置。

好的,接下来,我们是不是要给他一个欢迎页啊。
嗯,我们在webapp目录下添加一个大略的欢迎页,里面就打印一个HelloWorld。

<%@ page language=\"大众java\"大众 contentType=\"大众text/html; charset=UTF-8\"大众 pageEncoding=\"大众UTF-8\"大众%><!DOCTYPE html PUBLIC \"大众-//W3C//DTD HTML 4.01 Transitional//EN\公众 \公众http://www.w3.org/TR/html4/loose.dtd\"大众><html><head><meta http-equiv=\公众Content-Type\公众 content=\"大众text/html; charset=UTF-8\"大众><title>Insert title here</title></head><body> <h1>Hello World!</h1></body></html>

<%@ page language=\"大众java\公众 contentType=\公众text/html; charset=UTF-8\"大众

pageEncoding=\"大众UTF-8\"大众%>

这是一条JSP的page指令,如果你用面向工具的思维来看待这个玩意,便是new了一个page工具,并且给它里面的language,contentType,charset,pageEncoding属性分别赋了值。

language表示JSP页面所用的措辞,默认是java,实在你写不写都没有关系,由于目前来说JSP它只支持Java。

我们来试一下,现在我们把language属性去掉。
就变成了这样:

<%@ page contentType=\公众text/html; charset=UTF-8\公众 pageEncoding=\公众UTF-8\"大众%>

contentType=\"大众text/html; charset=UTF-8\公众:设置页面的内容是文本或者html页面,字符设置为UTT-8。

pageEncoding=\"大众UTF-8\"大众:页面编码设置为UTF-8。

好的,现在我们在bin目录,双击运行startup.bat

启动完毕。

打开浏览器,在地址栏输入http://localhost:8080/myapp/

回车

哇,是不是出来了。

太棒了。

这便是手工搭建一个web项目的过程。

只要你符合web项目的规范,包括文件夹的名字,文件的名字,就会被tomcat容器识别为一个web项目。

接下来,我们来写做事器代码。

在WEB-INF下面新建一个文件夹,名字叫做classes,这个也是规范,就叫这个名字,否则tomcat容器识别不了。

里面在创建一个java文件,名字就叫Hello吧

用记事本打开,将下面的代码拷贝进去。

import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class Hello extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request,response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println(\"大众已经进入做事器...\"大众); }}

这是一个比较大略的HttpServlet 程序,说到servlet,他的意思便是做事器小程序。

原来,在英文中,但凡是let结尾的单词,都有眇小的意思。
比如servlet,server是做事器,let结尾,那么便是做事器小程序。

servlet是Server Applet的缩写,我们再来看Applet,app是运用程序,又是let结尾,以是该当便是小的运用程序。

这个便是所谓的英文词根,也是学英语的一个窍门。
类似的例子还有很多,比如d开头的单词,大部分都有往下,分开,分散的意思。
反正便是有一种往下,或者分发出去的韵味。

为了验证这个事情,我们打开有道词典随便找几个看看。

distribution

哦,对的,分配,配送,分发。
这 不便是有分散,分出去的韵味吗?

determine

确定,下决心。
这不便是把什么什么东西定下来,定下来,不也是往下吗?

以是,得出一个结论,d开头的单词,而且,第二个字母必须是元音字母,比如de,di等。
那么,这一类单词的情绪色彩就有一种往下,或者分发出去的韵味。

再来说说servlet,let结尾都代表这个单词是一个小型的东西,比如

piglet 小猪

starlet 小老婆星

再比如,psy开头的单词,情绪色彩便是倾向于精神和生理学方面的,

Paste_Image.png

psychology 生理学

还有

这下子该当比较好理解了吧,以是它为什么叫servlet,也是有缘故原由的。

连续,我们用命令行的办法将java文件编译成class文件。

在编译之前,我们先去tomcat容器的lib目录找一个jar:

找到servlet-api.jar,复制一份,拷贝到classes目录下。

然后,我们在该classes目录下,按住shift,鼠标右键,选择在此处打开命令行窗口。

输入javac -classpath servlet-api.jar Hello.java

class文件就出来了

再次打开web.xml,我们还须要把这个servlet配上去,不然tomcat怎么知道这个servlet须要加入我们的web项目呢?

web.xml

<?xml version=\"大众1.0\"大众 encoding=\"大众UTF-8\"大众?><web-app> <display-name>web</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>Hello</servlet-name> <servlet-class>Hello</servlet-class> </servlet> <servlet-mapping> <servlet-name>Hello</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping></web-app>

双击startup.bat,启动tomcat容器

然后,在浏览器的地址栏输入http://localhost:8080/myapp/hello

创造网页上一片空缺,回顾我们的servlet程序,按理说掌握台会打印一句话的

Paste_Image.png

看看掌握台:

果真如此。

你该当也已经创造了,我们手工搭建web项目的话,是不是很麻烦呀?以是,这也是为什么我们现在都用eclipse,或者MyEclipse来开拓项目了。

这些IDE工具便是为理解决手工编译的麻烦而涌现的。