@TOC
Servlet
使用 Servlet 输出hello world
① 引入依赖
<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency>② 创建目录结构
当下项目的这些目录是不够的,需要我们在手动创建一些目录和文件夹(名字也要相同,这是规定)
在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>③ 编写 Servlet 代码
public class HelloServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { super.doGet(req, resp); } }需要注意一点:我是把super.doGet(req,resp)给注释掉的,因为我们需要自己的模板,不需要他的
doGet 方法要做的工作,就是根据请求,计算生成响应 …
一个服务器的工作流程,可以分成这样的三个步骤:
1:接收请求并解析
2:根据请求计算响应
3:构造响应数据,并返回给客户端
其中,步骤二就是我们程序员自己要实现的逻辑,第一步和第三步都是 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; @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! resp.getWriter().write("hello world!"); } }此处的代码编写就算完成了…
④ 打包程序
当前我们的代码没有main方法,是不能单独运行的,所以就需要把当前的代码进行打包,然后 部署到
tomcat 上,然后有tomcat来进行调用(我们可以把这个完整的应用程序理解成一个能跑的汽车,Servlet代
码 相当于是汽车上的货箱(自己动不了),tomcat就是车头可以跑(带着货箱跑))
⑤部署程序
把咱们刚刚的 war包 拷贝到 tomcat 的 webapps 目录下
⑥ 验证程序
他返回的内容就是 HTTP响应的 body 部分,这个页面我们是通过 Java 代码生成的,和我们直接创建一个
HTML 是有区别的…HTML 里面的内容是固定死了的,不会改变,而我们通过 Java 代码生成的的内容是可
以根据用户不同的输入,显示不同的结果
我在 Java 代码里加上一段时间戳
在运行:
好了,这里的 7 个步骤就完成了,记住,上诉的 6 个 步骤这只是针对一个新的项目,如果我们项目已经创建
好了,后续修改的时候,前面的 三个 步骤就不必要重复了,直接操作 3-6 就行
简化 4 和 5 步骤 (将 Tomcat 集成到 IDEA 中)
我们发现,每次打包部署都是比较麻烦的,因此我们也是有一些办法来提高上诉流程效率的,我们可以通过第三方工具来简化 5 和 6 的操作
IDEA 虽然本身已经有很多功能了,但是也不可能做到面面俱到!! 因此,IDEA 就提供了一系列的扩展能力,允许第三方来开发一些程序,交给 IDEA 运行,就相当于是对 IDEA 进行了扩展…
我们就可以通过 IDEA 上的插件,直接把 Tomcat 给集成进去,做到一键完成打包部署,smart tomcat 就是 IDEA 的一个插件
需要注意一点:
Tomcat 和 IDEA 是两个独立的程序 ! ! ! Tomcat 不是 IDEA 功能的一部分,在我们后面开发中,主要
还是通过 IDEA 调用 Tomcat 的方式来进行的,可能用的时间长了,有些朋友就对 Tomcat 的印象开始模糊了,觉
得 Tomcat 就是 IDEA 的一部分,这里我们一定要明确,他们是两个独立的程序!!!
安装插件
配置
常见错误问题
出现了 404 状态码
有些人可能会报这样的错误:
他就表示端口被人占用了,说明我们已经启动了一个程序绑定了同一个端口,就会出现这样的错误,我们可以通过这样的命令:netstat -an | grep 8080查看,关闭被占用的端口的进程即可,也有可能你
idea已经启动了一个tomcat了,不能重复用,只要关闭之前的即可
出现他就是说你要访问的资源在服务器上是不存在的,要么就是你请求资源的路径不对
要么就是路径虽然对了,但是服务器没有正确的把资源加载起来…
启动服务器页面显示就是 404
第二种:
这里就是少写了第二级路径 Servlet Path(hello)
第三种:
这里就是少写了第一级路径 Context Path(Servlet_project)
出现 405 状态码
405 表示对应的 HTTP 请求方法没有实现
第一种:
例如没有doGet/doPost方法,我们重启 tomcat服务器
虽然路径找到了,但是在调用doGet方法时,没有就会出现上述现象.
出现 500 状态码
这个往往是 Servlet 代码中抛出异常导致的,并且咱们的代码没有处理,这个异常就会抛到 Tomcat 当中…
像这样的错误对我们来说是很好解决的,因为他下面一般都告诉了原因
出现"无法访问此网站"
这个就一般是 Tomcat 启动失败了
修改代码:
重启 tomcat:我们就可以观察日志有这样的关键信息,这里需要我们仔细观察:
@