静态Web:
. 提供给所有人看数据不会发生变化!
. HTML,CSS
动态Web:
.有数据交互,登录账号密码,网站访问人数等
. 技术栈:Servlet/JSP,ASP,PHP
在Java中,动态web资源开发的技术统称为JavaWeb;
Web 应用程序:可以提供浏览器访问的程序;
这个统一的web资源会被放在同一个文件夹下,Web 应用程序 —> Tomcat:服务器
一个 Web 应用由多部分组成(静态Web、动态Web)
HTML,CSS,JavaScript
JSP,Servlet
Java 程序
jar 包
配置文件 (Properties)
Web 应用程序编写完毕后,若想提供给外界访问:需要一个服务器来统一管理;
浏览器发送 HTTP 请求,服务器 Tomcat 接收请求,Servlet 容器从磁盘加载 Servlet 程序处理请求 request ,处理结束返回 response。
PHP:
作为开发速度很快,功能很强大,跨平台
无法承载大访问量的情况
JSP/Servlet:
基于 Java 语言
Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目。
Tomcat 技术先进、性能稳定,而且免费。
安装的地址:
http://tomcat.apache.org/
## tomcat的启动和配置
启动和关闭tomcat
注意:
1.Java 环境变量没有配置导致闪退。
2.乱码问题,可在配置文件中配置。
servlet的核心配置配置如下:
可以配置启动的端口号
tomcat的默认端口号为:8080
mysql:3306
http:80
https:443
<Connector port="8081" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
可配置主机名称
默认的主机名为:localhost->127.0.0.1
默认网站应用存放的位置为:webapps
<Host name="www.zty.com" appBase="webapps"
unpackWARs="true" autoDeploy="true">
往年面试题:请你谈谈网站是如何进行访问的!
在浏览器输入一个域名,回车;
本机查看 C:\Windows\System32\drivers\etc\hosts 配置文件是否有相应域名的映射。
case1: 若有,则直接映射到对应的 IP 地址,进行访问。
case2: 若无,则去 DNS 服务器上查找对应的 IP ,找到就返回相应的 IP,找不到就不返回。
网站程序的结构:
--webapps :Tomcat服务器的web目录
-ROOT
-study :网站的目录名
- WEB-INF
-classes : java程序
-lib:web应用所依赖的jar包
-web.xml :网站配置文件
- index.html 默认的首页
- static
-css
-style.css
-js
-img
-.....
HTTP(hypertext transport protocol) 超文本传输协议。
文本 :HTML,字符串…
超文本:图片,音乐,视频,定位,地图…
80 端口
HTTPS(Hyper Text Transfer Protocol over SecureSocket Layer):是以安全为目标的 HTTP 通道,在 HTTP 的基础上通过传输加密和身份认证保证了传输过程的安全性。HTTPS 在HTTP 的基础下加入SSL 层,HTTPS 的安全基础是 SSL。
443 端口
HTTP 1.0:
HTTP/1.0:客户端与 Web 服务器连接后,只能获得一个Wen 资源,然后就断开连接,加入某个页面有多个图片资源需要加载,那么需要连接多次,影响服务器和客户端的性能。
HTTP 2.0:
HTTP/1.1:客户端可以与web服务器连接后,可以获得多个web资源。
客户端 -> 发送请求(Request)->服务器
Request URL:https://www.baidu.com/ 请求地址
Request Method:GET get方法/post方法
Status Code:200 OK 状态码:200
Remote(远程) Address:14.215.177.39:443
1234
Accept:text/html
Accept-Encoding:gzip, deflate, br
Accept-Language:zh-CN,zh;q=0.9 语言
Cache-Control:max-age=0
Connection:keep-alive
请求行
请求行中的请求方式:GET
请求方式:Get,Post,HEAD,DELETE,PUT,TRACT…
get:请求能够携带的参数比较少,大小有限制,会在浏览器的URL地址栏显示数据内容,不安全,但高效
post:请求能够携带的参数没有限制,大小没有限制,不会在浏览器的URL地址栏显示数据内容,安全,但不高效。
消息头:
Accept:告诉浏览器,它所支持的数据类型
Accept-Encoding:支持哪种编码格式 GBK UTF-8 GB2312 ISO8859-1
Accept-Language:告诉浏览器,它的语言环境
Cache-Control:缓存控制
Connection:告诉浏览器,请求完成是断开还是保持连接
HOST:主机..../.
服务器 -> 响应(response) ->客户端
Cache-Control:private 缓存控制
Connection:Keep-Alive 连接
Content-Encoding:gzip 编码
Content-Type:text/html 类型
响应体
Accept:告诉浏览器,它所支持的数据类型
Accept-Encoding:支持哪种编码格式 GBK UTF-8 GB2312 ISO8859-1
Accept-Language:告诉浏览器,它的语言环境
Cache-Control:缓存控制
Connection:告诉浏览器,请求完成是断开还是保持连接
HOST:主机..../.
Refresh:告诉客户端,多久刷新一次;
Location:让网页重新定位;
响应状态码
200:请求响应成功 200
3xx:请求重定向
重定向:你重新到我给你新位置去;
4xx:找不到资源 404
5xx:服务器代码错误 500 502:网关错误
注意:
常见的面试题:
当你的浏览器中地址栏输入地址并回车的一瞬间到页面能够展示回来,经历了什么?
在 JavaWeb 开发中,需要使用大量的 jar 包,我们手动去导入;
如何能够让一个东西自动帮我导入和配置这个jar包。
由此,Maven诞生了!
Maven 的核心思想:约定大于配置
有约束,不要去违反。
Maven 会规定好你该如何去编写我们的 Java 代码,必须要按照这个规范来;
1、启动 IDEA
2、 创建一个 MavenWeb 项目
3、等待项目初始化完毕
4、观察 maven 仓库中多了什么东西?
5、 IDEA 中的 Maven 设置
注意:IDEA 项目创建成功后,看一眼 Maven 的配置
在IDEA中配置tomcat
Maven 由于他的约定大于配置,我们之后可以能遇到我们写的配置文件,无法被导出或者生效的问题,解决方案:
<!--在build中配置resources,来防止我们资源导出失败的问题--><build>
<resources>
<resource>
<directory>src/main/resources</directory> <includes> <include>**/*.properties **/ *.xml</include>
</includes> <filtering>true</filtering>
</resource>
<resource> <directory>src/main/java</directory> <includes>
<include>**/*.properties
**/ *.xml</include>
</includes> <filtering>true</filtering>
</resource> </resources>
</build>
Maven 3.6.2
解决方法:降级为 3.6.1
Tomcat 闪退
IDEA中每次都要重复配置Maven
在IDEA中的全局默认配置中去配置
Maven 默认 Web 项目中的 web.xml 版本问题
替换为 webapp4.0 版本和 Tomcat 一致
<?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">
</web-app>
1234567891011
Servlet 就是 Sun 公司开发动态 Web 的一门技术
Sun 在这些 API (Application Programming Interface,应用程序接口)中提供一个接口叫做:Servlet,如果你想开发一个Servlet程序,只需要完成两个小步骤:
编写一个类,实现Servlet接口。
把开发好的Java类部署到web服务器中。
把实现了 Servlet 接口的 Java 程序叫做,Servlet
Serlvet 接口 Sun 公司有两个默认的实现类:HttpServlet,GenericServlet
构建一个普通的Maven项目,删掉里面的src目录,以后我们的学习就在这个项目里面建立Moudel;这个空的工程就是Maven主工程(建一个WebApp Maven项目,勾选模板);
关于Maven父子工程的理解:
父项目中会有:
<modules>
<module>servlet-01</module>
</modules>
子项目会有:
<parent>
<artifactId>javaweb-02-servlet</artifactId>
<groupId>com.lt</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
父项目的java子项目也可以用
son extends father
修改web.xml为最新的
<?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">
</web-app>
编写一个Servlet程序
编写一个不同的类 继承HttpServelt
public class HelloServlet extends HttpServlet {
//由于get或者post只是请求实现的方式不同,可以相互调用,业务逻辑都一样!
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//ServletOutputStream outputStream = response.getOutputStream();
PrintWriter writer = response.getWriter();//响应流
writer.println("Hello Servlet");
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
编写Servlet映射:
为什么需要映射:我们写的是 Java 程序,但是要通过浏览器访问,而浏览器需要连接 Web 服务器,所以我们需要在Web 服务中注册我们写的 Servlet,还需给他一个浏览器能够访问的路径;
<!--注册Servlet-->
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>com.lt.servlet.HelloServlet</servlet-class>
</servlet>
<!--Servlet的请求路径-->
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
Servlet 是由 Web 服务器调用,Web 服务器在收到浏览器请求之后,
一个Servlet可以指定一个映射路径
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
<