Tomcat的下载安装及静态部署
Linux 入门——基础使用及常见命令

目录

1.Servlet初识

1.1创建maven项目

1.2代码编写

1.3创建必要的目录和文件

1.4打包程序

1.5部署程序

1.6验证程序

2.IDEA smart tomcat:插件plugin:一键打包部署

2.1下载smart tomcat

2.2配置smart tomcat

2.3验证:访问页面

3.Servlet出现错误的几种形式


1.Servlet初识

Servlet 是一种实现动态页面的技术. 是一组 Tomcat 的 API, 帮助简单高效的开发一个 Web App.

静态页面:内容始终固定的页面. 即使用户不同/时间不同/输入的参数不同 , 页面内容不发生变化. 
 动态页面:用户不同/时间不同/输入的参数不同, 页面内容会发生变化.

Servlet 就是 Tomcat 这个HTTP服务器提供给 Java 的一组 API, 来构建动态页面

Servlet不必关注 Socket, HTTP协议格式, 多线程并发等技术细节, 降低了 web app 的开发门槛, 提高了开发效率.

Servlet 主要做的工作:

1.初始化:允许程序猿创建一个类到Tomcat中, 在 Tomcat 收到某个特定的 HTTP 请求的时候, 执行这个类中的一些代码.

2.进入循环:循环处理很多请求

  • 读取HTTP请求,servlet解析这个请求字符串,生成一个HttpServletRequest对象
  • 根据请求对象生成一个HttpServletRequest对象(表示响应)
  • 把HttpServletRequest对象转换成HTTP响应,返回给浏览器

TCP服务器的工作:

1.初始化

2.进入循环

  • 读取请求
  • 根据请求计算响应
  • 把相应返回

1.1创建maven项目

步骤:

  • 创建maven项目
  • 引入依赖到pom.xml文件(注意servlet版本和Tomcat版本的对应关系)
  • 在main目录下创建webapp目录,webapp下创建WEB-INF/web.xml
  • web.xml 内容代码编写
  • 主文件代码编写
  • 打包成war文件并重命名(在 pom.xml 中新增一个 build 标签, 内置一个 finalName 标签, 重命名)
  • 使用Tomcat部署程序(war文件放到Tomcat目录的webapps下,启动Tomcat的startup.文件会自动解压war到当前目录)
  • 验证程序:浏览器输入127.0.0.1:8080/hello即可(hello为注解中的路径)

或者使用smart Tomcat插件进行简化完成打包+部署

(1)创建maven项目

使用Maven方便进行依赖管理,直接在pom.xml中添加依赖,即可导入

(2)引入依赖,servlet API的jar包

1)servlet版本需要和Tomcat对应,我的Tomcat版本是Tomcat8,对应servlet3.1

2)依赖导入到文件,<dependencies> 标签内部放置项目依赖的 jar 包,maven 会自动下载依赖到本地(若有多个依赖也需要放在<dependencies> 标签内,<dependencies> 标签只能有一个)

导入成功颜色恢复正常

<scope> 标签表示当前jar包只在开发阶段使用,而不需要打包到最终的发布包中

Tomcat内置了servlet,把程序部署到Tomcat时,就有了servlet


1.2创建必要的目录和文件

在main目录下创建webapp目录,在webapp目录创建WEB-INF/web.xml

web.xml文件内容(注意保存此文件,手敲代码容易写错)

<!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 中的一个重要目录. 可以放一些静态资源(如 html , css 等). Tomcat 找到web.xml才能正确处理 webapp 中的动态资源.

Alt+enter出现如下显示,选中Ingore external resource 忽略即可报错消失


1.3代码编写

在 java 目录中创建一个类classServlet, 代码如下:

创建的类classServlet 需要继承 HttpServlet类,才能让这个类classServlet 被Tomcat给调用到若之前的maven依赖下载失败,此时的父类HttpServlet是不能被补全的;若导入成功,HttpServlet仍报红,说明依赖未刷新,此时刷新右侧maven工具栏即可

代码编写步骤:

  1. 创建一个类classServlet, 继承自 HttpServlet
  2. 加 @WebServlet("/hello") 注解,  Tomcat 收到路径为 /hello的请求才会调用该类的代码
  3. 重写 doGet 方法.  在 Tomcat 收到HTTP的 GET 请求时触发(调用doGet方法)(do为处理,Get对应到HTTP的GET方法)
  •        1)HttpServletRequest 表示 HTTP 请求:Tomcat 根据 HTTP 请求的格式把 字符串 格式的请求转成了一个 HttpServletRequest 对象. 后续通过HttpServletRequest 对象获取请求中的信息(方法, url, header, body 等)
  •        2)HttpServletResponse 表示 HTTP 响应:代码中把响应对象构造好

4.resp.getWriter() .write返回一个write对象(流对象), 通过write往HTTP响应的body中写入数据, , Tomcat 把整个响应转成字符串, 通过 socket 写回给浏览器.

一个服务器的工作流程:

  1. 接受请求并解析(Tomcat完成)
  2. 根据请求计算响应(自己需要实现的逻辑,也即是doGet要实现的内容)
  3. 构造响应函数,返回给客户端(Tomcat完成)
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;//当Tomcat收到路径为/hello的请求,就会调用classServlet的代码
//HttpServlet若此处HttpServlet报红,说明以来导入不成功,此时刷新右侧maven工具栏即可
//当Tomcat收到路径为/hello的请求,就会调用classServlet的代码
// 若请求是get请求,则调用classServlet.doGet方法,若是post请求,调用classServlet.doPost
@WebServlet("/hello") //注解,给入路径
public class classServlet extends HttpServlet {//doGet方法是父类HttpServlet的方法,因此子类classServlet需要重写doGet方法才能使用// doGet(req, resp):doGet方法根据请求生成响应@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//      super.doGet(req, resp);  //不能使用此方法,super.方法是调用父类的方法,也即是调用HttpServlet的doGet方法System.out.println("hello world");  //在控制台显示输出内容resp.getWriter().write("hello world");  在浏览器页面显示字符串}
}

servlet代码不是通过 main 方法作为入口. main 方法被包含在 Tomcat 里, Tomcat 在合适的时机调用,我们写的代码不是一个完整的程序, 而是 Tomcat 这个程序的一小部分逻辑.

Tomcat 什么时候调用? 满足啥样条件才能被调用呢?

主要满足三个条件:
a) 创建的类需要继承自 HttpServlet
b) 这个类需要使用 @WebServlet 注解关联上一个 HTTP 的路径
c) 这个类需要实现 doXXX 方法.

当这三个条件都满足之后, Tomcat 就可以找到这个类, 并且在合适的时机进行调用.


1.4打包程序

基于maven打包

注意!!! tomcat不能识别jar包(java-jar命令运行),只能识别war格式

 war 包和 jar 包的区别:

1.jar 包是普通的 java 程序打包的结果. 会包含一些 .class 文件.
2.war 包是 java web 的程序, 会包含 .class 文件, 还包含 HTML, CSS, JavaScript, 图片等 以及其他的 jar 包. 打成 war 包格式才能被 Tomcat 识别.

因此,需要修改pom.xml配置,在添加依赖的下方添加标签,修改打包的类型为war(可被Tomcat识别),先删除原先的jar包(不删会报错,无法生成war包),再次重复打包操作生成war包

   <packaging> war </packaging>

war包部署到Tomcat上会自动解压缩,生成同名的目录;通过浏览器URL访问webapp时,要在URL中带目录的名字。由于生成的war包名字较长,可以rename:此时也需先删除生成的war包

在 pom.xml 中再新增一个 build 标签, 内置一个 finalName 标签, 重命名为:classServlet

    <packaging>war</packaging><build><finalName>classServlet</finalName></build>

得到最后重命名的classServlet.war

1.5部署程序

classServlet.war包放入到Tomcat/webapps目录下,然后启动Tomcat/bin/startup.bat

1.6验证程序

浏览器输入127.0.0.1:8080/classServlet/hello  (hello为注解中的路径)

访问Tomcat需要指定两级目录(文本路径也即是war包名、注解路径servlet路径)


2.IDEA smart tomcat:插件plugin:一键打包部署

2.1下载smart tomcat

2.2配置smart tomcat

点击绿色的三角号(add configuration处), IDEA 就会自动进行编译, 部署, 启动 Tomcat 的过程.

(此时不需要手动启动Tomcat,一键部署会自动在控制台启动;若手动开启了会导致控制台启动Tomcat出错,无法完成一键部署)

2.3验证:访问页面

使用127.0.0.1:8080/servlet/hello 访问页面.(此处的servlet指上图中6中Context Path的路径)

使用 Smart Tomcat 部署的时候,  Tomcat 的 webapps 内部并没有被拷贝一个 war 包,也无解压缩的内容.Smart Tomcat 相当于是在 Tomcat 启动的时候直接引用了项目中的 webapp 和 target 目录.


3.Servlet出现错误的几种形式

(1)出现 404:表示用户访问的资源不存在. 大概率是 URL 的路径写的不正确.(可能是少写了 Context Path或Servlet Path的问题;web.xml内容有问题时,Tomcat不能正确加载到webapps)

(2)出现 405:表示对应的HTTP请求没有实现(没有实现 doGet 方法/没有注释super.doGet)

(3)出现 500:往往是 Servlet 代码中抛出异常导致的

(4)出现 "空白页面":没有 resp.getWritter().write() 操作,没有写入内容

(5)出现 "无法访问此网站":一般是 Tomcat启动失败


浏览器发出GET请求:

1.直接在地址栏输入URL

2.通过<a>标签跳转

3.通过<img>/<link><script>标签

4.通过form表单,method指定为GET

5.通过ajax,type指定为GET

浏览器发出POST请求:

1.通过form表单,method指定为POST

2.通过ajax,type指定为POST

javaWeb——servlet的认识及Tomcat动态部署相关推荐

  1. JavaWeb开发---B/S和C/S模式 tomcat服务器 Tomcat项目部署和发布 静态网页和动态网页 tomcat对web项目的目录要求 使用idea开发工具创建web项目 设置默认首页

    目录 1. B/S和C/S模式 1.1 C/S模式 1.2 B/S模式 1.3 B/S和C/S区别 2.服务器 3.web 服务器 3.1.IIS 3.2.Tomcat 3.3.Zeus 3.4.Ng ...

  2. Tomcat 动态资源服务器部署及应用

    Tomcat 动态资源服务器部署及应用 Java 2 EE 计数体系包含如 Serverlet , JSP , JMX 等等. 以OpenJDK为例,当前比较常用的有1.6.0.1.7.0.1.8.0 ...

  3. JavaWeb+MySql+Tomcat一键部署方案

    前言 前段时间,公司接单子做一套JavaWeb系统.作为主要负责人,我们小组的工作一切顺利.但在交付前,客户要求该Web系统做到一键安装部署.这是因为该系统使用环境为机房局域网,每个机房需要部署一套, ...

  4. 前端:Tomcat服务器部署Web项目

    文章目录 1.1 C/S架构 1.2 B/S架构 2.1 服务器 2.2 常见服务器 3.1 Tomcat安装 3.2 Tomcat使用 3.3 Tomcat配置 3.4 Tomcat项目部署 4.1 ...

  5. Javaweb servlet体系结构与原理剖析

    Javaweb servlet体系结构与原理剖析 1.Servlet的工作过程 2.Servlet体系结构 3.Servlet工作原理 4.Servlet生命周期 1.Servlet的工作过程 当用户 ...

  6. 【JavaWeb】学习笔记(Tomcat)

    JavaWeb 后端部分 1.Tomcat服务器 1.1 背景了解: 1.1.1 Web资源分类: 静态资源:html.css.js.txt.mp4视频.jpg图片等 动态资源:jsp页面.servl ...

  7. JavaWeb——Servlet(全网最详细教程包括Servlet源码分析)

    JavaWeb--Servlet Tomcat工作机制动画演示(点击动图可全屏观看) 什么是Servlet Servlet(Server Applet),全称Java Servlet,未有中文译文.是 ...

  8. javaWeb——Servlet

    Servlet 系统架构 B/S结构的系统通信原理(没有涉及到Java小程序) 关于WEB服务器软件 实现一个最基本的web应用(这个web应用中没有java小程序) 对于一个动态的web应用来说,一 ...

  9. Tomcat服务部署和优化

    文章目录 一.Tomcat介绍 1.1 什么是Tomcat 1.2 Tomcat的构成组件 1.2.1 Java Servlet 介绍 1.2.2 JSP介绍 1.3 Tomcat顶层架构 1.3.1 ...

  10. 在tomcat上部署项目需要打成jar_Spring Boot Web 项目教程,SpringBoot与传统Web 优缺对比...

    1.引子 大家好,在接下里的一段时间里,我会给大家详细的介绍SpringBoot的基本使用,相信学完这门课程以后,你会对SpringBoot有一个清晰的认识,并且能够运用这门比较新颖的技术开发一些小程 ...

最新文章

  1. Spring Cloud Alibaba 2.2.6发布:新增Nacos注册快速失败的配置
  2. net.sf.ezmorph.bean.MorphDynaBean cannot be cast to com.console.demo.web.model.XXX
  3. 前端QRCode.js生成二维码(解决长字符串模块和报错问题)
  4. 如何在CentOS/RedHat下实现根据源码包创建rpm包
  5. [Wireshark]_002_玩转数据包
  6. 循环机换变速箱油教程_变速箱油多久换?很多老司机都可能不知道
  7. python爬虫安装了pycharm还要安装什么_Pycharm安装与使用
  8. ng-深度学习-课程笔记-13: 目标检测(Week3)
  9. 音频放大电路设计与制作
  10. Matlab猜数字游戏GUI界面设计
  11. 2021微信透明头像!真实有用
  12. markdown语言练习
  13. jsonp跨域原理解析
  14. 愚人节,这样的微信公众号图文排版方式你见过吗?
  15. [转贴][教学] 教你如何打飞机 ^_^
  16. php的qq邮箱正则表达式语法_正则表达式综合应用:qq邮箱提取
  17. 关于VMware虚拟机安装失败的解决办法,报错(29142)或者安装系统后无法启动
  18. Cannot run program python问题解决
  19. PWM调光调色温技术学习(笔记)
  20. 用计算机怎么计算表格的平均数,excel工作表如何快速计算平均值的标准偏差?...

热门文章

  1. 超声前置放大器原理是什么意思,前置放大器和功放区别
  2. 构建人人网社会化推荐引擎
  3. 城管系统服务器,数字城管系统建设方案详细.doc
  4. 原生js实现音乐播放器功能,可以实时显示歌词并且高亮当前句
  5. ap6212linux驱动下载,AP6212各个版本固件
  6. bootstrap-fileinput插件获取图片文件并展示,不进行上传
  7. MATLAB绘图总结
  8. 【Linux 操作系统】vim编辑器配置及常用命令
  9. si4463 WDS生成文件和参数配置的关系
  10. 数据挖掘工具weka之weka包的安装