SSH三大框架学习

SSH三大框架学习

目录:

1、Java Web框架简述:

2、Struts框架中的MVC组件:

3、Spring的控制反转(IOC)和依赖注入(DI):

4、数据持久层框架Hibernate:

5、Java三层架构:

6、SSH示意图:

7、Java Web三大组件:

8、Tomcat是怎么管理Servlet的?

9、Session和Cookies的区别?

10、一个Tomcat服务器可以有多个应用,一个应用只有一个对应的application,叫做ServletContext。

11、一个Servlet可以对应多个servletMapping。

12、Servlet单实例多线程:

13、JavaEE的四大组件:


1、Java Web框架简述:

答:(1)框架是整个系统或系统的一部分可重用设计,由一组抽象的类及其实例间的相互作用方式组成。

(2)SSH框架:基于MVC模式的Struts框架,基于IOC模式的Spring框架,基于对象/关系映射的Hibernate框架。

 

2、Struts框架中的MVC组件:

答:(1)视图:视图部分主要由JSP页面组成,其中没有流程逻辑、业务逻辑和模型信息,只有标记。Struts自身包含了一组标记库(TagLib),这也是Struts的精华之一,灵活运用它们可以简化JSP页面的代码,提高开发效率。

(2)控制器:Struts中的Controller主要是其自身提供的ActionServlet。ActionServlet接收所有来自客户端的请求并根据配置文件(struts-config.xml)中的定义将控制转移到适当的Action对象。

(3)模型:Struts没有定义具体Model层的实现,Model层通常是和业务逻辑紧密相关的,有持续化的要求。目前在商业领域和开源世界,都有一些优秀的工具可以为Model层的开发提供便利。

 

3、Spring的控制反转(IOC)和依赖注入(DI):

答:(1)控制反转:Spring容器作为超级大工厂,负责创建、管理所有Java对象,这些对象成为Bean。程序无需使用new调用构造器去构造对象,将程序控制权由程序代码到外部容器的转移。

(2)依赖注入:Spring容器使用“依赖注入”的方式来管理容器中Bean之间的依赖关系。当调用者需要调用被依赖对象的方法时,调用者无须主动获取被依赖对象,只要等待Spring容器注入即可。

参考文献:《轻量级Java EE企业应用实战(第4版)》 李刚编著 电子工业出版社 P535-537

 

4、数据持久层框架Hibernate:

答:(1)Hibernate是目前最为流行的O/R Mapping框架,它在关系型数据库和Java对象之间做了一个自动映射,使得程序员可以以非常简单的方式实现对数据库的操作。

(2)Hibernate通过对JDBC的封装,向程序员屏蔽了底层的数据库操作,使程序员专注于面向对象程序的开发,有助于提高开发效率。程序员访问数据库所需要做的就是为持久化对象编制xml映射文件。

(3)Hibernate有自己的面向对象的查询语言HQL,HQL支持SQL Server,MySQL,Oracle等,是目前应用最广泛的O/R映射工具。Hibernate为快速开发应用程序提供了底层的支持。

 

5、Java三层架构:

答:持久层、业务层、表现层

(1)持久层:dao层,用来固化数据,对数据库的各种操作

(2)业务逻辑层:service层,实现整体的业务逻辑,以及各种调用dao层的业务操作,如前台获得了数据,逻辑层去解析、校验等操作。

(3)表现层:action层,负责选择展示不同的UI界面,比如swing、jsp、html,其中action层不要涉及业务逻辑。

 

6、SSH示意图:

答:表现层用Struts,业务层用Spring,持久层用Hibernate

 

图6.1 Java Web开发关系图

此图有瑕疵:Servlet应为Tomcat进行管理,而不是Spring管理的。

 

7、Java Web三大组件:

答:Listener、Filter、Servlet

(1)Listener:在监听器的对象作用领域中一般涉及监听主体(监听器)、监听客体(事件源)、监听事件(事件)。

①ServletCOntext

生命周期监听:ServletContextListener

属性监听:ServletContextAttributeListener

②HttpSession

生命周期监听:HttpSessionListener

属性监听:HttpSessionAttributeListener

③ServletRequest

生命周期监听:ServletRequestListener

属性监听:ServletRequestAttributeListener

④JavaBean

感知监听:HttpSessionBindingListener

钝化活化监听:HttpSessionActivationListener

前3个都是域对象监听器,需要在web.xml中配置注册。其中ServletContext域的监听器使用的最多。域对象监听器主要有两个作用:a)监听域对象的“创建”与“销毁”;b)监听域对象中属性的增删改;

第4个不是给session添加,而是给Bean添加。即让Bean类实现监听器接口,然后再把Bean对象添加到session域中。不需要在web.xml中注册。

(2)钝化:对象从内存保存到硬盘

活化:对象从硬盘调入内存。

(3)Filter:在用户访问某个目标资源之前,对访问的请求和响应进行拦截,实现Web容器对某资源的访问前截获进行相关的处理,在某资源向Web容器返回响应前截获进行处理。

(4)Servlet:实现了Servlet接口的Java程序,称之为Servlet,用于开发一个Java程序向浏览器输出数据。

 

8、Tomcat是怎么管理Servlet的?

答:Tomcat是Servlet容器,同时也是轻量级的Web服务器。Tomcat作为Web服务器时,主要负责http传输等工作,作为Servlet容器时,主要负责解析Request,生成ServletRequest,ServletResponse,将其传给响应的Servlet,调用service方法,再将Servlet的响应结果返回。

 

9、Session和Cookies的区别?

答:(1)Session是在服务器端存储的

Cookies是在本地用户端存储的

(2)比如:

①登录状态:要有session和cookies

②只存cookies,比如一个购物车。

③不要把大的数据保存在session上,因为session的级别比request高。

(3)当程序需要为某个客户端的请求创建一个session时,服务器首先检查这个客户端的请求里是否已包含了一个session标识(称为session id),如果已包含则说明以前已经为此客户端创建过session,服务器就按照session id把这个session检索出来使用(检索不到,会新建一个),如果客户端请求不包含session id,则为此客户端创建一个session并且生成一个与此session相关联的session id,session id的值应该是一个既不会重复,又不容易被找到规律以仿造的字符串,这个session id将被在本次响应中返回给客户端保存。保存这个session id的方式可以采用cookie,这样在交互过程中浏览器可以自动的按照规则把这个标识发送给服务器。一般这个cookie的名字都是类似于SEEESIONID。但cookie可以被人为的禁止,则必须有其他机制以便在cookie被禁止时仍然能够把session id传递回服务器。

 

10、一个Tomcat服务器可以有多个应用,一个应用只有一个对应的application,叫做ServletContext。

 

11、一个Servlet可以对应多个servletMapping。

 

12、Servlet单实例多线程:

答:Servlet容器默认是采用单实例多线程的方式处理多个请求的。

(1)当web服务器启动的时候(或客户端发送请求到服务器时),Servlet就被加载并实例化(只存在一个Servlet实例);

(2)容器初始化Servlet主要就是读取配置文件(例如tomcat,可以通过servlet.xml的<Connector>设置线程池中线程数目,初始化线程池通过web.xml初始化每个参数值等等。

(3)当请求到达时,Servlet容器通过调度线程(Dispatchaer Thread) 调度它管理线程池中等待执行的线程(Worker Thread)给请求者;

(4)线程执行Servlet的service方法;

(5)请求结束,放回线程池,等待被调用;

(注意:避免使用实例变量(成员变量),因为如果存在成员变量,可能发生多线程同时访问该资源时,都来操作它,照成数据的不一致,因此产生线程安全问题)

优势:

①Servlet单实例,减少了产生Servlet的开销;

②通过线程池来响应多个请求,提高了请求的响应时间;

③Servlet容器并不关心到达的Servlet请求访问的是否是同一个Servlet还是另一个Servlet,直接分配给它一个新的线程;如果是同一个Servlet的多个请求,那么Servlet的service方法将在多线程中并发的执行;

④每一个请求由ServletRequest对象来接受请求,由ServletResponse对象来响应该请求;


13、JavaEE的四大组件:

答:applet(客户端组件几乎不用)、JSP、EJB(业务组件,几乎不用了),Servlet。


  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值