当前位置: 首页 > news >正文

javaweb开发第一课

—javaweb开发系列笔记概念

一、 Web开发的概念

1web的结构

在这里插入图片描述

2常见的服务器(软件)

WebLogic:Oracle公司产品;支持JavaEE规范;收费。

WebSphereAS(Application Server):IBM公司产品;支持JavaEE规范;收费。

JbossAS:红帽公司产品;支持JavaEE规范;免费。

Tomcat(雄猫):Apache组织的产品;支持Servlet/JSP规范;免费。

容器:我们开发的程序必须放到服务器(软件)上才能运行,要求服务器必须支持某些规范,实现了什么规范的服务器,我们一般称之为什么容器。

二、Tomcat服务器

为了方便学习和使用我们一般使用的服务器都是Tomcat服务器。

1、Tomcat的版本是与Servlet/JSP的版本的对应

Tomcat版本 Servlet/JSP版本 JavaEE版本 JDK版本

8.X			3.2							JDK7+

7.X			3.0/2.2			JavaEE6.0	JDK6+

6.X			2.5/2.1			JavaEE5.0	JDK5+

2、Tomcat的安装步骤:(解压版)

A、前提:

a) 必须配置JAVA_HOME环境变量,指向JDK的安装目录

b) (可选)配置CATALINA_HOME环境变量,执行Tomcat的安装目录。

B、解压apache-tomcat-7.0.53.zip到磁盘的某个目录中(要求:目录不能有中文或空格)

C、验证安装是否成功

启动服务器:安装目录\bin\startup.bat
在这里插入图片描述

  • 启动过程中如果没有报错,说明成功了,当然,可以通过以下方式验证是否成功!

    Tomcat默认使用的端口是8080.

    浏览器打开 :http://localhost:8080 或者 http://127.0.0.1:8080

3、启动Tomcat可能遇到的问题

A、闪退。原因:没有配置JAVA_HOME环境变量

B、启动不成功:端口占用的问题。Tomcat默认的端口是8080。

  • 1 找打那个占用端口的进程,干掉他。

    2让Tomcat换一个端口:
    打开Tomcat\conf\server.xml (重新配置另一个端口作为使用,如图)

在这里插入图片描述

4、Tomcat的目录结构(重要,记住)


特别注意:
webapps:很重要。存放我们开发的JavaWeb应用的。该目录中有几个文件夹,就说明目前有几个应用。

5、JavaWeb应用的目录结构(猪死了都得记住)

规范规定的


	MyAPP		应用名称
	​1.Html
		 Css(文件夹)
​		        Main.css
​		 User
​			addUser.html
​			editUser.html

WEB-INF:特别重要。必须大小写完全一致。放在此目录中的内容,用户无法直接访问。

classes:特别重要。必须大小写完全一致。放class字节码文件。如:cn.itcast.Person.class    cn\itcast\Person.class

lib:特别重要。必须大小写完全一致。放本应用需要的jar包。

web.xml:特别重要。必须大小写完全一致。本应用的配置文件。
  • 小知识:

    存放类的地方:

    1、本应用的classes目录:为本应用服务

    2、本应用的lib中的jar包:为本应用服务

    3、Tomcat的lib中的jar包:为所有的应用服务

    按照1 2 3依次搜索。

6、如何发布我们的应用到服务器上

A、直接把应用的目录拷贝到Tomcat\webapps目录下

B、把我们的应用打成war包,再拷贝到Tomcat\webapps目录下

7、Tomcat的组成结构

Tomcat配置中,最重要的就是Tomcat\conf\server.xml配置文件。

在这里插入图片描述
在这里插入图片描述

记住:

用户的访问都是通过Tomcat的连接器过来的
Tomcat的引擎中管理者很多的主机(Host)
每个主机中管理者很多的应用(Context)

小案例:

  • l 配置虚拟目录:(应用Context)

    ​ 把磁盘上任意目录配成Tomcat管理的应用。比如E:/MyApp交给Tomcat管理,为外界提供服务。(不要采取拷贝到Tomcat\webapps目录下的形式)

    方式一(推荐):

    1、建立一个扩展名为.xml的配置文件,文件的主文件名就是虚拟目录的名称(如SH.xml),内容如下:

    
    <Context docBase="E:\MyAPP"/> ```
    
    2、把SH.xml放到Tomcat\conf\Catalina\localhost目录中
    
    3、访问:http://localhost:8080/SH/1.html
    
    优点:不需要重启Tomcat就会生效。
    
    实际开发中:直接拷贝到Tomcat\webapps目录下
    
    
    
    

l 配置虚拟主机:(Host)

在这里插入图片描述

1、修改Tomcat\conf\server.xml,在元素下添加以下内容:

<Host name="www.itcast.cn"  appBase="e:\itcastapps"

​            unpackWARs="true" autoDeploy="true"/>

​	  <Host name="www.itheima.com"  appBase="e:\itheimaapps"

​            unpackWARs="true" autoDeploy="true"/>

2、重新启动Tomcat

3、DNS有关配置:

在这里插入图片描述

  • 修改本地hosts文件C:\WINDOWS\system32\drivers\etc\hosts配置文件

    127.0.0.1 localhost

    127.0.0.1 www.itcast.cn

    127.0.0.1 www.itheima.com

  • 4、我们就可以访问了

    http://www.itcast.cn:8080/app1/1.html

    http://www.itheima.com:8080/app1/1.html

    特别提醒:练完后把hosts改回来

配置默认应用、默认主页、默认端口

http://localhost:8080/MyAPP/1.html = http://localhost

  • 1、默认端口:HTTP协议规定默认访问的端口80.(http://localhost/MyAPP/1.html)

    修改Tomcat\conf\server.xml----->8080 80

    2、把自己的应用改为默认应用:(http://localhsot/1.html)

  • 方式一:把应用的名称改为ROOT

    方式二:在Tomcat\conf\Catalina\localhost建立一个名称为ROOT.xml配置文件即可(需要重启Tomcat)

<?xml version="1.0"?>

<Context docBase="e:\MyAPP"/>

3、更改应用的默认主页:(http://localhost)

修改应用下的web.xml,配置以下内容

<web-app>

​	<welcome-file-list><!--配置当前应用的默认主页-->

​        <welcome-file>1.html</welcome-file>

​        <welcome-file>index.htm</welcome-file>

​        <welcome-file>index.jsp</welcome-file>

​    </welcome-file-list>

三、HTTP协议(非常重要)

1、作用:描述客户端和服务器端数据的传递的协议

2、全称:HyperText Transfer Protocol超文本传输协议。超文本:HTML

3、版本:1.0 1.1(主流)

4、HTTP1.0 VS HTTP1.1 (主要区别)

1.0:无状态协议。每次访问服务器都需要建立一次网络连接,耗费时间和资源

1.1:可以在一次网络连接基础之上,发出很多次请求和收到很多次响应。

5、明确几个问题:

带有连接的标记,比如:<img src=””/> <link href=""/> <script src=""/>,浏览器遇到这些标记,会自动向服务器发出请求。

6、HTTP协议的组成:(请求和响应。重要,必须记住)

l 请求部分:

在这里插入图片描述

请求部分的组成:
		1请求消息行。位于请求部分的第一行
		2请求消息头。从第2行开始,至第一个空行结束
		3从第一个空行开始往后,都是请求正文。(上图暂时没有)

lI 响应部分:

在这里插入图片描述

响应部分组成:
1响应行
2从第2行至第一个空行,响应消息头
3从第一个空行开始,后面的就是响应正文

7、请求部分详解(客户端发给服务器)

7.1请求行

  • GET /MyAPP/1.html HTTP/1.1

    GET:请求方式(request method)

    默认的请求方式是GET。常用的有GET POST HEAD OPTIONS

    GET和POST有何不同

l GET:默认的。GET /MyAPP/1.html?username=ddd&password=111 HTTP/1.1。请求参数的数据暴露在地址上(不安全)。有长度限制(<1024B)

l POST(开发首选):通过表单来设置。请求正文中有内容(表单中的数据)。长度木有限制。Name1=value1&name2=value2

使用POST请求方式可以记住form表单

<html>

​	<head>

​		<title>user login</title>

​	</head>

​	<body>

​		<h1>Login</h1>

​		<form action="1.html" method="post">

​			username:<input type="text" name="username"/><br/>

​			password:<input type="password" name="password"/><br/>

​			<input type="submit" value="Login"/>

​		</form>

​	</body>

</html>

在这里插入图片描述

  • /MyAPP/1.html:请求的URI地址(资源地址)

    URL:协议+IP:端口+资源地址 http://localhost:8080/MyAPP/1.html

    HTTP/1.1:请求使用的协议及版本号

7.2请求正文

只有POST请求方式时才会出现。出现的内容就是表单要提交的数据。形式:username=abc&password=123&gender=female

7.3请求消息头

作用:向服务器端传递一些附加信息。

形式:1、Header-Name: headerValue1,heaerValue2

2、Header1:headerValue1

​ Header1:headerValue2

注意:一个头2个值和两个同名头和值是不同的。

常用的请求消息头:

Accept:告知服务器,浏览器能够接受的数据MIME类型。

MIME类型:

磁盘文件系统中:文件的扩展名区分不同的文件的。

网络中:通过数据的MIME类型区分数据的。

他们之间有对应关系:查阅Tomcat\conf\web.xml

<mime-mapping>

​       <extension>txt</extension><!--磁盘文件的扩展名-->

​       <mime-type>text/plain</mime-type><!--txt文件对应的MIME类型-->

 </mime-mapping>
  • MIME特点:大类型/小类型

    Accept-Charset:告知服务器,客户端能接受的字符集。

    *Accept-Encoding:告知服务器,客户端支持的压缩编码。比如gzip

    Accept-Language:告知服务器,客户端支持的语言。(可以通过浏览器设置)

    *Referer:告知服务器,当前页面是由哪个页面转过来的。用户如果是直接访问的,没有这个头。

在这里插入图片描述

  • 实际应用:防盗链;广告效果投放统计;

    *Content-Type:告知服务器。客户端提交的请求正文的MIME类型。默认是application/x-form-data-urlencoded(username=abc&password=123)。可以通过表单form的enctype属性指定。可选值multipart/form-data(文件上传)

    *If-Modified-Since:告知服务器,本地缓存的资源的最后的修改时间。

    *User-Agent:告知服务器,客户端使用的浏览器的类型

    *Content-Length:告知服务器,客户端发送的请求正文内容的长度

    Connection:告知服务器,需要持久连接

    *****Cookie:向服务器发送cookie数据。(会话管理详解)

8、响应部分详解(服务器发给客户端的)

8.1响应行

HTTP/1.1 200 OK
HTTP/1.1:响应使用的协议及版本号

200:响应状态码。说明了本次请求的结果状态

1XX

2XX:一切正常

3XX

4XX:访问的资源有问题

5XX:访问的资源运行出错了(出现异常)

常用的响应码:(目前用到了就30个左右,其他的是W3C保留的)

200:一切OK

302、307:临时重定向

304:客户端请求的内容木有更改(没有更新)

404:访问的资源不存在

500:服务器内部错误。一般出现在服务端程序出现异常

8.2响应正文

浏览器收到的数据,这些数据都是HTML。浏览器进行展现。(右键看源码,实际上就是看的响应的正文)

8.3响应消息头

作用:向客户端传递一些附加信息

常用的响应消息头:

*Location:指向一个地址。经常和302响应码实现请求重定向。

在这里插入图片描述

  • Server:告知客户端,服务器端使用的服务器(软件)的类型。

    *Content-Encoding:告知客户端,服务器使用的压缩编码。比如gzip(压缩格式)

    *Content-Length:告知客户端,请求正文的内容长度。

    *Content-Type:告知客户端,请求正文的MIME类型。

    *Content-Type:text/html;charset=UTF-8(正文为超文本,编码用的是UTF-8)

    *Refresh:告知客户端,定时刷新

    *Content-Disposition:告知客户端,请使用下载的方式打开

    Content-Disposition=attachment;filename=1.jpg

    *****Set-Cookie:会话管理

    *一起来告诉客户端不要缓存:

    Expires: -1

    Cache-Control: no-cache (1.1)

    Pragma: no-cache (1.0)

相关文章:

  • 怎么上传本地项目或文件到SVN服务器
  • 一梦十年
  • SVN的基本概念和使用
  • 静态路由的配置的实验一
  • 素数环问题----回溯法应用(1)
  • 回溯法应用:求解n皇后问题
  • 流水线作业调度最小时间问题
  • 动态路由RIP配置
  • 机器学习-梯度下降实验
  • 如何使用github协作(修改远端仓库)
  • 工具使用之notepad++配置C/C++编译环境
  • javaweb期末开发项目笔记
  • Mysql安置配置过程中的问题及解决方法
  • 机器学习实验四 ——基于距离的层次聚类
  • 机器学习第二关——k-means算法流程
  • 分享一款快速APP功能测试工具
  • ES6核心特性
  • FastReport在线报表设计器工作原理
  • java多线程
  • js操作时间(持续更新)
  • Laravel深入学习6 - 应用体系结构:解耦事件处理器
  • leetcode讲解--894. All Possible Full Binary Trees
  • spring-boot List转Page
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • 产品三维模型在线预览
  • 每天10道Java面试题,跟我走,offer有!
  • 容器服务kubernetes弹性伸缩高级用法
  • 使用权重正则化较少模型过拟合
  • 微信支付JSAPI,实测!终极方案
  • 最近的计划
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • #、%和$符号在OGNL表达式中经常出现
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (07)Hive——窗口函数详解
  • (四)docker:为mysql和java jar运行环境创建同一网络,容器互联
  • (学习日记)2024.03.25:UCOSIII第二十二节:系统启动流程详解
  • (转载)微软数据挖掘算法:Microsoft 时序算法(5)
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .NET 设计模式初探
  • .NET 设计模式—简单工厂(Simple Factory Pattern)
  • .NET命令行(CLI)常用命令
  • .NET企业级应用架构设计系列之技术选型
  • .Net转前端开发-启航篇,如何定制博客园主题
  • .sys文件乱码_python vscode输出乱码
  • /使用匿名内部类来复写Handler当中的handlerMessage()方法
  • @Bean注解详解
  • [ vulhub漏洞复现篇 ] Apache Flink目录遍历(CVE-2020-17519)
  • []常用AT命令解释()
  • [ASP]青辰网络考试管理系统NES X3.5
  • [C#]获取指定文件夹下的所有文件名(递归)
  • [C#7] 1.Tuples(元组)
  • [c++] 单例模式 + cyberrt TimingWheel 单例分析
  • [C++] 统计程序耗时
  • [Excel] vlookup函数
  • [Gym-102091E] How Many Groups