一、C/S架构和B/S架构
1.C/S架构(Client/Server 客户端/服务器)
特点:需要在客户端安装软件(例:QQ,微信)
优点:图形显示效果比较好(例:3D游戏)
缺点:服务器的软件和功能进行升级,客户端也必须升级后,才能使用最新功能,不利于维护
2.B/S架构(Browser/Server 浏览器/服务器)
特点:不用安装客户端,任何浏览器可以直接通过HTTP协议访问
优点:服务器功能升级,浏览器可以直接访问使用
缺点:图形效果显示不如C/S架构(结合H5使用)
二、服务器
1.什么是web?
Web(World wide web)称为万维网,简单理解就是网站,用于表示internet主机上供外界访问的资源
internet供外界访问的资源分为两大类:
·静态资源:指web页面中供人们浏览的数据始终是不变的(HTML,CSS)
·动态资源:指web页面中供人们浏览的数据是由程序产生的,不同时间点、不同设备访问web页面看到的内容不同(jsp/Servlet)
(在java中,动态web资源开发技术称为java web)
3.常见web服务器
·1)什么是web服务器
web服务器是运行及发布web应用的容器,只有将开发的web项目放进该容器,才能使网络中的用户通过浏览器进行访问
·2)开源:OpenSource(1.开放源代码;2.免费)
-tomcat(主流web服务器之一,支持Servlet和JSP规范,适合初学者)
-jetty(淘宝,运行效率比tomcat高)
-resin(新浪,运行效率最高)
注:以上三者代码编写方式完全相同,只在开启、关闭服务器软件时的命令稍有区别
·3)收费
-WebLogic(oracle)
-WebSphere(IBM)
注:提供服务与支持,软件大,耗资源
·4)web项目在服务器中的部署
例:tomcat中
手动部署:
·webapps目录(文件夹)
-WEB-INF目录(用于存放项目的核心内容,该文件夹中的内容不能被外部直接访问)
~classes (用于存放class文件)
~lib (用于存放jar文件)
~web.xml (用于配置文件)
-myweb目录(名字可自定义,用于存放静态或者动态资源文件)
使用idea集成tomcat服务器,实现自动部署
第一步:idea集成tomcat
File. -->setting -->Bulid、Exception、Deployment -->Application Servers --->➕-->Tomcat Home(输入tomcat解压目录) --> Apply
第二步:将项目配置到tomcat
Add Configurations -->➕ -->tomcat server -->local -->Deployment -->➕ -->artifacts -->Apply
关联jar包及项目打包部署
关联第三方jar包
WEB-INF-->新建lib目录 -->将第三方jar包复制到该目录下 --> 右键选择Add as library
导出war包
Application context:/webproject_war_exploded. (exploded代表开发版,不会直接把项目第一时间部署到tomcat,而是先写到了out目录下,这个过程称为热部署)
导出war包:项目完成后,将war包直接放入tomcat的webapps目录中(发布版的项目),启动tomcat后自动解压,即可访问
步骤一:选择生成war包的项目
File -->Project Structure -->Artifacts -->➕-->Web Application: Archive -->For:项目名称:war exploded
步骤二:生成war包
Build-->Build Artifacts--->项目名称.war--->Bulid-->在out目录下生成war包--->将war包复制到webapps目录下
注意:如后续项目发生变更,需要重新打成war包,放到tomcat容器中(webapps目录下)
·5)URL访问资源
URL组成:协议+主机+端口+web项目上下文路径+资源路径
例:http://localhost:8080/myweb/hello.html
三、HTTP协议
1.什么是HTTP
·协议就是需要双方或者多方遵守的要求或规范
·HTTP超文本传输协议(Hyper Text Transfer Protocol)是一个基于请求与响应模式的、无状态的、应用层的网络协议、运行于TCP协议基础之上
2.HTTP协议特点
·支持客户端(浏览器)/服务器模式
·简单快速
客户端只向服务器发送请求的方法和路径,服务器即可响应数据,因而通信速度很快(常用请求方式:GET,POST)
·灵活
HTTP允许传输任意类型的数据,传输的数据类型由Content-Type标识
·无连接
无连接是指每次TCP连接只处理一个或者多个请求,服务器处理完请求后,即断开连接(节省传输时间)
·HTTP1.0版本:响应后,直接断开连接(短连接)
·HTTP1.1版本:响应后不会立即断开,会等几秒(时间可以设置),如有新的请求,还是通过现有连接通道收发信息,如果没有新的请求,再断开连接(长连接)
增加了请求头与响应头
通过Connection报头来控制
·无状态:协议对于事务处理没有记忆能力
3.HTTP协议通信流程
·客户与服务器建立连接(三次握手)
·客户发送请求
·服务器接收请求并做出响应
·客户与服务器关闭连接(四次挥手)
4.请求报文与响应报文
·HTTP请求报文
浏览器以数据块形式向服务器发出请求,这个数据块就是请求报文,由4部分组成:
1)请求行:请求方法 /地址URL / 协议及其版本
2)请求头(request header):键值对形式的属性(例如:请求后可以接收响应的结果文本类型、语言类型;主机号;浏览器类型信息等)
3)空行:表示以上内容传输完毕,接下来内容是正文或请求数据
4)请求正文
·HTTP响应报文
1)状态行:协议及其版本 响应状态 (例:HTTP/1.1 200 OK)
2)响应头(response heaser)
3)空行
4)响应正文
5.常见状态码
200 OK 客户端请求成功
302 Found 临时重定向
403 Forbidden 服务器收到请求,拒绝提供服务(通常会给出原因)
404 Not Found 请求资源不存在
500 Internal server error 服务器发生不可预期错误,导致无法完成客户端请求
四、Servlet
1.Servlet简介
概念
Servlet:Server Applet,是服务器端的程序(代码、功能实现),可以交互式的处理客户端发送到服务器端请求(接收请求,完成操作响应)
作用
·接收客户端请求,完成操作
·动态生成网页(页面数据可变)
·将包含操作结果的动态网页响应给客户端
2.Servlet编写方式
1)导入servlet-api.jar文件
2-1)实现javax.servlet.Servlet接口,并重写5个方法
init(ServletConfig config)
ServletConfig getServletConfig()
service(ServletRequest req,ServletResponse resp)
String getServletInfo()
destroy()
2-2)继承javax.servlet.GenericServlet抽象类,重写service方法
该抽象类实现了Servlet接口,并重写了除service以外的其他四个方法
2-2)继承javax.servlet.http.HttpServlet抽象类(常用)
该抽象类继承了GenericServlet,并重写了service方法
doGet 用于HTTP GET请求
doPost 用于HTTP POST请求
doPut 用于HTTP PUT请求
doDelete 用于HTTP DELETE请求
3.Servlet配置
1)web.xml文件配置
<servlet>
<servlet-name>给所配置的servlet类的别名</servlet-name>
<servlet-class>配置的servlet类的全限定名称</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>给所配置的servlet类的别名(与上面保持一致)</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
2)注解配置(servlet3.0及之后版本才能使用)
@WebServet("")
属性:
·name:servlet的名字(可写,可不写)
·value:配置url路径,可以配置多个(例:value={"/bs","/dd"}
·urlPatterns:配置url路径,作用与value一样,不能同时使用
·loadOnStartup:配置servlet的创建时机
3)url-pattern的匹配规则
精确匹配:/具体名称
后缀匹配:*.xxx
通配符匹配:/* (匹配服务器所有资源)
通配符匹配:/ (匹配服务器所有资源,但.jsp除外)
4)load-on-startup
1.元素标记容器是否应该在web应用程序启动时就加载这个servlet
2.值必须是整数,表示servlet加载的先后顺序
如值为负数或0,请求时加载
值为正数或0,表示容器在应用启动时就加载并初始化servlet,值越小,优先级越高
与poppy一起学习