SSH框架遵循了设计模式的一个重要原则:对修改关闭,对扩展开放。
基本概念:
一、JavaBean:可以看成一个独立的,可以重复应用的组件,比如有数据库DAO操作。javabean是一个java类,可以是有用户界面的,或者纯粹逻辑操作的。前者可以是一个button,后者可以是对数据库某个表的操作类。
它并没有一定要继承的接口或者基类,内部提供了属性、方法、事件三个要素。
为了能让使用这个bean的应用程序构建工具(比如JSP引擎)知道这个bean的属性和方法,只需在类的方法命名上遵守以下规则:
1. 如果类的成员变量的名字是xxx,那么为了更改或获取成员变量的值,即更改或获取属性,在类中可以使用两个方法:
getXxx(),用来获取属性xxx。
setXxx(),用来修改属性xxx.。
2. 对于boolean类型的成员变量,即布尔逻辑类型的属性,允许使用”is”代替上面的”get”。
3. 类中访问属性的方法都必须是public的,一般属性是private的。
4. 类中如果有构造方法,那么这个构造方法也是public的并且是无参数的。
当在xml中定义好bean之后,Spring框架会通过读取相应的配置文件中的内容,并根据这些配置自动加载(创建javabean对象)并配置该对象的属性。
使用流程:
1.定义用到的bean
2.定义action,并却注册action
3.指定装配文件。applicationContext-*.xml
二、Hibernate与Spring、Struts2
Hibernate提供了数据库记录和java对象的映射关系,也就是说每张表都有一个java类与之对应,当对这个类中的函数进行操作的时候,对应相应的sql语句。哦,他叫hql。
建立流程:
1.建立一个与表A对应字段的beanA。
2.建立一个A.hbm.xml文件,对每个字段进行映射。
3.建立一个hibernate.cfg.xml文件,并且配置好数据库连接属性,并将A.hbm.xml加入
4.建立一个bean,其中包含对beanA的一些常见的增删功能等。(一般命名为×××DAO),比如adduser、deluser等操作。
5.与执行逻辑的bean进行搭配使用。(一般明明为×××Service,不能直接访问数据库)
6.建立一个处理前端请求的处理类,比如××ACTION,××Cmd,与前面的bean进行调用。
三、Servlet
Servlet是运行在Web服务器上的Java程序,用于响应客户请求。
Servlet通常继承自GenericServlet类或HttpServlet类。
一个Servlet通常在web容器加载的时候初始化,或者在第一个用户请求到来的时候初始化。一个Servlet通常服务于多个客户,所以得考虑同步问题。同时出错的话长时间会导致被容器给destroy掉。
Filter:过滤器,生命周期与Servlet类似,用于过滤请求处理的次序和处理者。
那么Servlet是被谁调用,又是什么时候被调用的呢?下面出场的就是这位老兄了。
四、Tomcat
tomcat是由一对组件集合而成的,如Server、Service、Connector等。可以简单的理解为管理一堆小弟的容器。
当tomcat启动时,会查看当前有哪些servlet可以注册。
当用户提交请求时,web服务应用如apache会将这些请求发送给这个容器,然后由tomcat来决定让谁来处理。由容器向servlet提供HTTP请求和响应,而且是由容器调用servlet的方法(doGet()和doPost())。容器运行多个servlet线程来处理对同一servlet的多个请求。(对每个请求分配一个线程,而不是每个客户)
tomcat这个容器的任务很艰巨,它起着管理servlet生命周期,以及和服务器通信的功能。
1)通信支持。利用容器提供的方法,web服务器能轻松的与servlet进行通信。
2)生命周期管理。容器控制着servlet的生与死。它会负责加载类,实例化,初始化,调用servlet的方法以及使servlet能够被垃圾回收。
3)多线程支持。容器会自动的接受每个servlet请求,创建一个新的java线程。针对每个请求,如果servlet已经运行完相应的HTTP方法,线程就会结束。但是我们同时也得考虑线程的安全性。
所以Servlet一生中的三大重要时刻
1)init()方法:在servlet实例被创建后调用,可以覆盖此方法做一些初始化的工作,比方说得到一个数据库连接。
2)service()方法:当客户请求到来时,容器会创建一个新的线程,调用servlet的service()方法。servlet的一生基本都在这里度过。我们一般不要覆盖此方法。
3)doGet或者doPost()方法:service方法根据请求的HTTP方法,来调用doGet()或者doPost()方法。我们在开发servlet时肯定要覆盖此方法。每次运行doGet()或者doPost()方法,它都在一个单独的线程中。
好吧。今天到此为止,作为一个小白,我要慢慢学习。