Servlet是什么?

  • Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层
  • 使用 Servlet,您可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页
  • 通常情况下与使用 CGI(Common Gateway Interface,公共网关接口)实现的程序可以达到异曲同工的效果
  • 架构:

    mark

主要任务

  • 读取客户端(浏览器)发送的显式的数据。这包括网页上的 HTML 表单,或者也可以是来自 applet 或自定义的 HTTP 客户端程序的表单
  • 读取客户端(浏览器)发送的隐式的 HTTP 请求数据。这包括 cookies、媒体类型和浏览器能理解的压缩格式等等
  • 处理数据并生成结果。这个过程可能需要访问数据库,执行 RMI 或 CORBA 调用,调用 Web 服务,或者直接计算得出对应的响应
  • 发送显式的数据(即文档)到客户端(浏览器)。该文档的格式可以是多种多样的,包括文本文件(HTML 或 XML)、二进制文件(GIF 图像)、Excel 等
  • 发送隐式的 HTTP 响应到客户端(浏览器)。这包括告诉浏览器或其他客户端被返回的文档类型(例如 HTML),设置 cookies 和缓存参数,以及其他类似的任务

SSH框架

  • struts+spring+hibernate的一个集成框架,是目前比较流行的一种Web应用程序开源框架
  • 集成SSH框架的系统从职责上分为四层:表示层、业务逻辑层、数据持久层和域模块层
    • 使用Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,控制业务跳转
    • 利用Hibernate框架对持久层提供支持,Spring做管理,管理struts和hibernate
  • 具体做法是:
    • 用面向对象的分析方法根据需求提出一些模型,将这些模型实现为基本的Java对象
    • 然后编写基本的DAO(Data Access Objects)接口,并给出Hibernate的DAO实现
    • 采用Hibernate架构实现的DAO类来实现Java类与数据库之间的转换和访问
    • 最后由Spring做管理,管理struts和hibernate

mark

业务流程

  • 在表示层中,首先通过JSP页面实现交互界面,负责接收请求(Request)和传送响应(Response)
  • 然后Struts根据配置文件(struts-config.xml)将ActionServlet接收到的Request委派给相应的Action处理
  • 业务层中,管理服务组件的Spring IoC容器负责向Action提供业务模型(Model)组件和该组件的协作对象数据处理(DAO)组件完成业务逻辑,并提供事务处理、缓冲池等容器组件以提升系统性能和保证数据的完整性
  • 持久层中,则依赖于Hibernate的对象化映射和数据库交互,处理DAO组件请求的数据,并返回处理结果

采用上述开发模型,不仅实现了视图、控制器与模型的彻底分离,而且还实现了业务逻辑层与持久层的分离。这样无论前端如何变化,模型层只需很少的改动,并且数据库的变化也不会对前端有所影响,大大提高了系统的可复用性。而且由于不同层之间耦合度小,有利于团队成员并行工作,大大提高了开发效率。

Structs 2

  • Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互
  • Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开

Structs与Servlet区别

  • servlet是javaEE基础的基础
  • Structs是框架,本质上相当于一个Servlet

Hibernate

  • 一个开放源代码的对象关系映射框架
  • 将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行
  • Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用
  • Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任

Spring框架

简单来说,Spring是一个分层的JavaSE/EEfull-stack(一站式) 轻量级开源框架

MVC

  • Model View Controller,是模型(model)-视图(view)-控制器(controller),一种软件设计典范
  • M是指业务模型,V是指用户界面,C则是控制器。C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。
  • JSP 仅能作为表现层(View)技术,作用有两点:
    • 负责收集用户请求参数
    • 将应用的处理结果、状态数据呈现给用户
  • Servlet 则仅充当控制器(Controller)角色,用户类似于调度员:(所以用户的请求发送给 Servlet , Servlet 调用 Model 来处理用户请求,并调用 JSP 来呈现处理结果;)
  • Model 通常由 JavaBean 来充当,所以业务逻辑、数据访问逻辑都在 Model 中实现

JavaBean

  • JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器
  • JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性,long和class方法获取
  • MVC中充当model

Applet

Java Applet 是用Java 语言编写的一些小应用程序,这些程序是直接嵌入到页面中,由支持Java的浏览器(IE 或 Netscape)解释执行能够产生特殊效果的程序。它可以大大提高Web页面的交互能力和动态执行能力。包含Applet的网页被称为Java-powered页,可以称其为Java支持的网页

HTTP状态码

200 & OK: 请求成功;

204 & No Content: 请求处理成功,但没有资源可以返回;

206 & Partial Content: 对资源某一部分进行请求(比如对于只加载了一般的图片剩余部分的请求);

301 & Move Permanently: 永久性重定向;

302 & Found: 临时性重定向;

303 & See Other: 请求资源存在另一个URI,应使用get方法请求;

304 & Not Modified: 服务器判断本地缓存未更新,可以直接使用本地的缓存;

307 & Temporary Redirect: 临时重定向;

400 & Bad Request: 请求报文存在语法错误;

401 & Unauthorized: 请求需要通过HTTP认证;

403 & Forbidden: 请求资源被服务器拒绝,访问权限的问题;

404 & Not Found: 服务器上没有请求的资源;

500 & Internal Server Error: 服务器执行请求时出现错误;

502 & Bad Gateway: 错误的网关;

503 & Service Unavailable: 服务器超载或正在维护,无法处理请求;

504 & Gateway timeout: 网关超时;

XML、SOAP、WSDL

XML

  • 可扩展标记语言
  • 它非常适合万维网传输,提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。是Internet环境中跨平台的、依赖于内容的技术,也是当今处理分布式结构信息的有效工具

SOAP

  • 简单对象访问协议
  • 是交换数据的一种协议规范,是一种轻量的、简单的、基于XML(标准通用标记语言下的一个子集)的协议,它被设计成在WEB上交换结构化的和固化的信息

WSDL

  • Web Services Description Language
  • 网络服务描述语言是Web Service的描述语言,它包含一系列描述某个web service的定义
  • WSDL 元素[1] 基于XML语法描述了与服务进行交互的基本元素
  • XML(标准通用标记语言的子集)

webService三要素

  • SOAP(Simple Object Access Protocol)
  • WSDL(WebServices Description Language)
  • UDDI(Universal Description Discovery and Integration)

soap用来描述传递信息的格式, WSDL 用来描述如何访问具体的接口, uddi用来管理,分发,查询webService。

Java Web应用目录结构

mark

structs配置文件在编写在web.xml中