目录
🚩认识Tomcat
🚩运用Tomcat
🚩Servlet
🎓完成简单的Servlet的hello world程序
🎈创建项目Maven
🎈引入依赖
🎈创建目录
🎈编写代码
🎈打包程序
🎈部署程序
🎈验证程序
🔴七大步骤的思维导图
🎓修改代码——安装插件(smart tomcat)
🎈使用Smart Tomcat插件的步骤
🚩认识Tomcat
tomcat是一个java写的http服务器,开发网站就需要涉及到HTTP服务器,java圈子中,最知名的HTTP服务器就是tomcat。
Tomcat是一个基于java实现的“绿色软件”,只要解压缩,就可以使用。(前提是大家需要提前安装好JDK)Apache Tomcat® - Apache Tomcat 8 Software Downloads
安装tomcat如下:
需要配置环境变量
需要配置环境变量
bin目录的介绍
bin目录下放的是tomcat的一些相关可执行脚本。
启动tomcat
. bat就是windows上的批处理程序
.sh就是linux上的shell脚本。运行这个程序,就能启动tomcat。
进入Tomcat欢迎页面
tomCat启动成功之后,就可以通过浏览器来访问tomcat的欢迎页面了/
tomcat的日志,在控制台中,可能是乱码的。原因是Tomcat默认使用的字符集是utf8,而windows cmd的字符集是gbk.
conf目录下配置文件
conf中放的是tomcat的配置文件,tomcat的配置文件主要是由xml提供的
logs日志
logs日志,调试一个服务器程序最重要的手段
日志,调试一个服务器程序最重要的手段。
后续自己写的程序,代码中打印的日志,就可以在上述目录中,看到。
webapps目录
webapps里面放的就是若干个webapp
webapps里面放的就是若干个webapp(网站),webapps中,每个目录都是一个webapp(就包含了一个网站的后端代码和前端代码) 这个目录中还能看到.war压缩包文件.war包,使用tomcat发布程序的一种方法,写好一个网站,就可以打包成war包,拷贝到tomcat的webapp里,tomcat就会自动对war进行解压缩,从而完成网站的部署和加载。war包是咱们自己写的代码,生成的结果。
🚩运用Tomcat
我们上述介绍了webapps里面包含了前端和后端代码,我们在webapps文件夹中创建目录
重新启动tomcat,我们在tomcat主页面后面写上webapps里面的前端网页路径,就可以看到打印内容了。
这就是tomcat的重要作用,可以让浏览器通过网络来访问到html页面,ip地址+端口号,而上面是直接双击打开,这是浏览器打开一个本地文件。
但是当然,这样只能我的电脑访问(我的电脑上的tomcat部署的网页),别人的电脑不能 直接访问,除非我们在同一个局域网内(我现在连的是校园网,除非你也连的校园网,然后输入我的ipv4地址,就可以访问了。)
如果不在同一个局域网中,我们就需要云服务器,它是有外网ip的,只需要把刚才的网页放到云服务器的tomcat上,大家都能访问了。具体操作以后再说。
tomcat 就像一个“底座”一样,我们所编写的网站,都要架在这个底座上,然后才能够被外面的用户顺利访问到。tomcat不仅能支持“动态网页”,也可以放一个简单的“静态网页”
tomcat支持动态网页,Tomcat提供了一组api,封装了HTTP协议,可以让程序猿更方便的来编写动态网页。也就称为Servlet。
🚩Servlet
servlet主要做的工作:就是让程序员自己写一些类,然后把这些类加载到Tomcat中,后续Tomcat收到HTTP请求(来自于浏览器),就会执行到咱们上面写的代码,从而通过这些代码,完成一定的业务逻辑。
🎓完成简单的Servlet的hello world程序
目标:编写Servlet代码,最终在浏览器上,能够展示出hello world ——七大步骤来完成。
🎈创建项目Maven
创建的项目称为——Maven项目
Maven项目是使用Maven构建工具管理的Java项目。Maven是一个强大的项目管理工具,可以管理项目的构建、依赖、打包、部署等各个方面。通过使用Maven,开发人员可以更方便地管理项目的结构和依赖关系,使项目的构建和部署更加自动化和规范化。Maven项目通常包含一个pom.xml文件,其中定义了项目的基本信息、依赖关系和构建配置。
Maven项目在首次创建的时候,会自动的从maven网站上下载一些依赖的组件(这个过程如果你的网络不稳定,就会出现问题,就会影响后续的maven的使用)
默认生成的情况,都是基本的属性,后续还需要修改这个文件,添加更多的内容,完成一些效果。
不仅仅是servlet可以使用maven,任何一个java程序,都可以使用maven来管理。
🎈引入依赖
Servlet这个api是tomcat提供的,而不是jdk提供的(第三方库)
可以手动下载导入,比较麻烦(工作中涉及到的项目,可能依赖的内容非常多,手动管理就非常麻烦了)使用maven就可以非常方便的解决上述问题。
1》打开maven中央仓库,找到需要的Servlet的jar包
有一群大佬,把市面上的第三方库都收集起来,搞了一个网站,都放到上面了,方便咱们程序员去下载使用
Maven Repository: Search/Browse/Explore (mvnrepository.com)
2》借助maven,自动下载上述依赖
<dependencies>这个标签里面可以包含很多依赖。只要复制进去,idea就可以自动下载。
🎈创建目录
对Tomcat来说,对于项目的目录结构,还有一些额外的要求。
Tomcat要求的结构,咱们写的代码后面会放到tomcat上,必须要遵守Tomcat的要求,否则Tomcat识别不了,也就无法执行你的代码了。
webapp——WEB-INF——web.xml
web.xml里面的内容,不能空着,但是这里咋写,也不必背诵,只需要找到一i个模板,复制粘贴过去就行了。
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Archetype Created Web Application</display-name>
</web-app>
webapp 目录就是未来部署到 Tomcat 中的一个重要的目录. 当前我们可以往 webapp 中放一些静态资源, 比如 html , css 等.在这个目录中还有一个重要的文件 web.xml. Tomcat 找到这个文件才能正确处理 webapp 中的动态资源.
🎈编写代码
继承Httpservlet父类,重写父类的方法。
写一个服务器,主要的逻辑,其实是三个步骤:
- 读取请求并解析(HTTP请求本身是个字符串,此处就是解析HTTP请求字符串,构造成HttpServletRequest对象)Tomcat自动完成的,不需要咱们干涉。)
- 根据请求计算响应(doGet方法要做的事情就是这个 根据请求HttpServletRequest req对象,构造生成HttpServletResponse resp对象)
- 把响应返回给客户端(也是Tomcat自动完成的,就会把响应对象组织成HTTP格式的字符串)
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//这个打印会显示的出现在tomcat控制台上(服务端)
System.out.println("hello 五一快乐");
//把内容显示在页面上,把“hello world”字符串作为htpp响应的body部分
//这个部分就会被浏览器显示到页面上
resp.getWriter().write("hello 五一快乐");
}
}
Tomcat不是收到所有的get请求都调用这个doGet方法,而是同时判断1.请求是get,2.请求url中的路径hello
不仅仅是要看方法,还需要看请求的路径那就体现在@WebServlet("/hello")中了,路径必须是/hello。
🎈打包程序
打包程序,把咱们的写好的代码打成war包(Tomcat需要有一个war包在上面)MAVEN就可以完成打包操作。
1》修改pon.xml,设置打包的类型和包名字
<packaging>war</packaging> <build> <finalName>clizyf</finalName> </build>
默认情况下打的是jar包,大那是tomcat要求的是war包,所以我们要听tomcat的要求去做,怎么设置目录路径也要严格遵守tomcat来执行。tomcat就是我们的老板一样。(java中更通用的发布方式,任何程序都可以达成.jar,jar里最重要就是.class文件,Tomcat专属的压缩包,war里面不光有.class还有一些tomcat要求的配置文件(web.xml等)还有前端的一些代码(html,css,js)
2》在右侧maven面板中,双击package按钮
如果看到这个字样,就说明打包成功了,如果打包失败,在控制台会出现出错原因
🎈部署程序
将代码仓库里面的clizyf.war文件粘贴复制到webapps目录中去。也可以在此目录下直接ctrl c即可。
此时已经放入打webapps中去了。
🎈验证程序
通过浏览器,访问tomcat,获取到咱们代码返回的hello world
我们看到这样??出现乱码,意味着有多个环节,对于编码方式的理解不一致,比如,构造数据按照utf8,解析数据按照gbk,就很容易出现乱码现象。
1》构造数据
此处“你好”这两个字,是直接在idea的代码编译器中,构造的。这个编码方式就看idea的代码编译器是什么编码。
2》解析数据
浏览器如何解析的呢?浏览器默认的解析方式,是跟随系统的,windows10简体中文版,使用的字符集是GBK
把jbk改成utf8,utf8是主流。在HTTP响应报文中,显示的告诉浏览器,返回的body字符集是什么。
在http响应报文的header中,就会有Content-Type,这里面描述了body的数据格式,以及编码方式。
此时hello 五一快乐就是servlet代码中返回的内容了。
- clizyf 就是war包名称为上下文路径
- hello 则是servlet路径
一个目录对应一个war包,目录就是tomcat对war包自动解压缩得到的。
🔴七大步骤的思维导图
🎓修改代码——安装插件
如果我们想修改代码,修改之后,然后给war包删了,然后重新打包嘛,然后重新部署?那样的操作太过于复杂了
- 修改代码
- 重新打包
- 重新部署
这个过程,比较麻烦,写代码的时候,修改是非常频繁的。聪明的程序员也有办法,可以借助IDEA的插件,把tomcat集成到IDEA中,此时,就可以通过IDEA一键式的重新打包部署了。
插件就是你需要的时候就用,不需要的时候就收起来。按需使用的“功能扩展”的插件。
为了让tomcat集成起来,IDEA需要安装插件,Smart Tomcat。
🎈使用Smart Tomcat插件的步骤
context path决定了访问servlet的时候,第一级路径怎么写
我们在没有使用smart tomcat 就直接写作war包名字(目录名字)
在使用smart tomcat的时候,context path需要手动配置,不配置的话就是默认项目名字。
成功修改
我们将五一快乐改成五一快乐呀,我们成功否?
修改成功!
我们要注意的是,我们在打印出来的时候,不要点那个链接。
localhost是一个域名,往往就会被解析成127.0。0.1(大部分情况下,是等价的,但是不绝对),有些场景下localhost可能用不了,但是127.0.0.1是一般都能用的。访问到咱们的程序,是通过context path+servlet path两级目录访问的。
有了smart tomcat之后,修改代码的时候,只需要重新点击运行tomcat即可。
要祝她铮铮,祝她昂扬!