- maven
- 什么是maven
- 创建项目
- 如何使用
- Servlet
- 第一个Servlet程序
- 其他的部署方式
- 安装smart Tomcat
- 配置smart Tomcat
- 访问出错如何解决
- 404
- 405
- 500
- 出现空白页面
- 出现“无法访问此网站”
- servlet的生命周期
maven是Java世界中,非常知名的“工程管理工具/ 构建工具”。
创建项目构建工具:核心功能
1.管理依赖
2.构建/编译
3.打包。把Java代码给构造成一个jar 或war。
jar就是一个特殊的压缩包,类似于rar
搭配idea来使用
- 选择maven的方式来创建项目
2.填写项目的名字和存储路径
view —Tool Windows—maven可以打开如下窗口。
- 创建一个maven项目
- 引入依赖
需要在代码中引入Servlet api ,这个api不是JDK内置的,而是第三方(Tomcat提供的)
https://mvnrepository.com/
JDK ,Tomcat ,Servlet的版本要配套
如果版本不配套,可能会出一些问题
javax.servlet javax.servlet-api 3.1.0 provided
注:在引入依赖的时候,一定不能忘记加上 最外层的标签
- 创建目录结构
虽然当下maven帮我们创建了一些目录,但是还不够,还不足以支撑我们写一个Servlet项目。
因此需要手动的在创建一些目录和文件出来。
(1)在main目录下,右击,点击directory。
注:是webapp,不是webapps
(2)在webapp目录下,右击,new directory,命名为
WEB-INF 。
(3)在WEB-INF下,new file ,命名为web.xml
总结:
千万不能把目录的名字和位置搞错
(4)编写web.xml
Archetype Created Web Application
- 编写Servlet代码
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 {
//这行代码要注释掉,不能调用父类的doget
//super.doGet(req, resp);
//这个是让服务器在自己的控制台打印
System.out.println("hello world");
//在页面上也打印 hello world,把hello world字符串,放到http响应的body中,浏览器就会把body的内容显示到页面上
resp.getWriter().write("hello world");
}
}
- 打包
当前的代码,是不能单独运行的(没有main方法)
需要把当前代码打包,然后部署到Tomcat上,由Tomcat来进行调用。
准备工作:修改pom.xm
jar和 war都是Java发布程序的压缩包格式。
war算是给Tomcat专门搞的,这里不光互包含一些.class ,还可以包含一些配置文件,以及依赖的第三方jar,还有html,css,js…
-
部署
把war包拷贝到Tomcat的webapps目录下。
然后启动Tomcat -
验证程序
执行结果:
现在这个页面通过Java代码生成了,但是和直接创建一个HTML,里面写个hello world 有啥区别?
通过Java代码生成的内容是可变的,根据用户不同的输入,可以得到不同的结果。
直接创建有个HTML,里面写个hello world,页面的内容是固定的,是静态的,是不变的。
上述7个步骤,是针对一个新的项目。
项目创建好之后,后续修改代码,前三个步骤就不必重复了,直接从4-7进行操作即可。
重新部署的时候,不一定要重启Tomcat。
其他的部署方式修改代码之后的执行效果:
还有一些办法,来提高上述流程的效率。
可以通过第三方的工具,来简化5和6的操作,毕竟每次修改代码,都需要重新打包,重新部署。
使用idea上的插件。叫做smart Tomcat。
在一个项目中,首次使用,需要先简单配置,后续就不必再配置了。
要访问的资源在服务器上不存在。
(1)要请求的资源路径不存在
(2)路径虽然存在,但是服务器没有正确加载。
典型错误:
(1)少写了Context-Path
(2)少写了Servlet Path
(3)写的路径不匹配
(4)web.xml写错
当web.xml有问题的时候,Tomcat是不能正确加载到webapp的。
Tomcat发现这个目录中存在了web.xml且正确,Tomcat才能加载这个webapp
405 表示对应的 HTTP 请求方法没有实现。
(1)方法写的是doPost
啥时候浏览器发送GET请求?
- 直接在地址栏,输入URL
- 通过a标签跳转
- 通过img/link/script
- 通过form表单,method指定为GET
- 通过ajax,type指定为GET
啥时候浏览器发送Post请求?
- 通过form表单,method指定为Post
- 通过ajax,type指定为Post
(2)没有注释掉super
500一般500就意味着服务器代码里抛出异常了,并且咱们的代码没处理,异常抛到Tomcat这里了。
出现空白页面如果代码中出现异常,可以通过catch来捕获到,如果catch没捕获到(类型不匹配,压根没catch),异常就会沿着调用栈,向上传递。
一般是Tomcat没有正确启动(Tomcat端口被占用,启动失败)
servlet的生命周期(1)init:初始化阶段,对象创建好了之后,就会执行到。用户可以重写这个方法,来执行一些初始化逻辑。
(2)service:在处理请求阶段来调用,每次来个请求都要调用一次service
(3)destroy:退出主循环,Tomcat结束之前会调用,用来释放资源。



