WEB09Servlet&HTTP

WEB后端开发

Web服务器--Tomcat

web服务器

Web 服务器

  • Web服务器是一类软件程序,将开发好的前端或者后端代码,运行在此类软件中,就可以供人访问。

Tomcat

  • 概念: Tomcat是Apache 软件基金会一个核心项目,是一个开源免费的轻量级Web服务器,支持Servlet等少量JavaEE规范

  • JavaEE:Java Enterprise Edition,Java企业版,指Java企业级开发的技术规范总和

  • Tomcat 也被称为Web容器、Servlet容器,Servlet程序需要依赖于Tomcat才能运行

  • 官网:Apache Tomcat® - Welcome!

Tomcat安装

  • 下载:官网下载,地址 Apache Tomcat® - Apache Tomcat 9 Software Downloads

  • 安装:绿色版,直接解压即可

  • 卸载:直接删除目录即可

  • 启动:双击:bin\startup.bat

    1. 控制台中文乱码:修改conf/ logging.properties

  • 访问: 浏览器输入http://localhost:8080访问

  • 关闭:

    1. 直接×掉运行窗口:强制关闭

    2. bin\shutdown.bat:正常关闭

    3. Ctrl+C:正常关闭

  • Tomcat-启动报错

  • 常见问题

    1. 启动窗口一闪而过 检查JAVA_HOME环境变量是否正确配置 如果电脑环境变量中含有两个以 Catalina-* 开头的变量,也需要删掉

    2. 启动过程中报出如下图的错误(端口号冲突) 方法1:找到正在运行的占用端口的程序,将其关闭掉 方法2:修改即将程序的端口,不在使用被占的端口号

项目部署

Tomcat-项目部署

  1. 在本地磁盘创建一个目录,作为项目开发目录

  2. 在目录下创建一个index.html作为项目文件

  3. 在index.html中编写内容

  4. 将整个项目目录复制到Tomcat的webapps目录下

  5. 启动tomcat软件

  6. 通过浏览器访问项目

IDEA开发项目部署到Tomcat

  1. 在Idea中创建一个web版本的maven模块

  2. 在模块中进行代码开发

  3. 将开发好的项目部署到Tomcat

  4. 在Idea中启动Tomcat进行测试

HTTP协议

概述

HTTP

  • 概念:Hyper Text Transfer Protocol,超文本传输协议,规定了浏览器和服务器之间传输数据的格式。

  • 特点:

    1. 基于TCP协议:面向连接,安全

    2. 基于请求-响应模型的:一次请求对应一次响应

    3. HTTP协议是无状态的协议:每次请求-响应都是独立的,不相互记录数据,目的是为提高效率

    4. 无论是请求还是响应都包含三部分:行、头、体

请求

HTTP-请求数据格式

  • 请求方式-GET: 请求参数在请求行中,没有请求体,如:/brand/findAll?name=OPPO&status=1。GET请求大小是有限制的。

  • 请求方式-POST: 请求参数在请求体中,POST请求大小是没有限制的。

响应

请求响应介绍-HTTP响应格式

Servlet

Servlet

  • Servlet 是sun公司提供一套规范( 接口 ),用来定义我们的代码怎么写才能被tomcat识别

  • 本质:接口,一个类想要被tomcat正确识别,那么这个类就必须直接或间接的实现Servlet接口

  • 任务:接收请求,处理请求,返回响应。

Servlet 快速入门

  • 需求:编写一个Servlet,接收浏览器请求,在服务器控制台打印出访问时间的同时将时间写回浏览器。

    1. 使用目前的web项目,导入 Servlet依赖

    2. 定义一个TimeServlet类,继承HttpServlet

    3. 在类上配置一个访问路径/timeServlet

    4. 重写service方法,在方法中打印当前时间,并将时间返回给浏览器

    5. 启动tomcat,浏览器输入URL访问改Servlet

常见报错

  1. The servlets named [x] and [x] are bothmapped to the url-pattern [/x] which is not permitted mapped to the url-pattern [/annoServlet] which is not permitted 两个servlet的路径重复

  2. Invalid url-pattern [x] in servlet mapping servlet路径不是/开头的

请求和响应

Tomcat执行流程

tomcat执行流程

获取请求行、头、体

Request 获取请求数据

  • 请求数据分为3部分:

    1. 请求行 GET /requestLine?username=zhangsan&password=123 HTTP/1.1

      • String getMethod():获取请求方式: GET

      • StringBuffer getRequestURL(): 获取URL(统一资源定位符):http://localhost:8080/requestLine

      • String getRequestURI():获取URI(统一资源标识符): /requestLine

      • String getQueryString():获取请求参数(GET方式): username=zhangsan&password=123

    2. 请求头 User-Agent: Mozilla/5.0 Chrome/91.0.4472.106

      • String getHeader(String name):根据请求头名称,获取值

    3. 请求参数 username=superbaby&password=123&hobby=smoke&hobby=drink

      • String getParameter(String name):根据名称获取参数值(单个值)

      • String[] getParameterValues(String name) :根据名称获取参数值(数组)

      • Map<String, String[ ]> getParameterMap():获取所有参数Map集合

Request 请求参数中文乱码处理

  • 在请求参数传递过程中,会出现中文乱码的问题

    1. get请求: tomcat8及以上的版本已经解决

    2. post请求:需要手动解决 乱码原因:浏览器编码(UTF-8) ------ 服务器解码(ISO-8859-1) 解决方案:修改服务器的解码方式为UTF-8即可 代码: request.setCharacterEncoding("UTF-8");

设置响应行、头、体

Response 设置响应数据功能介绍

  • 响应数据分为3部分:

    1. 响应行 HTTP/1.1 200 OK

      • void setStatus(int sc) :设置响应状态码

    2. 响应头 Content-Type:text/html

      • void setHeader(String name, String value) :设置响应头键值对

    3. 响应体 <html><head>head><body></body></html>

      • PrintWriter getWriter() 获取输出流

      • writer.write("aaa"); 输出内容

  • 该流不需要关闭,随着响应结束,response对象销毁,由服务器关闭 中文数据乱码:原因通过Response获取的字符输出流默认编码:ISO-8859-1

  • 22
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值