代码地址: https://github.com/Zhuyaqiang/javaweb-study
目录
1 基本概念
1.1 前言
web开发:
-
web, 网页
-
静态web
- html, css
- 提供给所有人看的数据始终不会发生变化
-
动态web
- 几乎所有网站
- 提供给所有人看的数据都会发生变化
- 技术栈: Servlet/JSP, ASP, PHP
在Java中, 动态web资源开发的技术统称为JavaWeb
1.2 Web应用程序
Web应用程序: 可以提供浏览器访问的程序
- a.html…整合多个web资源, 可以被外界访问, 提供服务
- URL
- 统一的Web资源会被放到某一台计算机上的某一个文件夹下. Web应用程序–>Tomcat: 服务器
- 一个Web应用由多部分组成(静态Web, 动态Web)
- html, css, js
- jsp, servlet
- java程序
- jar包
- 配置文件(Properties)
程序编写完毕后, 需要服务器来统一管理
1.3 静态Web
- *.htm, *.html, 如果服务器上一直存在这些东西, 我们就可以直接进行读取
- 静态Web的缺点:
- Web页面无法动态更新, 所有用户看到的都是同一个页面
- 轮播图, 点击特效: 伪动态
- js, VBScript
- 无法与数据库交互(数据无法持久化)
- Web页面无法动态更新, 所有用户看到的都是同一个页面
1.4 动态Web
页面会动态展示, Web的页面展示效果因人而异
缺点
- 假如服务器的动态Web资源出现了错误, 需要重新编写后台程序, 重新发布
- 停机维护
优点
- Web页面可以动态更新
- 可以与数据库交互(数据持久化)
2 Web服务器
2.1 技术栈
ASP:
- 微软: 国内最早流行
- 在HTML中嵌入了VB的脚本, ASP + COM
- ASP开发中, 基本一个页面有几千航业务代码, 页面显示乱
- 维护成本高
PHP:
- 开发速度快, 功能强大, 跨平台, 代码简单
- 无法承载大访问量的情况
JSP/Servlet:
- sun公司主推的B/S架构
- 基于Java语言
- 可以承载高并发高可用高性能带来的影响
- 语法像ASP
2.2 Web服务器
服务器是一种被动的操作, 用来处理用户的一些请求和相应
IIS, Tomcat
3 Tomcat
3.1 配置
Tomcat核心配置文件是conf/server.conf
网站是如何进行访问的?
- 输入一个域名
- 检查本机hosts配置文件内有没有该域名映射
- 有, 直接返回对应的ip地址
- 没有, 去DNS服务器上查询
3.2 发布一个Web网站
- 将写好的网页放到Tomcat中指定的Web应用文件夹(webapps)下
网站应该有的结构
--webapps: Tomcat服务器的文本目录
-ROOT
-index.html 默认的首页
-WEB-INF
-classes
-lib
-web.xml 网站的配置文件
-static
4 HTTP
4.1 响应状态码
200: 请求成功
4.2 两个时代
- HTTP/1.0: 客户端与web服务器连接后, 只能获得一个Web资源, 断开连接
- HTTP/1.1: 客户端与Web服务器连接后, 可以获得多个Web资源
5 Maven
5.1 Maven项目架构管理工具
用来方便导入jar包
Maven核心思想: 约定大于配置
- 有约束, 不要去违反
Maven会规定好如何编写java代码, 必须按照规范来
5.2 IDEA生成webapp项目
-
选择套用webapp模板
-
Edit Configurations配置Tomcat
-
pom文件:
pom.xm
是maven的核心文件 -
解决资源导出问题
<!-- 在build配置resources, 防止资源导出失败问题--> </build> <resources> <resource> <directory>src/main/resources</directory> <excludes> <exclude>**/*.properties</exclude> <exclude>**/*.xml</exclude> </excludes> <filtering>false</filtering> </resource> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource> </resources> </build>
-
Web头文件版本参考tomcat示例项目
5.3 hello项目
-
创建HelloServlet类, 继承HttpServlet类, 需要导入Maven依赖
<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>javax.servlet.jsp-api</artifactId> <version>2.3.3</version> </dependency>
重写
doGet
,doPost
方法