J2EE是一系列技术标准所组成的平台,包括:
Applet - Java Applet
EJB - 企业级JavaBean(Enterprise Java Beans)
JAAS - Java Authentication and Authorization Service
JACC - J2EE Authorization Contract for Containers
JAF - Java Beans Activation Framework
JAX-RPC - Java API for XML-Based Remote Procedure Calls
JAX-WS - Java API for XML Web Services
JAXM - Java API for XML Messaging
JAXP - Java XML解析API(Java API for XML Processing)
JAXR - Java API for XML Registries
JCA - J2EE连接器架构(J2EE ConnectorArchitecture)
JDBC - Java数据库联接(JavaDatabase Connectivity)
JMS - Java消息服务(Java MessageService)
JMX - Java Management
JNDI - Java名称与目录接口(JavaNaming and Directory Interface)
JSF - Java Server Faces
JSP - Java服务器页面(Java Server Pages)
JSTL - Java服务器页面标准标签库(JavaServer Pages Standard Tag Library)
JTA - Java事务API(Java Transaction API)
JavaMail
Servlet - Java Servlet API
StAX - Streaming APIs for XML Parsers
WS - Web Services
struts2由webwork演变而来。
Model1模式:
Jsp接受处理用户请求,对请求处理后作出相应。使用javabean来出来数据库连接,数据库访问等操作。
Model2:
Jsp请求与servlet交互,servlet负责与javabean通信,model—javabean、view—jsp、controller—servlet
MVC优势:
1、 一个模型可以对应多个视图,减少代码量及代码维护量
2、 模型与显示分离,可以采用多种视图显示技术:jsp、velocity、excel….
3、 分为三层,降低了模块之间的耦合
4、 控制层可以将多个视图和多个模型组合在一起,完成不同的请求。
Structs1MVC
1)Model:封装了底层数据库访问,业务逻辑方法实现。一个成熟的企业级应用,model不是一个简单的javabean能实现的,可能是一个或多个EJB组件或者web service服务等。
2)View struts1只支持jsp
3)Controller:
1、 ActionServlet
2、 用户自己的Action实例。
Struts1缺陷:
1、 表现层实现方式单一
2、 对servlet api依赖严重,属于侵入式设计
Struts2框架架构:
以业务逻辑控制器为目标,创建一个控制器代理,对请求消息进行拦截。
1、 用户发送请求,如xxx.action、xxx.pdf等,核心控制器FilterDispatcher根据请求决定调用合适的action
2、 Webwork的拦截器链对请求进行拦截
3、 回调Action 的execute方法,采用不同的表现层技术响应请求。
Struts2的配置文件
1、 struts.xml
2、 struts.properties
struts2的控制器组件:
1、 FilterDispatcher
2、 业务控制器Action(实际上起作用的业务控制器不是用户定义的Action,而是Action代理,该代理以用户Action为目标)
Struts2与struts1的对比:
1、 Action实现类对比:struts1需要继承一个抽象的基类,struts2只是一个具有execute方法的POJO
2、 Struts1的Action是单例而且必须是线程安全的,struts2为每个请求创建一个Action,么有线程安全的问题。
3、 Struts1对servlet api依赖严重,struts2可以访问servlet api但不依赖。
4、 Struts1使用ActionForm来封装用户请求的参数,struts2直接使用Action的属性封装,struts2使用ModelDriven模式,让开发者使用单独的model来封装用户参数
5、 表达式语言:struts1整合了JSTL,struts2也整合了JSTL,也可以使用更强大的OGNL表达式
6、 Struts1使用标准的jsp机制把对象绑定到视图页面,struts2使用了“ValueStack”技术