自己总结的基于ssh框架的网站的简单执行流程
一、容器的启动(项目发布到服务器)容器(此处以tomcat为例)启动,会去读取web.xml文件,该文件的核心配置如下: org.springframework.web.context.ContextLoaderListener contextConfigLocation classpath:applicationContext.xml
一、容器的启动(项目发布到服务器)
容器(此处以tomcat为例)启动,会去读取web.xml文件,该文件的核心配置如下:
<!-- 配置Spring的核心监听器 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<!-- 配置Struts2的核心过滤器 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
他首先会去读取<context-param>标签的值,此处该值的作用是让容器去读取类路径下的appliContext.xml文件(因为容器默认读取的是编译路径下的该文件),并加载该文件,加载该文件就意味着将该文件配置中的各个bean实例化(前提是scope='singleton'),之后会去读取<listener>标签的值,加载spring监听器,在然后才会去读取<filter>标签的值,将一系列的监听器初始化到内存。至此,项目的发布算是完成,需要初始化的各个值都已经被初始化到内存,等待外部程序的访问。
二、访问请求的到来
假设我们有一个访问请求http://localhost:8080/user_login.action(以本地程序为例),该访问请求会去查询对应的struts.xml文件,找到其中的user_login的action(此处是通配符的配置),struts.xml的部分配置如下:
<!-- 配置用户模块的Action -->
<action name="user_*" class="userAction" method="{1}">
<result name="registPage">/WEB-INF/jsp/regist.jsp</result>
<result name="input">/WEB-INF/jsp/regist.jsp</result>
<result name="loginPage">/WEB-INF/jsp/login.jsp</result>
<result name="login">/WEB-INF/jsp/login.jsp</result>
<result name="loginSuccess" type="redirectAction">index</result>
<result name="quit" type="redirectAction">index</result>
<result name="checkcodeFail">/WEB-INF/jsp/regist.jsp</result>
</action>
然后根据该文件会去找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项目的访问就已经完成。
当然,这只是其中的很简短的流程的介绍,至于每一部分的详细的介绍,请自己参照相应框架的说明文档进行学习。
更多推荐
所有评论(0)