J2EE是什么
J2EE 是使用 Java 技术开发企业级应用的工业标准,它是 Java 技术不断适应和促进企业级应用过程中的产物。适用于企业级应用的 J2EE,提供一个平台独立的、可移植的、多用户的、安全的和基于标准的企业级平台,从而简化企业应用的开发、管理和部署。J2EE 是一个标准,而不是一个现成的产品。
Tomcat
Tomcat是常见的免费的web服务器。使用tomcat后,可以这样 127.0.0.1:8080/test.html 像访问一个网站似的访问一个html文件了。
这是因为tomcat本身是一个web 服务器,test.html部署在了这个web服务器上,所以就可以这样访问了。8080是tomcat默认使用的端口号,可以通过配置文件进行修改。
Tomcat部署
- 下载Tomcat运行bin目录下的startup.bat。若启动失败多是8080端口被占用,需要进行排查并关闭占用程序
- 准备J2EE应用进行测试
- 修改conf目录下的server.xml文件中的文件应用目录
- 重启tomcat并重新运行start.bat
什么是servlet(源自博客)
sun(oracle)公司制订的一种用来扩展web服务器端功能的组件规范。
web服务器端(比如apache http webServer nginx iis等)只能够处理静态资源的请求,不能够处理动态资源的请求。所以需要扩展web服务器的功能来处理动态资源的请求。
servlet出现之前,如何处理这些动态的请求呢?早期使用CGI(Common GateWay Interface-通用网关接口)程序来扩展。CGI程序开发复杂,移植性差,很少用。
servlet组件:符合相应的规范,具有部分功能的,并且需要部署到相应的容器里面才能运行的软件模块。比如servlet就是一个组件,需要符合servlet规范,并且需要部署到servlet容器里面才能运行。
容器:符合相应的规范,提供组件运行环境的程序。比如Tomcat就是比较有名的servlet容器。jetty jboss weblogic都是servlet容器。这些servlet把网络相关的问题已经全部处理好,我们写servlet只需要关注业务逻辑即可。
如何写一个servlet?
- 写一个java类,需要实现Servlet接口或者继承HttpServlet类。
- 编译。
- 打包(将这个java类变成servlet组件)
- 部署到servlet容器
- 启动servlet容器
servlet是如何运行的?
- 浏览器依据ip,port建立与容器(同时也是一个简单的web server)之间的连接。
- 浏览器将相关数据打包(按照http协议将相关数据创建一个请求数据包),然后发送请求。
- 容器 将请求数据包解析出来,然后将解析到的数据放到请求对象里面,同时还会创建一个响应对象response。
- 容器创建servlet对象,然后调用该对象的service方法。(注:容器会将request对象和response对象作为参数传进来。可以通过request对象获得请求参数值,并将处理结果写到response对象中。)
- 容器通过response获取处理结果,然后打包(响应数据包)发送给浏览器。
- 浏览器解析响应数据包,生成响应的页面。
HTTP 超文本传输协议
浏览器和WEB浏览器(两个应用程序)之间的交互/通信使用的协议,是BS(browser server)架构模型的基础。
HTTP协议由请求(request)和响应(response)两种类型组成。
HTTP报文
用于http协议交互的信息:由多行数据构成的字符串文字。通常由报文首部和报文主体两部分组成。两者之间由最初出现的空行划分。
- 报文首部:客户端或服务器端发送的请求或响应报文的内容及属性。
- 空行(回车+换行):用来区分报文首部和报文主体。
- 报文主体:应该要送的数据
请求报文:客户端发出的报文。客户端发送一个HTTP请求到服务器的请求消息包括以下格式:请求行(request line)、请求头部(header)、空行和请求数据四个部分组成。
响应报文:服务端发出的报文。HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文。
客户端向服务器请求的HTTP方法
- GET 获取资源
- POST 传输实体主主体
- PUT 传输文件
- HEAD 获得报文首部
- DELETE 删除文件
- OPTIONS 询问支持的方法
HTTP是无状态协议(stateless)
由于不需要保存记录,所以减少服务器的CPU和内存的资源的消耗。毕竟客户端一多起来保存记录的话对于服务器端来说是一个巨大的消耗。
cookie技术
针对http协议的无状态特性带来的弊端:无法保存用户的状态。cookie技术应运而生。cookie技术通过在请求和响应报文中写入Cookie信息来控制(或者说记录)客户端的状态。
- Cookie技术会根据从服务器端发送的响应报文内的一个叫做Set-Cookie的首部字段信息,通知客户端保存Cookie。
-
客户端再向服务器端发送请求的时候,客户端会在请求报文中加入Cookie值后发送出去。服务器端会检查客户端发送的请求中有没有Cookie值,然后对比服务器上的记录,最后确定是哪一个客户端,之前的信息状态是什么。
HTTP详情见菜鸟教程。
JSP
通过Servlet进行整个网站的开发是可以的。 JSP可以支持直接使用Html代码,在html中写java代码。英文全称 java server pages /java服务端页面,它是建立在servlet规范基础上的动态网页开发技术。
- java 服务端 页面: 在jsp上可以写java代码,也可以写html标记,它运行在服务器端。
- jsp = java + html + jsp自身的一些东西。
- 为什么会产生jsp技术?因为在早期没有jsp时,需要servlet向页面写数据,比较麻烦,所以就产生了jsp技术,jsp最大的特点:可以非常简单的书写页面html。jsp其实它的本质是servlet: 可以看到 jsp 继承了 HttpJspBase 继承 HttpServlet。