javaWeb——servlet的认识及Tomcat动态部署
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工具栏即可
代码编写步骤:
- 创建一个类classServlet, 继承自 HttpServlet
- 加 @WebServlet("/hello") 注解, Tomcat 收到路径为 /hello的请求才会调用该类的代码
- 重写 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 写回给浏览器.
一个服务器的工作流程:
- 接受请求并解析(Tomcat完成)
- 根据请求计算响应(自己需要实现的逻辑,也即是doGet要实现的内容)
- 构造响应函数,返回给客户端(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动态部署相关推荐
- 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 ...
- Tomcat 动态资源服务器部署及应用
Tomcat 动态资源服务器部署及应用 Java 2 EE 计数体系包含如 Serverlet , JSP , JMX 等等. 以OpenJDK为例,当前比较常用的有1.6.0.1.7.0.1.8.0 ...
- JavaWeb+MySql+Tomcat一键部署方案
前言 前段时间,公司接单子做一套JavaWeb系统.作为主要负责人,我们小组的工作一切顺利.但在交付前,客户要求该Web系统做到一键安装部署.这是因为该系统使用环境为机房局域网,每个机房需要部署一套, ...
- 前端: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 ...
- Javaweb servlet体系结构与原理剖析
Javaweb servlet体系结构与原理剖析 1.Servlet的工作过程 2.Servlet体系结构 3.Servlet工作原理 4.Servlet生命周期 1.Servlet的工作过程 当用户 ...
- 【JavaWeb】学习笔记(Tomcat)
JavaWeb 后端部分 1.Tomcat服务器 1.1 背景了解: 1.1.1 Web资源分类: 静态资源:html.css.js.txt.mp4视频.jpg图片等 动态资源:jsp页面.servl ...
- JavaWeb——Servlet(全网最详细教程包括Servlet源码分析)
JavaWeb--Servlet Tomcat工作机制动画演示(点击动图可全屏观看) 什么是Servlet Servlet(Server Applet),全称Java Servlet,未有中文译文.是 ...
- javaWeb——Servlet
Servlet 系统架构 B/S结构的系统通信原理(没有涉及到Java小程序) 关于WEB服务器软件 实现一个最基本的web应用(这个web应用中没有java小程序) 对于一个动态的web应用来说,一 ...
- Tomcat服务部署和优化
文章目录 一.Tomcat介绍 1.1 什么是Tomcat 1.2 Tomcat的构成组件 1.2.1 Java Servlet 介绍 1.2.2 JSP介绍 1.3 Tomcat顶层架构 1.3.1 ...
- 在tomcat上部署项目需要打成jar_Spring Boot Web 项目教程,SpringBoot与传统Web 优缺对比...
1.引子 大家好,在接下里的一段时间里,我会给大家详细的介绍SpringBoot的基本使用,相信学完这门课程以后,你会对SpringBoot有一个清晰的认识,并且能够运用这门比较新颖的技术开发一些小程 ...
最新文章
- Spring Cloud Alibaba 2.2.6发布:新增Nacos注册快速失败的配置
- net.sf.ezmorph.bean.MorphDynaBean cannot be cast to com.console.demo.web.model.XXX
- 前端QRCode.js生成二维码(解决长字符串模块和报错问题)
- 如何在CentOS/RedHat下实现根据源码包创建rpm包
- [Wireshark]_002_玩转数据包
- 循环机换变速箱油教程_变速箱油多久换?很多老司机都可能不知道
- python爬虫安装了pycharm还要安装什么_Pycharm安装与使用
- ng-深度学习-课程笔记-13: 目标检测(Week3)
- 音频放大电路设计与制作
- Matlab猜数字游戏GUI界面设计
- 2021微信透明头像!真实有用
- markdown语言练习
- jsonp跨域原理解析
- 愚人节,这样的微信公众号图文排版方式你见过吗?
- [转贴][教学] 教你如何打飞机 ^_^
- php的qq邮箱正则表达式语法_正则表达式综合应用:qq邮箱提取
- 关于VMware虚拟机安装失败的解决办法,报错(29142)或者安装系统后无法启动
- Cannot run program python问题解决
- PWM调光调色温技术学习(笔记)
- 用计算机怎么计算表格的平均数,excel工作表如何快速计算平均值的标准偏差?...