Web开发相关概念
静态Web资源开发技术:Html
动态Web资源开发技术:JSP/Servlet、ASP、PHP等,在Java中,动态web资源开发统称为JavaWeb。
常见Web服务器:WebLogic,目前应用最广泛,商业;WebSphere,IBM,商业;Tomcat,APache,免费;
一个Web应用由多个静态Web资源和多个动态Web资源组成,如html、css、js文件以及Jsp文件、java程序、支持jar包和配置文件等;
Web应用开发好之后,若想供外界访问,需要把web应用所在目录交给web服务器管理,这个过程称之为虚拟目录的映射,详情,目前已经不推荐直接在server.xml中直接修改 < Context >,例如直接写入< Context path=“/login” docBase=”C:\login” />,这样直接浏览器输入http://localhost:8080/login/1.html 就可以直接访问C盘login文件夹下的1.html资源了,但是这样一旦修改server.xml,服务器就必须重启;
补充小知识:互联网上一些协议及常用的端口: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 | //进入应用目录 |
打包后的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 | <role rolename="tomcat"/> |
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等其他一些头和缓存相关;
注:转载文章请注明出处,谢谢~