文章目录
- 1、基本概念
- 1.1、前言
- 1.2、web应用程序
- 静态web
- 动态web
- 2、web服务器
- 2.1、三大动态网页技术
- 2.2、web服务器
- 3、TomCat
- 启动TomCat
- 配置文件
- 思考?网站是如何进行访问的
- 发布一个web网站
- 4、HTTP
- http请求
- 请求行
- 消息头
- http响应
- 响应体
- 响应状态码
- 5、Maven
- 5.1 Maven项目架构管理工具
- 5.2 配置环境变量
- 5.3 配置阿里云镜像
- 5.4 本地仓库
- 5.5 在IDEA中使用Maven
- 5.6 在IDEA中配置Tomcat
- 5.7 pom文件
- 5.8 Maven仓库的使用
- 6、Servlet
- HelloServlet
1、基本概念
1.1、前言
web开发:
-
web,网页的意思
-
静态web
- html,css
- 提供给所有人看,数据始终不会有任何变化
-
动态web
- 提供给所有人看的数据始终会发生变化
- 技术栈:Servlet/JSP , ASP , PHP
在java中,动态web资源开发的技术统称为javaweb
1.2、web应用程序
web应用程序:可以提供浏览器访问的程序。
- test.html、aaa.html…多个web资源,这些web资源可以被外界访问,对外界提供服务;
- 平时能访问到的任何页面、资源都存在于某一个计算机上;
- 这些统一的web资源会被放在同一个文件夹下,构成一个web应用程序–>Tomcat:服务器
- 一个web应用程序由多部分组成:
- html , css , js
- jsp , servlet
- java程序
- jar包
- 配置文件(Properties)\
web应用程序编写完之后,若想提供给外界访问,需要一个服务器来统一管理;
静态web
- *.htm , *.html,这些都是网页后缀,如果服务器上一直存在这些文件,可以被直接读取
-
静态web缺点:
- web页面无法动态更新,所有用户看到的都是同一个页面
- 让页面动起来(伪动态):轮播图、JS、VBScript
- 无法和数据库交互(数据无法持久化,用户无法交互)
- web页面无法动态更新,所有用户看到的都是同一个页面
动态web
- 页面动态展示,展示的效果因人而异
- 动态web缺点:
- 假如服务器动态web资源出现错误,需要重新编写
后台程序
,重新发布
- 假如服务器动态web资源出现错误,需要重新编写
- 动态web优点:
- web页面可以动态更新
- 可以与数据库交互(数据持久化:注册、商品信息、用户信息…)
2、web服务器
2.1、三大动态网页技术
ASP:
- 微软开发,国内最早的
- 在html中嵌入了VB脚本,ASP+DOM;
- ASP开发中,基本一个页面代码很长,因为要在里面嵌入很多代码,主要使用C#语言,主要使用IIS作为运行平台
- 维护成本高
<%@ Language="VBScript" %>
<html>
<head><title>ASP 示例页面</title>
</head>
<body><h1>欢迎来到我的ASP页面</h1><p>以下是动态生成的内容:</p><!-- 在服务器端生成当前日期和时间 --><p>当前时间是:<%= Now() %></p><!-- 简单的逻辑判断 --><% Dim hourhour = Hour(Now())If hour < 12 Then%><p>早上好!</p><% Else%><p>下午好!</p><% End If %>
</body>
</html
JSP/Servlet:
- sun公司主推的B/S架构(Browser/Server);
- 基于java语言;
- 可以承载三高问题(高并发、高性能、高可用)带来的影响;
- 语法像ASP,ASP—>JSP
PHP:
- php开发速度快,功能强大,跨平台,代码简单
- 但无法承载大访问量;
2.2、web服务器
服务器是一种被动操作,用来处理用户的一些请求和给用户一些响应
IIS
微软的;用来跑一些ASP之类的东西;Windows自带的;
TomCat
轻量级应用服务器,适用于中小型系统和并发不是很多的场景
3、TomCat
轻量级应用服务器,适用于中小型系统和并发不是很多的场景
启动TomCat
打开bin目录下的startup.bat文件即可。
默认是8080端口,直接访问本机的8080端口即可
配置文件
conf目录下存在一个server.xml,是服务器核心配置文件
其中Connector部分可以配置主机的端口
- TomCatt默认端口号为:8080
- mysql:3306
- http:80
- https:443
其中Host部分可以配置主机的名称,存放网站的目录名称
-
默认的主机名为:localhost 等价于 127.0.0.1
-
默认网站应用存放位置:webapps
思考?网站是如何进行访问的
1、输入域名
2、检查本机C:\Windows\System32\drivers\etc\hosts
配置文件下有没有这个域名的映射
如果有:直接返回对应的ip地址,这个地址中有我们访问的web程序,所以可以直接访问
127.0.0.1 localhost
如果没有:去DNS服务器找,找到的话就返回,找不到就返回找不大;
发布一个web网站
将自己写的网站放到服务器指定的web应用文件夹下:
在webapps目录下,复制ROOT目录下的内容(只保留web-INF目录),保存在一个新文件夹中,新建一个index.html文件
访问localhost:8080/Clockwise
即可
网站大致结构:
--webapps: //Tomacat服务器的web目录-ROOT-Clockwise //网站目录名-WEB-INF -classes //java程序-lib //web应用所依赖的jar包-web.xml //网站配置文件-index.html //默认首页-static-css-style.css-js-img-......
4、HTTP
HTTP(超文本传输协议)是一个简单的请求-响应协议,通常运行在tcp上。
- 超文本:图片、音乐、视频、定位、地图…
- 默认是80端口
https:更安全的
- 默认是443端口
http请求
请求行
- 请求方式:Get、Post、HEAD、DELETE、PUT
- Get:请求能携带的参数较少,大小有限制,会在浏览器URL地址栏显示数据内容,不安全但高效
- Post:请求能携带的参数没有限制,大小没有限制,会安全但不高效
- 消息头
消息头
Accept: 告诉浏览器他所支持的数据类型
Accept-Encoding: 支持哪种编码方式
Accept-Language: 告诉浏览器他的语言环境
Cache-Control: 缓存控制
Connection: 告诉浏览器,请求完成是断开还是连接
Host: 主机
http响应
响应体
Accept: 告诉浏览器他所支持的数据类型
Accept-Encoding: 支持哪种编码方式
Accept-Language: 告诉浏览器他的语言环境
Cache-Control: 缓存控制
Connection: 告诉浏览器,请求完成是断开还是连接
Host: 主机
Refresh: 告诉客户端,多久刷新一次
Location: 让网页重新定位
响应状态码
200:请求响应成功3**:请求重定向4**:找不到资源
5*:服务器代码错误502:网关错误
5、Maven
在JavaWeb开发中,需要使用大量的jar包,我们需要手动导入,Maven可以帮我们自动导入和配置jar包。因此诞生了Maven
5.1 Maven项目架构管理工具
用来方便导入jar包,其核心思想是:约定大于配置,Maven会规定好你该如何编写代码
目录结构与Tomcat类似
5.2 配置环境变量
配置如下配置:
- M2_HOME maven目录下的bin目录
- MAVEN_HOME maven目录
- 在系统的Path中配置 %MAVEN_HOME%\bin
测试
5.3 配置阿里云镜像
在conf/setting.xml
中进行配置,在标签内加入下面这段即可
<mirror><id>aliyunmaven</id><mirrorOf>*</mirrorOf><name>阿里云公共仓库</name><url>https://maven.aliyun.com/repository/public</url>
</mirror>
5.4 本地仓库
本地仓库localrepository
在maven目录下新建一个maven-repo
目录
替换掉localRespository原来的部分即可
<localRepository>D:\envir\apache-maven-3.9.9\maven-repo</localRepository>
5.5 在IDEA中使用Maven
新建一个Maven项目,修改Maven路径
这是一个干净的Maven项目
这是一个web应用模板项目
5.6 在IDEA中配置Tomcat
访问网站需要指定一个文件夹的名字
之后点击运行,会自动弹出默认的页面index.jsp
5.7 pom文件
pom.xml是Maven的核心配置文件
<!--Maven的版本和头文件-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><!--配置的GAV--><groupId>org.example</groupId><artifactId>Maven_web</artifactId><packaging>war</packaging><version>1.0-SNAPSHOT</version><name>Maven_web Maven Webapp</name><url>http://maven.apache.org</url><!--依赖--><dependencies><!--具体依赖的jar包配置文件--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>3.8.1</version><scope>test</scope></dependency><!--Maven会帮你导入这个jar包所依赖的其他jar包,例如下面这个,去官网直接复制导入即可--><!-- https://mvnrepository.com/artifact/org.springframework/spring-web --><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>6.2.2</version></dependency></dependencies><!--在build中配置resources,来放置我们资源导出失败的问题--><build><finalName>Maven_web</finalName></build>
</project>
由于maven中约定大于配置,如果无法被导出或生效的问题,解决方案:
<build><resources><resource><directory>src/main/resources</directory><includes><include>**/*.properties</include><include>**/*.xml</include></includes><filtering>true</filtering></resource><resource><directory>src/main/java</directory><includes><include>**/*.properties</include><include>**/*.xml</include></includes><filtering>true</filtering></resource></resources>
</build>
5.8 Maven仓库的使用
地址:https://mvnrepository.com
6、Servlet
- 一门开发动态web的技术
- 在API中提供了一个接口叫:Servlet,如何实现?
- 编写一个类,实现Servlet接口
- 把开发好的java类部署到web服务器中
HelloServlet
Servlet有两个默认的实现类:HttpServlet、
1、新建一个Maven项目,删掉其中的src目录,以后学习就在这里建立模组;
2、关于Maven父子工程的理解:
父项目中会有一个modules包含子项目名称,子项目中会有一个parent
父项目中的jar包,子项目可以直接使用。son extends father
3、Maven环境优化
1.将web.xml修改为最新的
2.将maven结构搭建完整
4、编写一个servlet程序
1.编写一个普通类
2.实现Serlvlet接口,可以直接继承HttpServlet
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 {//由于get post只是请求实现的不同方式,可以相互调用@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {PrintWriter writer=resp.getWriter();//响应流writer.print("hello,Servlet");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {super.doPost(req, resp);}
}
5、编写Servlet的映射
因为我们的java程序,要通过浏览器访问,而浏览器需要连接web服务器,因此我们需要在web服务中注册我们写的servlet,并且需要一个浏览器能够访问的路径
<!--注册Servlet--><servlet><servlet-name>hello</servlet-name><servlet-class>HelloServlet</servlet-class></servlet><!--Servlet的请求路径--><servlet-mapping><servlet-name>hello</servlet-name><url-pattern>hello_world</url-pattern></servlet-mapping>
6、配置Tomcat(和上面一样)
会生成一个target目录