文章目录
- 1. Servlet 是什么
- 2. 第一个Servlet 代码
- 2.1 创建一个项目
- 2.2 引入依赖
- 2.3 创建目录
- 2.4 编写代码
- 2.5 打包程序
- 2.6 部署程序
- 2.7 验证程序
- 2.8 更新代码
- 3. 访问出错了怎么办?
- 3.1 出现 404
- 3.2 出现 405
- 3.3 出现 500
- 3.4 出现空白界面
- 3.5 出现“无法访问此网站”
1. Servlet 是什么
Servlet 是一种实现动态页面的技术.,是一组 Tomcat 提供给程序员的 API,帮助程序猿简单高效的开发一个 web app
但是这个是一个比较古老的编写网站的方式
后来 java 中产生了 Spring,Spring 优势针对 Servlet 进行进一步封装
现在使用 java 进行商业开发,基本都是以 Spring 为主
为了以后更好的学习 Spring,这里来学习一下 Servlet
Servlet 主要做的工作
就是让程序员自己写一些类,然后把这些类给加载到 tomcat 中
后续 tomcat 收到 HTTP 请求(来自于浏览器),就会执行到上面所写的代码
从而通过这些代码,完成一定的业务逻辑
2. 第一个Servlet 代码
目标:编写 Servlet 代码,最终在浏览器上,能够展现数 hello world
(大概需要7 哥步骤才嫩完成)
2.1 创建一个项目
此处创建的是一个新的项目,称为 Maven 项目
Maven 是java 世界中一个知名的构建工具,帮助你编译/打包代码
以后工作中设计到的项目,肯呢个会非常复杂,可能会有一系列的依赖关系
Maven 就可以解决上述问题,帮我们把依赖管理好
Maven 的打包功能方便集成到自动化环境中
idea 已经集成了 Maven
1. 创建项目
Maven 项目在首次创建的时候,会自动的从 Maven 的网站上下载一些依赖的组件
-
main 中的是业务代码
(实现业务的代码,解决问题的具体过程就是所谓的“业务”) -
text 中是测试代码
-
pom.xml 是 Maven项目的入口配置
后面也需要修改这个文件,添加更多的内容,完成一些效果
2.2 引入依赖
1)打开 Maven 重要仓库,找到需要的 servlet 的 jar 包
要下载相对应的版本
2)借助 Maven,自动下载上述的依赖
2.3 创建目录
Tomcat 要求的结构
后面的代码会放到 tomcat 中,所以必须要遵循 tomcat 的要求,否则识别不了,就无法执行
2.4 编写代码
这里来自于 servelet 的jar 包
重写父类方法
本质目的就是,为了能够在现有的代码流程中,插入自己的逻辑
doGet 的意思,就是处理 HTTP GET 请求
当 tomcat 收到一个 GET 请求的时候,就有可能执行到这个子类的方法中
写一个服务器,主要的逻辑,其实就三个步骤
-
读取请求并解析
HTTP 请求本身是一个字符串
此处就是解析 HTTP 请求字符串,构造成 HttpServletRequest 对象 -
根据请求计算响应
doGet 方法要做的事情就是这个
根据请求 HttpServletRequest 对象,构造生成HttpServletRequest 对象 -
把响应返回给客户端
也是 tomcat 自动完成的
就会把响应对象组织成 HTTP 格式的字符串
Tomcat 不是收到所有的 get 请求都调用这个 doGet/方法,而是同时判断
- 请求是 get
- 请求 url 中的路径是 /hello
2.5 打包程序
打包程序,把我们写好的代码打成 war 包(tomcat 需要有一个 war 包在上面)
Maven 就可以完成大猫操作
1)修改 pom.xml,设置打包的类型和包名字
默认情况打的是 jar 包,但是 tomcat 要求的是 war 包
(Tomcat 专属的压缩包,war 里面不光有 .class还有一些 tomcat 要求的配置文件(web.xml 等) 还有前端的一些代码(html, css,js))
2)在右侧 maven 面板中,双击 package 这个按钮
出现这样的字样就说明打包成功了
2.6 部署程序
把 wer 拷贝到 webapps 目录中就可以了
启动 tomcat
2.7 验证程序
通过浏览器,访问 tomcat,回去到代码中返回的 hello world
2.8 更新代码
如果要手动更新代码,需要进行三步
- 修改代码
- 重新打包
- 重新部署
但是这种方法太麻烦,这里我们就借助 IDEA 的插件,把 tomcat 集成到 IDEA 中
此时,就可以通过 IDEA 一键式的重新打包部署了
使用 Smart Tomcat
-
-
-
1)这个写什么都可以
2)此处要配置 tomcat 在哪个目录中
3)这里就决定了,浏览器中访问这个 servlet 的时候,一级目录怎么写
不使用 smart tomato,是直接写作 war 包的名字(目录的名字)
使用 smart tomato,context path 就是需要手动配置的,不配置,默认就是项目名字
接下来点击运行就可以了
在我们修改代码的时候,有的时候写了一串中文,会出现乱码的情况
这个时候是因为 每个环节的,解析数据的方式不同
这里我们就看一下是哪里出现的问题
- 构造数据
此处的“你好”这两个字,是在 idea 的代码编译器中,够早的
这个的编码方式,就看 idea 的代码编译器,是什么编码
- 解析数据
浏览器是如何解析的呢?
浏览器默认的解析方式,是跟随系统的
Windows 10 简体中文版,使用的字符集是 GBK
由于 utf8 是主流,这里就可以把 gbk 改了
在 HTTP 响应报文中,告诉浏览器,返回的 body 字符集是什么就可以了
3. 访问出错了怎么办?
3.1 出现 404
这个问题是初学 web 开发中,最常见的问题
-
url 路径写错了
这个一定要清楚,路径怎么写是正确的
可以看上述的代码编写中的 -
webapp 没有正确加载
比如,web.xml 写错
3.2 出现 405
初学阶段容易出现
405:方法没有被实现
(GET 请求,但是 servlet 却没有重写 doGet)
方法没有被实现出来,自然光无法被调用
还有一个原因,也会引起 405
写的代码中,没有删除 super,doGet()
因为响应的格式已经不是合法 http 了导致浏览器解析出错
3.3 出现 500
500:服务器内部错位
(你写的代码抛出异常了)
在日志,或者响应中会带有异常信息
3.4 出现空白界面
这个时候,就要检查,服务器是否真的反悔了带有正文的响应报文
浏览器显示的内容,就是 http 响应的报文
被注释的这个内容,正是此处要写入正文的逻辑
3.5 出现“无法访问此网站”
Tomcat 没有正确运行
这个情况就要检查 tomcat 是否是正常工作
或者检查 ip 和 端口号是否正确