Servlet

Servlet 是什么
Servlet 是一种实现动态页面的技术. 是一组 Tomcat 提供给程序猿的 API, 帮助程序猿简单高效的开发一个 web app.
Servlet 主要做的工作
允许程序猿注册一个类, 在 Tomcat 收到某个特定的 HTTP 请求的时候, 执行这个类中的一些代码.
*帮助程序猿解析 HTTP 请求, 把 HTTP 请求从一个字符串解析成一HttpRequest 对象.
*帮助程序猿构造 HTTP 响应. 程序猿只要给指定的 HttpResponse 对象填写一些属性字段, Servlet 就会自动的安装 HTTP 协议的方式构造出一个 HTTP 响应字符串, 并通过 Socket 写回给客户端.
简而言之, Servlet 是一组 Tomcat 提供的 API, 让程序猿自己写的代码能很好的和 Tomcat 配合起来, 从而更简单的实现一个 web app. 而不必关注 Socket, HTTP协议格式, 多线程并发等技术细节, 降低了 web app 的开发门槛, 提高了开发效率.
#第一个 Servlet 程序
1. 创建项目

  1. 菜单 -> 文件 -> 新建项目 -> Maven在这里插入图片描述
  2. 引入依赖
    Maven 项目创建完毕后, 会自动生成一个 pom.xml 文件.
    我们需要在 pom.xml 中引入 Servlet API 依赖的 jar 包.
    A. 在中央仓库链接: link 中搜索 “servlet”, 一般第一个结果就是.在这里插入图片描述
    B. 选择版本. 一般我们使用 3.1.0 版本

在这里插入图片描述
Servlet 的版本要和 Tomcat 匹配.
如果我们使用 Tomcat 8.5, 那么就需要使用 Servlet 3.1.0 可以在
链接: link 查询版本对应关系.
C. 把中央仓库中提供的 xml 复制到项目的 pom.xml 中
在这里插入图片描述
修改后的 pom.xml 形如
在这里插入图片描述
D. 创建目录
在这里插入图片描述
这些目录中:
*src 表示源代码所在的目录
*main/java 表示源代码的根目录. 后续创建 .java 文件就放到这个目录中.
*main/resources 表示项目的一些资源文件所在的目录. 此处暂时不关注.
*test/java 表示测试代码的根目录. 此处暂时不关注
这些目录还不够, 我们还需要创建一些新的目录/文件

  1. 创建 web.xml
    然后在 webapp 目录内部创建一个 WEB-INF 目录, 并创建一个 web.xml 文件
    在这里插入图片描述
  2. 编写 web.xml
    在这里插入图片描述
  1. 编写代码
    在这里插入图片描述
    A.创建一个类 HelloServlet , 继承自 HttpServlet
    B.在这个类上方加上 @WebServlet(“/hello”) 注解, 表示 Tomcat 收到的请求中, 路径为 /hello的请求才会调用 HelloServlet 这个类的代码. (这个路径未包含 Context Path)
    C.重写 doGet 方法. doGet 的参数有两个, 分别表示收到的 HTTP 请求 和要构造的 HTTP 响应. 这个方法会在 Tomcat 收到 GET 请求时触发。
    D.HttpServletRequest 表示 HTTP 请求. Tomcat 按照 HTTP 请求的格式把 字符串 格式的请求转成了一个 HttpServletRequest 对象. 后续想获取请求中的信息(方法, url, header, body 等) 都是通过这个对象来获取.
    E.HttpServletResponse 表示 HTTP 响应. 代码中把响应对象构造好(构造响应的状态码, header, body 等)
    F.resp.getWriter() 会获取到一个流对象, 通过这个流对象就可以写入一些数据, 写入的数据会被构造成一个 HTTP 响应的 body 部分, Tomcat 会把整个响应转成字符串, 通过 socket 写回给浏览器.
    这个代码虽然只有寥寥几行, 但是包含的信息量是巨大的.
    我们的代码不是通过 main 方法作为入口了. main 方法已经被包含在 Tomcat 里, 我们写的代码会被 Tomcat 在合适的时机调用起来.
    此时我们写的代码并不是一个完整的程序, 而是 Tomcat 这个程序的一小部分逻辑.
    我们随便写个类都能被 Tomcat 调用嘛? 满足啥样条件才能被调用呢?
    主要满足三个条件:
    a) 创建的类需要继承自 HttpServlet
    b) 这个类需要使用 @WebServlet 注解关联上一个 HTTP 的路径
    c) 这个类需要实现 doXXX 方法.
    当这三个条件都满足之后, Tomcat 就可以找到这个类, 并且在合适的时机进行调用.
  2. 打包程序
    A. 使用 maven 进行打包. 打开 maven 窗口 (一般在 IDEA 右侧就可以看到 Maven 窗口, 如果看不到的话,
    可以通过 菜单 -> View -> Tool Window -> Maven 打开)
    然后展开 Lifecycle , 双击 package 即可进行打包.
    在这里插入图片描述
    如果比较顺利的话, 能够看到 SUCCESS 这样的字样.
    在这里插入图片描述
    打包成功后, 可以看到在 target 目录下, 生成了一个 jar 包.
    在这里插入图片描述
  3. 部署程序
    把 war 包拷贝到 Tomcat 的 webapps 目录下
    启动 Tomcat , Tomcat 就会自动把 war 包解压缩.
  4. 验证程序
    此时通过浏览器访问 http://127.0.0.1:8080/ServletHelloWorld/hello
    在这里插入图片描述
    更方便的部署方式
    我们使用 IDEA 中的 Smart Tomcat 插件来完成这个工作。
    安装 Smart Tomcat 插件
    在这里插入图片描述
    在这里插入图片描述
    配置 Smart Tomcat 插件
    A. 点击右上角的 “Add Configuration”
    在这里插入图片描述
    B. 选择左侧的 “Smart Tomcat”
    在这里插入图片描述
    C. 在 Name 这一栏填写一个名字(可以随便写)
    在 Tomcat Server 这一栏选择 Tomcat 所在的目录. 其他的选项不必做出修改.
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/7e5529d50e574d94bc5c389f2f7e8e80.png在这里插入图片描述
    D. 点击 OK 之后, 右上角变成了
    在这里插入图片描述
    点击绿色的三角号, IDEA 就会自动进行编译, 部署, 启动 Tomcat 的过程.
    在这里插入图片描述
    此时 Tomcat 日志就会输出在 IDEA 的控制台中, 可以看到现在就不再乱码了.
    到这里所有的配置就成功了
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值