基于组件的开发/基础
有 2 个概念模型为 http 和 tcp/ip 提供上下文。4 层模型将 http 放在第 4 层应用层,将 tcp 放在第 3 层传输层,将 ip 放在第 2 层互联网层。第 1 层通常称为组合的链路/物理层,例如可能包含 MAC/以太网和 DSL。
在另一种模型中,OSI 7 层模型,第 1 层是物理层,例如 DSL;第 2 层是数据链路层,例如 MAC;第 3 层是互联网层,例如 IPV4/IPV6/IPSEC/UDP,除了 ipsec 之外,可能无连接;第 4 层是传输层,通常是面向连接的,例如 TCP;第 5 层是会话层,它是时空同步的(连接和会话),例如 PAP/CHAP,https 中的 S;第 6 层是表示层,可能会将加密归类到这里,但概念上可能包括 html;第 7 层是应用层,通常 https 以及 sftp、ftp、telnet、ssh、IMAP、SMTP 在此级别分组。html 可能被归类为 6b/7b,因为它涉及表示,并且如今通常是应用程序级协议。
在 java web 编程的背景下,Apache Tomcat 等 java web 容器提供了 javax.servlet(.http) API 实现的框架。javax.servlet.Servlet 接口描述了 GenericServlet 抽象类和 HttpServlet 抽象类,应用程序程序员应该使用继承来创建 GenericServlet 或 HttpServlet 的子类来满足他们的应用程序编写愿望。程序员需要实现的主要抽象方法是
service(ServiceRequest req, ServiceResponse resp)
在 GenericServlet 中,以及
doGet(HttpServiceRequest req, HttpServiceResponse resp) doPost(HttpServiceRequest req, HttpServiceResponse resp)
在 HttpServlet 中。
HttpServiceRequest 继承自 ServiceRequest,后者具有 getInputStream() 和 getReader() 方法,允许读取用户请求。HTTPServiceRequest 还具有 getCookies() 和 getQueryString()、getUri() 和 getParts(),用于获取客户端 Web 浏览器数据以进行处理。这允许应用程序执行诸如在法律范围内跟踪客户的操作,而无需客户的知情,但符合传统广告邮件的法律边界(我们希望如此)。对于处理用户在网页表单中输入的法律上同意和隐式同意的表单数据,这也是必不可少的,因为 getQueryString() 返回用 & 分隔的表单元素。
HttpServieResponse 具有 getOutputStream() 和 getWriter() 方法,用于写入响应,例如 html 页面。它还允许设置 Http 级别的信息,这些信息指示客户端的 Web 浏览器执行某些操作,例如设置 cookie、读取响应头、重定向到另一个页面、显示错误代码和消息,在以下方法中:
addCookie(Cookie c) addHeader ( String name, String val) sendRedirect( String url ) sendError( int errorCode, String msg)
这允许在 Tomcat 等 Web 容器上以最低的 html 应用程序级别对动态 html 进行编程。