自己总结的基于ssh框架的网站的简单执行流程

一、容器的启动(项目发布到服务器)

容器(此处以tomcat为例)启动,会去读取web.xml文件,该文件的核心配置如下:


 
  org.springframework.web.context.ContextLoaderListener
 

 
 
  contextConfigLocation
  classpath:applicationContext.xml
 

 
 
 
  struts2
  org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
 

 
 
  struts2
  /*
  REQUEST
  FORWARD
 

他首先会去读取标签的值,此处该值的作用是让容器去读取类路径下的appliContext.xml文件(因为容器默认读取的是编译路径下的该文件),并加载该文件,加载该文件就意味着将该文件配置中的各个bean实例化(前提是scope='singleton'),之后会去读取标签的值,加载spring监听器,在然后才会去读取标签的值,将一系列的监听器初始化到内存。至此,项目的发布算是完成,需要初始化的各个值都已经被初始化到内存,等待外部程序的访问。


二、访问请求的到来

假设我们有一个访问请求http://localhost:8080/user_login.action(以本地程序为例),该访问请求会去查询对应的struts.xml文件,找到其中的user_login的action(此处是通配符的配置),struts.xml的部分配置如下:



/WEB-INF/jsp/regist.jsp
/WEB-INF/jsp/regist.jsp
/WEB-INF/jsp/login.jsp
/WEB-INF/jsp/login.jsp
index
index
/WEB-INF/jsp/regist.jsp

然后根据该文件会去找userAction的类,并去调用里面的login方法,根据login方法的返回值内容进行相应的跳转。(例如:如果返回值为login,则会跳转到/WEB-INF/jsp目录下的login.ksp页面)。

三、关于调login方法要执行的大体流程

当调用userAction中的login方法时,一般会执行以下的内容:首先会去调用userService类下的login方法,然后userervice会去调用uerDao下的login方法,而userDao的login方法调用的一般是hibernate提供的访问数据库的方法。hibernate实现的是对象-关系的映射(即把数据库表和一个java的pojo进行映射),userDao只是负责调用hibernate提供的方法即可,而在servece层注意要加事务的控制。最后,会返回一个action需要的值。然后action根据该值进行相应的处理(包括页面的跳转,将相应的值存储到值栈中等)。

四。对请求的响应

在跳转到的页面中,一般使用struts2的标签进行相应的处理,至此一个简单的ssh项目的访问就已经完成。

当然,这只是其中的很简短的流程的介绍,至于每一部分的详细的介绍,请自己参照相应框架的说明文档进行学习。


你可能感兴趣的:(SSH框架)