目录
Servlet 是什么
Servlet 主要做的工作:
第一个Servlet项目
1.创建一个maven项目
2.添加Java
3.添加servlet框架
4.编写代码
5. 打包程序
6. 部署程序
7. 验证程序
更方便的部署方式
访问出错怎么办?
出现 404
出现 405
出现 500
出现 "空白页面"
出现 "无法访问此网站"
小结
Servlet 是一种实现动态页面的技术. 是一组 Tomcat 提供给程序猿的 API, 帮助程序猿简单高效的开发一 个 web app.
关键点:
1.基于HTTP协议
2.运行在tomcat里面的
1.建立连接:客户端和程序的连接(当用户输入了请求URL之后,程序能感知到用户的请求)。
2.获取用户请求参数,处理request对象
3.将处理器处理结果返回给客户端,返回response对象
选择目录
双击main\java
Maven 项目创建完毕后, 会自动生成一个 pom.xml 文件. 我们需要在 pom.xml 中引入 Servlet API 依赖的 jar 包
1.) 在中央仓库 https://mvnrepository.com/ 中搜索 "servlet", 一般第一个结果就是.
2) 选择版本. 一般我们使用 3.1.0 版本
Servlet 的版本要和 Tomcat 匹配.
如果我们使用 Tomcat 8.5, 那么就需要使用 Servlet 3.1.0
可以在 http://tomcat.apache.org/whichversion.html 查询版本对应关系.
3) 把中央仓库中提供的 xml 复制到项目的 pom.xml 中
javax.servlet
javax.servlet-api
3.1.0
provided
添加依赖
1.在 java 目录中创建一个类 HelloServlet
2.继承HttpServlet
import javax.servlet.http.HttpServlet;
public class HelloServlet extends HttpServlet {
}
3.注册请求路由(URL)
4.重写doGet方法
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;
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//获取前端参数
String name = req.getParameter("name");
//将结果返回前端
resp.getWriter().println("name=" + name);
}
}
执行流程:
使用 maven 进行打包.
打开 maven 窗口 (一般在 IDEA 右侧就可以看到 Maven 窗口, 如果看不到的话, 可以通过 菜单 -> View -> Tool Window -> Maven 打开) 然后展开 Lifecycle , 双击 package 即可进行打包
把 war 包拷贝到 Tomcat 的 webapps 目录下.
配置 Smart Tomcat 插件
1) 点击右上角的 "Add Configuration"
2) 选择左侧的 "Smart Tomcat"
3) 在 Name 这一栏填写一个名字(可以随便写) 在 Tomcat Server 这一栏选择 Tomcat 所在的目录. 其他的选项不必做出修改.
在Deployment中点击加号
点击绿色的三角号, IDEA 就会自动进行编译, 部署, 启动 Tomcat 的过程.
使用 Smart Tomcat 部署的时候, 我们发现 Tomcat 的 webapps 内部并没有被拷贝一个 war 包, 也没有看到解压缩的内容. Smart Tomcat 相当于是在 Tomcat 启动的时候直接引用了项目中的 webapp 和 target 目录.
404 表示用户访问的资源不存在. 大概率是 URL 的路径写的不正确.
405 表示对应的 HTTP 请求方法没有实现
往往是 Servlet 代码中抛出异常导致的.
一般是 Tomcat 启动就失败了
初学 Servlet, 遇到的这类问题会非常多. 我们不光要学习 Servlet 代码的基本写法, 也要学习排查错误的 思路.
熟悉 HTTP 协议能够让我们调试问题事半功倍.
4xx 的状态码表示路径不存在, 往往需要检查 URL 是否正确, 和代码中设定的 Context Path 以及 Servlet Path 是否一致.
5xx 的状态码表示服务器出现错误, 往往需要观察页面提示的内容和 Tomcat 自身的日志, 观察是否 存在报错.
出现连接失败往往意味着 Tomcat 没有正确启动, 也需要观察 Tomcat 的自身日志是否有错误提示.
空白页面这种情况则需要我们使用抓包工具来分析 HTTP 请求响应的具体交互过程.
观察日志是调试程序的重要途径. Tomcat 的日志往往很多, 需要同学们耐心阅读, 经常阅读, 熟练 了就能更快速的找到问题了.