略
前提
WEB相关
web(World Wide Web)即全球广域网,也叫万维网.基于超文本和HTTP的分布式图形信息系统.
软件架构
C/S
即客户端/服务器的结构,需要同时开发客户端和服务器,服务器负担小点,一些逻辑可以分配给客户端处理.
B/S
即浏览器/服务器的结构,不需要客户端,仅仅需要浏览器,使用方便,但是服务器处理所有逻辑,
Web服务器
- Tomcat服务器:Apache公司,开源,免费
- WebSphere服务器:IBM公司,大型,收费
- WebLogic服务器:BEA公司,大型,收费
- IIS服务器:微软,用于.Net平台
- Apache服务器:Apache公司,用于PHP平台
资源
- 静态
- HTML
- CSS
- JS
- 动态
- Servlet
- JSP
- PHP
- ASP
Tomcat安装
网上查
HTTP协议
- 基于请求和响应模型
- 必须要先有请求,后有响应。
- 请求和响应必须成对出现。
- 简单快捷
- 因为发送请求的时候只需要发送请求方式和请求路径即可
请求
三部分:
请求行
请求方式,请求路径,使用协议版本
1
GET / HTTP/1.1
请求头
修饰请求的参数,key:value格式
1
2
3
4
5
6
7
8
9Host: www.baidu.com
Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.8,en;q=0.6
Cookie: PSTM=1499256449;请求体
请求内容,key=value格式
只有post方式才有请求体
1
BIDUPSID=466826E580D5EAA9916FE1722DFB567E; __cfduid=d35a63fec825c335b2020219e0e6d2f821499497945; BDUSS=TdoVWxnZTRPWHBWd0ZSQTdQMjY4UnpGV1ZtdEJPbE8zRldRcS00SXR4R0FVNXhaSVFBQUFBJCQAAAAAAAAAAAEAAADmWjVOstPf1di839UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIDGdFmAxnRZS; BAIDUID=432F9D527217510DDA00119B0DC37E3B:SL=0:NR=20:FG=1; BD_UPN=12314753; BD_HOME=1; H_PS_PSSID=1449_13549_21126_18560_24093_22073; sug=3; sugstore=0; ORIGIN=0; bdime=0
响应
与请求类似,有响应行,响应头,响应体
- 响应行
- 协议版本
- 状态码
- 200-响应成功
- 302-需要重定向
- 304-需要查询本地缓存
- 404-请求资源不存在
- 500-服务器内部错误
- 状态码描述
- 响应头
- key : value 格式
- 重要响应头
- Location重定向
- Refresh定时刷新
- Content-Disposition文件下载时候使用
- 响应体
- 用户浏览的页面代码(html)
Servlet
Servlet其实就一个运行在web服务器上的小的Java程序,用于处理从web客户端发送的请求,并且对请求作出响应。
使用
底层是java类继承Servlet接口,
开发使用的方式是:继承tomcat中的HttpServlet类,重写doPost()和doGet()方法来实现
然后配置servlet(目的:使url映射到编写的servlet类上),有两种方式:
- web.xml中()
- Servlet类上使用@WebServlet(..)注解
Servlet的生命周期
Servlet是在第一次被访问的时候会被实例化,只要Servlet一被实例化那么Servlet中的init方法就会执行(init只会执行一次)。任何一次从客户端发送来的请求,那么Servlet中的service方法就会执行(在service方法的内部根据请求的方式不同调用不同doXXX方法)。当Servlet从服务器中移除或者服务器关闭的时候Servlet对象被销毁,里面的destroy方法就会执行,然后垃圾回收就会将其回收掉。
启动时加载
修改Servlet的加载时间为服务器启动加载
给Servlet添加load-on-startup属性,属性值为 2 (tomcat服务中存在一个值为1默认的Servlet,该Servlet必须先于任何一个Servlet启动)
访问路径的处理
Servlet的urlPattern属性/url
斜杠代表根路径即web目录,并且*
可以作为通配符来使用.
Servlet中得到web目录下的文件
通过IO流获得
String path = this.getServletContext().getRealPath("/WEB-INF/classes/db.properties"); InputStream is = new FileInputStream(path); //is就是该文件的io流
1
2
3
2. ```
InputStream is = this.getServletContext().getResourceAsStream("/WEB-INF/classes/db.properties");
乱码的解决
对于response
1
response.setContentType("text/html;charset=UTF-8");
对于request
1
2
3
4//post
request.setCharacterEncoding("utf-8");
//get,tomcat8以上不用考虑编码问题
String str = new String("中文".getBytes("ISO-8859-1"),"UTF-8");