- 1.servlet是什么?
- 2.第一个servlet项目
- 2.1 创建一个Maven项目(Servlet是基于Maven实现的)
- 2.2 添加Servlet框架(maven项目->servlet项目)
- 2.3创建servlet的目录
- 2.4编写代码
- 2.5打包项目
- 2.6发布项目到Tomcat(部署程序)
- 2.7启动Tomcat,访问网站
- 更方便的运行javaWeb项目
- 配置Smart Tomcat 插件
- 3.访问出错
- 出现404
- 出现405
- 出现500
- 出现空白页面
- 出现无法访问此网站
- 小结
1.Servlet 是⼀款⽤来开发 Java Web 的框架。它是基于 Http 协议交换并且运⾏在 Tomcat ⾥的框架技术。
2.servlet主要工作:
2.第一个servlet项目(1)用户的url到程序的映射。
(2)得到Request请求中所有数据。
(3)将服务器端处理的结果返回给用户。
创建项目:
使用IDEA创建一个Maven项目。
菜单 -> ⽂件 -> 新建项⽬ -> Maven:
选择项⽬要存放的⽬录:
创建好以后框架结构:
Maven 项⽬创建完毕后, 会⾃动⽣成⼀个 pom.xml ⽂件. 我们需要在 pom.xml 中引⼊ Servlet API 依赖的 jar 包.
在中央仓库:https://mvnrepository.com/
一般选择3.1.0版本
选择的servlet版本要和tomcat匹配:
Servlet 的版本要和 Tomcat 匹配. 如果我们使用Tomcat 8.5, 那么就需要使⽤ Servlet 3.1.0
2.3创建servlet的目录groupId: 表示组织名称
artifactId: 表示项⽬名称
version: 表示版本号
创建java源代码:
在java目录中创建一个类HelloServlet:
(a)继承HttpServlet
(b)设置url映射
©重写doGet/doPost
HelloServlet.java:
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")//ip:port/hello
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//设置返回类型
resp.setContentType("text/html");
//返回的数据
resp.getWriter().println("Hello,Servlet");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doPost(req, resp);
}
}
2.5打包项目
点击package:
1.下载smart Tomcat插件:
菜单 -> ⽂件 -> Settings:
选择 Plugins, 选择 Marketplace, 搜索 “tomcat”, 点击 “Install”:
注意: 安装过程必须要联⽹.
安装成功之后,重启idea:
点击右上角的"Add Configuration":
选择左侧的"Smart Tomcat":
在Name这一栏写一个名字(建议写tomcat版本号),在 Tomcat Server 这⼀栏选择 Tomcat 所在的⽬录. 其他的选项不必做出修改.
其中 Context Path 默认填写的值是项目名称. 这会影响到后面的访问页面。
点击OK之后,右上角如下所示:
点击绿色的三角号,IDEA就会自动编译,部署,启动tomact:
在浏览器执行:
使用Smart Tomcat 部署的时候,我们发现Tomcat的webapps内部并没有被拷贝一个war包,也没有看到解压缩的内容。Smart Tomcat 相当于是在 Tomcat 启动的时候直接引⽤了项⽬中的 webapp 和 target ⽬录。
查看请求:
404表示用户访问的资源不存在,大多处情况是URL的路径写的不正确。
1.错误实例1:少写Context Path
通过/hello访问服务器
2.错误实例2:少写了Servlet Path
通过/ServletHelloWord访问服务器
3.错误实例3:Servlet Path写的和URL不匹配
修改代码后要重启tomcat
4.错误实例4:web.xml写错了
清楚web.xml中内容:
重启tomcat服务器,通过浏览器访问URL,可以看到:
405表示对应的HTTP请求方法没有实现。
1.错误示例:没有实现doGet方法
重启Tomcat服务器,在浏览器中访问,可以看到:
出现500在浏览器地址栏直接输⼊ URL , 会发送⼀个 HTTP GET 请求. 此时就会根据 /ServletHelloWorld/hello 这个路径找到 HelloServlet 这个类. 并且尝试调⽤ HelloServlet 的 doGet ⽅法. 但是如果没有实doGet ⽅法, 就会出现上述现象.
往往是Servlet代码中抛出异常导致的。
错误示例:
修改代码:
重启Tomcat服务器,访问页面:
在页面上有具体的异常调用栈,空指针异常。
修改代码,去掉resp.getWritter().writer()操作:
重启服务器,可以看到一个空白页面:
抓包可以看到,响应body中的内容就是空数据:
一般是Tomcat启动失败了。
错误示例:Servlet Path写错了
Tomcat启动的时候已经提示了相关的错误。
在网页看到的结果:
● 4xx 的状态码表示路径不存在, 往往需要检查 URL 是否正确, 和代码中设定的 Context Path 以及 Servlet Path 是否⼀致.
●5xx 的状态码表示服务器出现错误, 往往需要观察⻚⾯提示的内容和 Tomcat ⾃身的⽇志, 观察是否存 在报错.
●出现连接失败往往意味着 Tomcat 没有正确启动, 也需要观察 Tomcat 的⾃身⽇志是否有错误提示.
● 空⽩⻚⾯这种情况则需要我们使⽤抓包⼯具来分析 HTTP 请求响应的具体交互过程.



