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)