1、基本概念
web开发:
- web,网页的意思
- 静态web
- html,css
- 提供给所有人看的数据始终不会发生变化
- 动态web
- 淘宝,几乎所有的网站
- 提供给所有人看的数据始终会发生变化,每个人在不同的时间,不同的地点看见的信息各不相同
- 技术栈:Servlet/JSP,ASP
1.2、web应用程序
web应用程序:可以提供浏览器访问的程序;
-
a.html,b.html 多个web资源可以被外界访问,对外界提供服务;
-
访问的任何一个页面或者资源,都存在于这个世界的某一台计算机上
-
URL
-
这个同一的web资源会被放在同一个文件夹下,web应用程序--》Tomcat服务器
-
一个web应用由多个部分组成(静态web、动态web)
- html、css、js
- java程序
- jar包
- 配置文件(Properties)
web应用程序编写完毕后,若想给外界访问:需要一个服务器统一管理;
1.3静态web
- *.html, *.htm这些都是网页的后缀,如果服务器上一直存在这些东西,我们就可以直接进行读取。通络。
- 静态web存在的缺点
- web页面无法动态更新,所有用户看到的都是同一个页面
- 轮播图、点击特效:伪动态
- javaScript(实际开发过程中用的最多)
- VBScript
- 它无法和数据库交互(数据无法持久化,用户无法交互)
- web页面无法动态更新,所有用户看到的都是同一个页面
1.4、动态web
页面会动态展示:”web的页面展示效果因人而异“;
缺点:
- 加入服务器的动态web资源出现错误,我们需要重新编写我们的后台程序,重新发布;
- 停机维护
优点:
- web页面可以动态更新,所有用户看到的都不是同一个页面
- 它可以与数据库交互(数据持久化:商品信息、用户信息......)
2、web服务器
2.1技术
- PHP
- ASP
- JSP/Severlet
- jsp即在html代码中嵌入java代码
2.2、web服务器
-
IIS
-
Tomacat
Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为比较流行的Web 应用服务器。
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。
诀窍是,当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。
3、Tomcat
3.1、Tomcat启动
文件夹作用
启动关闭Tomcat(bin路径下starup.bat)
注意:Tomcat安装在D:\桌面\自己的材料\自己的各类文件\专业课\web实验\apache-tomcat-9.0.56-windows-x64\apache-tomcat-9.0.56\bin
3.2配置
- 本机Tomcat端口改为9080(conf路径下的server.xml)
- 环境变量名也做更改
可以配置启动的端口号
-
tomcat默认端口号:8080(本主机为9080)
-
mysql默认端口号为:3306
-
http:80
-
https:443
<Connector port="9080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
可以配置主机的名称
- 默认的主机名为:localhost->127.0.0.1
- 默认的网站应用存放的位置为:webapps
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
3.3、发布一个网站
4、Http
4.1什么是Http
超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。
- 文本:html,字符串...
- 超文本:图片、音乐、视频...
- 端口号:80
Https:s代表安全的
- 默认端口号:443
4.2、两个时代
- http1.0
- HTTP/1.0:客户端可以与web服务器连接后,只能获得一个web资源,断开连接
- http2.0
- HTTP/1.1:客户端可以与web服务器连接后,可以获得多个web资源。
4.3、Http请求
- 客户端---发请求(Request)---服务器
以百度为例
Request URL:https://www.baidu.com/ 请求地址
Request Method:GET get方法/post方法
Status Code:200 OK 状态码:200
Rmote(远程) Address:14.215.177.39:443
Accept: text/html
Accept-Encoding:gzip, deflate, br
Accept-Language:zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2 语言
Cache-Control:max-age=0
Connection:keep-alive
4.4、Http响应
- 服务器---响应---客户端
以百度为例
Cache-Control:private 缓存控制
Connection:keep-alive 连接
Content-Encoding:gzip 编码
Content-Type:text/html 类型
5、Maven
javaweb开发过程中需要导入jar包,maven这个工具能够自动帮我们导入配置jar包
5.1、Maven项目架构管理工具
方便导入jar包
Maven的核心思想:约定大于配置
- 有约束,不要去违反
Maven会规定好我们如何去编写java代码,必须按照这个规范
5.2配置环境变量
在我们的环境变量中
配置如下配置
- M2_HOME maven下的bin目录
- MAVEN_HOME maven的目录
- 这边的系统Path配置更改为 D:\JAVA环境变量\apache-maven-3.8.4\bin
5.3、阿里云镜像
-
镜像:mirrors
- 作用:加速我们的下载
-
国内建议用阿里云的镜像
<mirror> <id>alimaven</id> <mirrorOf>central</mirrorOf> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/repositories/central/</url> </mirror>
5.4、本地仓库
在本地的仓库,远程的仓库;
建立一个本地仓库:localRepository
<localRepository>D:\JAVA环境变量\apache-maven-3.8.4\maven-repo</localRepository>
如图
5.5、在IDEA中使用Maven
1、启动IDEA
2、创建一个Maven新项目
3、等待项目初始化完毕
4、观察Maven仓库中多的东西
5、IDEA中Maven的配置
IDEA创建成功后看一眼Maven的配置
5.6、创建一个普通的Maven项目
这个只有在web应用下才会有
5.7、在IDEA中标记文件夹功能
5.8、在IDEA中配置Tomcat
解决警告问题
必须要的配置:为什么会有这个问题:我们访问一个网站,需要指定一个文件名
Error running 'Tomcat 9': Can't find catalina.jar此处Tomcat的路径没配置好
解决办法:重新配置Tomcat的路径
启动成功:这里能够访问到的Hello World!就是index.jsp中的内容
5.9、pom文件
pom.xml是Maven的核心配置文件
由于Maven约定大于配置,我们之后可能遇到我们写的配置文件,无法被导出或者生效的问题,解决方案:
6、Servlet
6.1、Servlet简介
- Servlet就是sun公司开发动态web的一门技术
- sun在这些API中提供一个接口叫做:Servlet,如果你想开发一个Servlet程序,只需要完成两个步骤
- 编写一个类,实现Servlet接口
- 把开发好的java类部署到web服务器中
- 应用程序接口(英语:Application Programming Interface,简称:API),又称为应用编程接口,就是软件系统不同组成部分衔接的约定。由于近年来软件的规模日益庞大,常常需要把复杂的系统划分成小的组成部分,编程接口的设计十分重要。程序设计的实践中,编程接口的设计首先要使软件系统的职责得到合理划分。良好的接口设计可以降低系统各部分的相互依赖,提高组成单元的内聚性,降低组成单元间的耦合程度,从而提高系统的维护性和扩展性。
把实现Servlet接口的java程序叫做,Servlet
6.2、HelloServlet
Servlet接口sun公司有默认的两个实现类:HttpServlet
1、构建一个普通的Maven项目,删掉里面的src目录,以后我们的学习就在这个项目里面建立Moudel;
2、关于Maven父子工程理解:
父项目中会有:
<modules>
<module>servlet-01</module>
</modules>
子项目中会有:
<parent>
<artifactId>javaweb-02-servlet</artifactId>
<groupId>com.wu</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
父项目中的java子项目可以直接使用
son extends father
3、Maven环境优化
(1)修改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>
(2)将maven的结构搭建完整
4、编写一个servlet程序
(1)编写一个普通类
(2)实现Servlet接口,这里我们直接继承HttpServlet
public class HelloServlet extends HttpServlet {
//由于get或者post只是请求实现的不同的方式,可以互相调用,业务逻辑都一样;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//ServletOutputStream outputStream = resp.getOutputStream();
PrintWriter writer = resp.getWriter();//响应流
writer.print("Hello,servlet");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
}
5、编写servlet的映射
为什么需要映射:我们写的是JAVA程序,但是要通过浏览器访问,而浏览器需要连接web服务器,所以我们需要在web服务中注册我们写的Servlet,还需要给它一个浏览器可以访问的路径;
<!--注册Servlet-->
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>com.wu.servlet.HelloServlet</servlet-class>
</servlet>
<!--Servlet的请求路径-->
<servlet-mapping>
<servlet-name>hello</servlet-name>
<!--访问hello路径,前端会访问com.wu.servlet.HelloServlet-->
<url-pattern>/hello</url-pattern>
</servlet-mapping>
6、配置Tomcat
7、启动测试
6.3、Servlet原理
Servlet是由服务器调用,web服务器在收到浏览器请求之后会:
6.4、Mapping问题
1、一个Servlet可以指定一个映射路径
<servlet-mapping>
<servlet-name>hello</servlet-name>
<!--访问hello路径,前端会访问com.wu.servlet.HelloServlet-->
<url-pattern>/hello</url-pattern>
</servlet-mapping>
2、一个Servlet可以指定多个映射路径
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello1</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello2</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello3</url-pattern>
</servlet-mapping>
3、一个Servlet可以指定通用映射路径
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello/*</url-pattern>
</servlet-mapping>
4、默认请求路径
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
5、指定一些后缀或者前缀等等...
可以自定义后缀实现请求映射,注意点:*前面不能加项目映射路径
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>*.wuqingjunhan</url-pattern>
</servlet-mapping>
标签:web,JAVAWeb,Tomcat,学习,服务器,Maven,Servlet,hello
From: https://www.cnblogs.com/wujunhan/p/17064029.html