Javaweb
概念
动态web资源开发的技术统称为JavaWeb
web应用程序
web应用程序:可以提供浏览器访问的程序
web应用程序若想提供给外部访问:需要一个服务器统一管理Tomcat;
web应用程序组成:
- html,CSS,js
- jsp/servlet
- Java程序
- jar包
- 配置文件(Properties)
动态web
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VNBQq8kY-1638718858450)(JavaWeb概念.assets/image-20211203235107788.png)]
开发技术
ASP:微软,国内最早流行; php:
- PHP开发速度很快,功能很强大,跨平台,代码很简单(70%,WP)
- 无法承载大访问量的情况(局限性)
JSP/Servlet:
- sun公司主推的B/S架构;
- 基于Java语言的(所有的大公司,或者一些开源的组件,都是用Java写的);
- 可以承载三高问题带来的影响;(高并发,高可用,高并行)
- 语法像ASP;
web服务器
服务器是一种被动的操作,用来处理用户的一些请求和给用户一些响应信息;
IIS:微软的,运行ASP,Windows自带; tomcat:Apache软件基金,java编写的,轻量级,初学web最佳。运行JSP页面和Servlet。
Tomcat
- 安装
- 了解配置文件及目录结构
- 这个东西的作用
1、目录结构
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QBZovCh2-1638718858451)(JavaWeb概念.assets/image-20211204000343316.png)]
2、启动和配置
启动访问:http://localhost:8080/
配置:server.xml文件
配置端口号
- tomcat默认端口:8080
- mysql:3306
- http:80
- https:443
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
主机名称
- 默认主机名:localhost->127.0.0.1
- 默认网站应用存放的位置:webapps
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
3、发布一个web网站
- 将自己写的网站,放到Tomcat服务器中指定的web应用文件夹(webapps)下,就可以访问了。
网站是如何进行访问的
-
输入一个域名;回车 -
检查本机的C:\Windows\System32\drivers\etc\hosts配置文件下有没有这个域名映射;
-
有:直接返回对应的ip地址,这个地址中,有我们需要访问的web程序,可以直接访问 127.0.0.1 localhost
-
没有:去DNS服务器找,找到的化就返回,找不到就返回找不到
localhost和127.0.0.1的区别
localhot(local)是不经网卡传输!这点很重要,它不受网络防火墙和网卡相关的的限制。
127.0.0.1是通过网卡传输,依赖网卡,并受到网络防火墙和网卡相关的限制。
HTTP
1、Http是什么
HTTP(超文本传输协议)一个简单的请求-响应协议,它通常运行在TCP上
- 文本:html,字符串…
- 超文本:图片,音乐,视频,定位,地图…
- 80
Https:安全的
2、http两个时代
http1.0:HTTP/1.0客户端可以与web服务器连接后,只能获得一个web资源,断开连接;
http2.0:HTTP/1.1客户端可以与web服务器连接后,可以获取多个web资源;
3、Http请求
1、请求行
- 请求方式:Get,Post,HEAD,DELETE,PUT,TRCT…
2、消息头
百度例子:
General概况
Request URL: https://www.baidu.com/ 请求地址
Request Method: GET 请求方法get/post
Status Code: 200 OK 状态码
Remote Address: 14.215.177.39:443 远程地址
Referrer Policy: origin-when-cross-origin
Request Headers请求头
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*
4、http响应
ResponseHeaders响应头
Cache-Control: private 缓存控制
Connection: keep-alive 连接
Content-Encoding: gzip 编码
Content-Type: text/html;charset=utf-8 类型
Date: Fri, 03 Dec 2021 16:51:09 GMT
Expires: Fri, 03 Dec 2021 16:51:09 GMT
Server: BWS/1.1
Set-Cookie: BDSVRTM=303; path=/
Set-Cookie: BD_HOME=1; path=/
Set-Cookie: H_PS_PSSID=35359_35105_31253_34584_34504_35245_34578_34606_35325_26350_35301; path=/; domain=.baidu.com
Strict-Transport-Security: max-age=172800
Traceid: 1638550269025443994618078961669056469914
Transfer-Encoding: chunked
X-Frame-Options: sameorigin
X-Ua-Compatible: IE=Edge,chrome=1
响应体
Accept:text/html 告诉浏览器,它所支持的数据类型
Accept-Encoding: 告诉浏览器,它支持的编码格式:GBK utf-8 GB2312 io是859-1
Accept-Language: 告诉浏览器,它的语言环境
Cache-Control: 缓存控制
Connection: 告诉浏览器,请求完成是断开还是保持连接
Host: 主机
Refresh: 告诉客户端,多久刷新一次
Location: 让网页重新定位
5、响应状态码
状态码 | 含义 |
---|
200 | 请求响应成功 | 3xx | 请求重定向 | 4xx | 找不到资源 | 5xx | 服务器代码错误 |
Servlet
简介
实现Servlet
1、环境
- 新建一个maven-web项目
- 添加servlet、jsp依赖
- web.xml为最新
- 目录搭建
2、编写一个Servlet程序
-
编写一个普通类 -
实现Servlet接口,我们继承HttpServlet,重写get、post方法 package com.zui.servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
PrintWriter writer = resp.getWriter();
writer.print("holle servlet");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req,resp);
}
}
-
编写Servlet的映射 为什么需要映射:我们写的是Java程序,但是要通过浏览器访问,而浏览器需要连接web服务器,所以我们需要再web服务器中注册我们写的Servlet,还需要给一个浏览器能够访问的路径; <?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0"
metadata-complete="true">
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>com.zui.servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>
-
配置Tomcat [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BOgjVxPD-1638718858452)(JavaWeb概念.assets/image-20211205182311067.png)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xJz3qwBP-1638718858452)(JavaWeb概念.assets/image-20211205201601654.png)] -
启动
Servlet原理
Servlet由web服务器调用的
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Fk9mVo6M-1638718858453)(JavaWeb概念.assets/image-20211205221509188.png)]
mapping
- 一个Servlet可以对应一个映射路径
- 一个Servlet可以对应多个映射路径
优先级:固有的路径优先级最高,如果找不到走默认的请求
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>*.abc</url-pattern>
</servlet-mapping>
|