JavaWeb1

Web开发相关概念

  1. 静态Web资源开发技术:Html

    动态Web资源开发技术:JSP/Servlet、ASP、PHP等,在Java中,动态web资源开发统称为JavaWeb。

  2. 常见Web服务器:WebLogic,目前应用最广泛,商业;WebSphere,IBM,商业;Tomcat,APache,免费;

  3. 一个Web应用由多个静态Web资源和多个动态Web资源组成,如html、css、js文件以及Jsp文件、java程序、支持jar包和配置文件等;

  4. Web应用开发好之后,若想供外界访问,需要把web应用所在目录交给web服务器管理,这个过程称之为虚拟目录的映射,详情,目前已经不推荐直接在server.xml中直接修改 < Context >,例如直接写入< Context path=“/login” docBase=”C:\login” />,这样直接浏览器输入http://localhost:8080/login/1.html 就可以直接访问C盘login文件夹下的1.html资源了,但是这样一旦修改server.xml,服务器就必须重启;

  5. 补充小知识:互联网上一些协议及常用的端口:http-80;smtp-25;pop3-110;ftp-23;https-443;mysql-3306;oracle-1521;

Tomcat服务器

服务器目录结构

bin:存放启动和关闭Tomcat的脚本文件;

conf:存放Tomcat服务器的各种配置文件,最重要的是server.xml;

lib:存放Tomcat服务器支持的jar包;

logs:存放Tomcat服务器的日志文件,若启动不成功无法通过控制台查看问题的话可查看日志文件;

temp:存放Tomcat服务器产生的临时文件;

webapps:web应用所在目录,即供外界访问的web资源的存放目录,对于开发人员最重要的目录;

work:存放Tomcat服务器的工作目录,JSP需要用到;

web应用的组成结构

webapps下的web应用需要严格按照以下存放规则

web.xml文件是整个web应用中最重要的配置文件,必须放在WEB-INF目录中,在开发web应用时,但凡涉及到对web应用中某个web资源的配置,往往都在web.xml中进行设置。例如把某个资源配置成网站首页,直接参考Tomcat中自带的Web.xml文件,取头取尾即可。

应用发布到服务器上时需要打包成war包,这样服务器会自动解析。

1
2
//进入应用目录
jar -cvf xxx.war xxx

打包后的war文件直接放到服务器的webapps目录,会看到自动解析出xxx文件。

配置虚拟主机

所谓配置虚拟主机,就是在tomcat服务器中配置一个网站,一个tomcat服务器中可以放置多个文档,在Web服务器中配置一个网站,需使用Host元素在server.xml进行配置,如

1
<Host name="www.google.com" appBase="C:\login"></Host>

但是配置的主机要想被外界访问,必须在DNS进行注册IP,很显然,www.google.com是不能再被注册的,但是浏览器在询问DNS之前会先询问Windows系统,这个主机名是否在系统中注册IP,所以可以修改C:\Windows\System32\drivers\etc下的hosts文件,将本机IP映射成为www.google.com,这样本机浏览器访问www.google.com就可以访问自己C盘下的login应用。

配置https连接器

主要用于表单等提交时的加密,设计密码学尤其是非对称加密,这部分略过。

首先需要为网站生产一份数字证书(公钥),cmd命令行:

1
keytool -genkey -alias tomcat -keyalg RSA

系统将产生的数字证书保存到密钥库。然后将这份密钥库文件拷贝到Tomcat安装目录下的conf文件夹下,之后在server.xml中进行配置,也就是使网站自动提取密钥库中的密钥给网站使用用户。具体配置可以打开server.xml文件中关于8443端口的部分,这部分视频使用的方法在Tomcat官方文档中显示deprecated,故不记录,另外,这里配置的只是单向加密连接器,实际开发中应配置https双向加密连接器。

Tomcat管理器

在官方文档首先有Manger APP,点击需要用户名密码。这个在复制文件中可以进行配置,打开tomcat-users.xml可以看到几个注释的用户名密码,可以用这几个或者自己再配置。注意默认正好无权限,需要加一个manager的角色。

1
2
3
4
5
6
<role rolename="tomcat"/>
<role rolename="role1"/>
<role rolename="manager"/>
<user username="tomcat" password="<must-be-changed>" roles="tomcat,manager"/>
<user username="both" password="<must-be-changed>" roles="tomcat,role1"/>
<user username="role1" password="<must-be-changed>" roles="role1"/>

HTTP协议

客户端连上web服务器之后,若想要获得web服务器中某个web资源,需遵守一定的通讯格式,HTTP协议用于定义客户端与web服务器通讯的格式,时TCP/IP协议的一个应用层协议。

可以使用windows自带的telnet程序连上web服务器并使用HTTP协议获取某个页面或者浏览器的一些插件也可以实现查看HTTP的请求和响应。

HTTP请求

客户端连上服务器后,向服务器请求某个web资源,称之为客户端向服务器发送了一个HTTP请求,一个完整的HTTP请求包括:一个请求行、若干请求头、以及实体内容。请求行用于描述客户端的请求方式、请求的资源名称以及使用的HTTP协议版本号;请求头用于描述客户端请求哪台主机以及客户端的一些环境信息等;实体内容为表单请求的数据等。

请求行

请求行中常用的请求方式有GET和POST,如果用户没有设置,默认都是GET,用户想把请求方式改为POST,可通过更改表单的提交方式实现。GET在请求的URL地址后以?的形式带上交给服务器的数据,多个数据之间以&进行分隔,例如

1
GET /mail/1.html?name=abc&password=123456 HTTP/1.1

其数据容量通常不能超过1K,POST传送的数据量无限制。

请求头

Accept:用于告诉服务器,客户机支持的数据类型;

Accept-Charset:用于告诉服务器,客户机采用的编码;

Accept-Encoding:用于告诉服务器,客户机支持的数据压缩格式;

Accept-Language:用于告诉服务器,客户机的语言环境;

Host:客户机通过这个头告诉服务器,想访问的主机名;

If-Modified-Since:客户机通过这个头告诉服务器,资源的缓存时间;

Referer:客户机通过这个头告诉服务器,它是从哪个资源来访问服务器的(主要用于防盗链);

User-Agent:客户机通过这个头告诉服务器,客户机的软件环境;

Cookie:客户机通过这个头可以向服务器带一点数据;

HTTP响应

一个HTTP响应代表服务器向客户端回送的数据。HTTP响应包括:一个状态行、若干响应头、以及实体内容。状态行用于描述服务器对于请求的处理结果;响应头用于描述服务器的基本信息,以及数据的描述,服务器通过这些数据的描述信息,可以通知客户端如何处理等一会儿它回送的数据;实体内容为服务器向客户端回送的数据。

状态行

状态码用于表示服务器对请求的处理结果,它是一个三位的十进制数,响应状态码分为三类:

例如302:服务器告诉客户端去其他地址找;304/307:服务器告诉客户端去找缓存;404:服务器告诉客户端资源找不到;403:服务器告诉客户端没有权限访问该资源;

响应头

Location:这个头配合302状态码使用,用于告诉客户端找谁,实现请求重定向;

Server:通过这个头,告诉浏览器服务器的类型;

Context-Type:通过这个头,告诉浏览器回送数据的类型,不同的文件类型对应的具体书写格式可在Tomcat/conf/web.xml中查看;

Refresh:通过这个头,服务器告诉浏览器多久刷新一次;

Content-Disposition:通过这个头,服务器告诉浏览器以下载方式打开数据;

ETag:缓存相头的头;

Expirse:通过这个头,服务器告诉浏览器把回送的资源缓存多长时间,-1或0代表不缓存;

Set-Cookie、Cache-Control、Pragma等其他一些头和缓存相关;

:转载文章请注明出处,谢谢~