目录
1.静态页面 vs动态页面
静态页面 直接拷贝到webapps就行
动态页面:基于servlet api进行代码实现了
Servlet 是一组 Tomcat 提供的 API, 让程序猿自己写的代码能很好的和 Tomcat 配合起来, 从
而更简单的实现一个 web app.
写一个Servlet的 hello world(和jdbc差不多,都是固定的套路)
7个步骤:
需要创建的是一个meven项目
maven实际上就是一个构造工具
包括不限于,编译,打包,部署功能....
实际上程序都有很多模块,模块之前都有相互依赖关系,你想编译运行a,就得先b,想b就c,一个一个写就比较麻烦
构建工具就是解决这个问题,使我们在开发比较复杂的项目的时候,也是可以比较方便进行打包
和编译工作的
咱们使用mavem主要就是借助 maven 进行编译,打包,管理依赖
Servlet 不是 java 标准库自带的,要想使用, 就需要额外的下载安装,并引入到项目中,maven的一个核心功能,就是能够自动的管理依赖,就会把咱们使用的库里依赖的东西,自动从中央仓库里下载下来
中央仓库地址https://mvnrepository.com
搜索Servlet并选择maven
复制下列代码引入到idea中,并加入depencies
复制完成后,代码爆红,这时候要点击maven自动下载依赖
(maven的一个核心功能,就是能够自动的管理依赖)
虽然maven已经帮我们创建出一些目录了,但是还不够,咱们需要搞的是一个符合tomcat要求的目录
注意这里的位置,名字层次都必须严格一致,在web.xml写如下代码
然后 web.xml上写点东西(直接复制粘贴这段代码)
- 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 Applicationdisplay-name>
- web-app>
- @WebServlet("/hello")
- public class HelloServlet extends HttpServlet {
- @Override
- protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- // super.doGet(req, resp);
- System.out.println("hello");
- resp.getWriter().write("hello");
- }
- }
doget表示Tomcat在收到某些get请求时,调用doget方法(根据请求计算响应),俩个参数分别是请求和响应,响应是输出型参数,再进一步tomcat就把resp通过doget生成的对象,转换成一个http请求报文(把响应结果返回给客户端)
把写好的代码通过Servlet打包 + 部署,在Tomcat上运行(Servlet比作火车车节,箱,Tomcat就是火车头带动跑,需要格式一致)
在pom.xml中输入下列代码
- <packaging>warpackaging>
- <build>
- <finalName>servletHelloWorldfinalName>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.pluginsgroupId>
- <artifactId>maven-war-pluginartifactId>
- <version>3.3.1version>
- plugin>
- plugins>
- build>
把war包 拷贝到tomcat的webapp中
红色就是拷贝过来的程序,在经过tmocat部署生成servletHelloWorld文件
通过浏览器构造一个HTTP请求来验证
获取到 url 中的第一级路径,servletHelloWorld,也就是我们new project内容,确定一个webapp
TomCat找到servletHelloWorld 目录之后,就会加载里面的类,尤其是重点去识别 @WebServlet注解修饰的类
就会取出 url的第二级路径 /hello 这个也叫做Servlet path
然后就在@WebServlet 注解中,找到名字为/hello的类,找到类之后,创建实例(只会创造一次,如果之前创建过了,就会复用上次的实例)
再解析出Http请求方法get,取出get之后,就可以根据http方法来调用对应的servlet中的方法
get请求使用doget方法
post请求使用 dopost方法
put请求调用doput方法
delete使用dodelete方法
......
同时Tomcat还会构造出HttpServletRequest对象和HttpServletResponse对象