文章目录
Servlet实现HelloWorld的显示
使用 servlet 实现在页面输出 Hello World
需要的工具:Tomcat(推荐8版本,更好的适配jdk1.8),Maven中的servlet依赖(这个可以在Maven中央仓库中复制),idea
七大步骤
一、创建Maven项目
什么是Maven呢
Maven是一个 构建工具,针对代码进行了依赖管理,编译,打包,验证,部署等功能
二、引入 Servlet 依赖
写Servlet程序时,就需要Servlet依赖(Servlet的 .jar包),需要把这个 jar 包下载导入到项目中
Maven 自身就支持自动下载并导入依赖,上面有Maven中央仓库的地址
将复制的内容粘贴到 pom.xml中,在project标签中创建一个
dependencies
标签,然后将其放入其中就行,后面需要的第三方库,都可以直接放入dependencies
标签中,若里面内容是红色的,将其刷新一下就可(Maven进行下载依赖)
三、创建目录
main 目录下 下载 webapp,然后在里面创建 WEB-INF目录,然以在里面新建web.xml
固定写法Tomcat按照这样的目录结构进行识别
,web.xml中的内容直接复制即可,固定的
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>
四、编写 Java 代码
在 Java目录底下,创建 Java 类,然后继承 HttpServlet 类,然后重写里面的 doGet等方法
// 注解:相当于指定了 访问path路径(根据这个 path找到对应的类,然后调用对应的 doxxx方法,这个过程就叫 "路由")
// 注意:一定是"/" 开头,如果是 "./" 也找不到的
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// super.doGet(req, resp);
// 这个只是在 tomcat服务器上进行的打印
System.out.println("hello world");
// 这个就相当于把 "hello world"这个字符串写到响应报文的body中,然后浏览器就会显示body内容
resp.getWriter().write("hello world");
}
}
五、打包
一键打包
六、部署
因为 上述我们写的代码没有 main 方法,就需要将其部署到tomcat底下,由Tomcat进行调用
将生成的 war 文件,拷贝到 tomcat目录中的 webapps底下
七、浏览器进行验证
通过 浏览器 构造 GET请求,让 tomcat自动调用 我们写的 doGet方法
更加方便的部署
在 idea 上安装一个 smart Tomcat插件
smart Tomcat的功能,就是能够在 idea 中 调用 tomcat(这时候就不用手动运行 .bat 文件了,idea 中直接运行就能运行 tomcat了,简化了 部署+运行)
smart tomcat 的工作原理,其实和前面的手动拷贝部署,不太一样,此时打开 tomcat 的 webapps 目录,并没有 war 包;只是 smart tomcat 通过其他手段在 tomcat 直接加载了程序,跳过了打包+拷贝,但也起到了部署的效果
上面七大步骤中的部署,会加载 webapps中所有的程序(包括 tomcat的欢迎界面);但是当前这种方法只是加载了当前程序,并没有加载其他的,所以 tomcat 欢迎界面并没有被加载
常见错误
- 404 大概率 URL 写错了,或者 web.xml 有问题
- 405
- method not found GET请求,但没有doGet方法
- super.doGet 没有删掉
- 500 服务器内部错误 代码里面发生异常
- 无法访问此网站 – tomcat 没有正确启动