Struts1
----------
1、ActionForm实现功能
a、封装请求提交数据传递至Action
b、手动编程实现表单服务器端验证
2、表单验证成功
a、返回null
b、返回ActionErrors,但里面没内容
Struts1流程
--------------
1、提交请求
http://localhost:8888/struts1/login.do
2、请求由ActionServlet截获
web.xml
------------------------------------------------
<servlet-mapping>
<url-patter>*.do</url-pattern>
</servlet-mapping>
a、获取请求ServletPath去除后缀的内容-->"/login"
b、和Struts-config.xml文件内容比对
<ation path="/login">
如无符合内容,显示404错误
如果有,则进一步看该Action是否配置有ActionForm
3、实例化ActionForm以及调用相关方法
a、从指定作用域(request,session)看ActionForm是否实例化,如无则实例化
b、调用setXxx方法,实现传递请求参数值
c、根据配置信息,调用validate()方法
<action validate="true"...
d、如成功,进一步调用Action方法,否则,返回input指定的路径显示
<ation input="/login.jsp"...
4、实例化Action以及调用相关方法
a、调用execute()方法,调用过程中有可能访问ActionForm或者业务逻辑层代码
b、调用结束返回ActionForward对象
5、根据ActionForward对象返回请求响应结果
a、调用ActionForward对象getPath()拿到跳转路径
b、使用forward或者redirect方式跳转
Struts2流程
--------------
1、提交请求
http://localhost:8888/struts1/login.action
2、请求由FilterDispatcher截获
web.xml
------------------------------------------------
<servlet-mapping>
<url-pattern>/*</url-pattern>
</servlet-mapping>
a、获取请求ServletPath去除后缀的内容和/-->"login"
b、和Struts.xml文件内容比对
<ation name="login"
如无符合内容,显示404错误
如果有,则通过代理模式(ActionProxy)调用Action
3、使用ActionProxy调用Action方法
a、通过Action在struts.xml文件中拦截器的配置情况调用拦截器
<action..
<interceptor-ref name=""/>
</action>
b、拦截器有可能通过调用Action对象的setXxx()方法实现传递请求参数
c、拦截器有可能通过调用Action对象的validate()方法实现表单验证
如成功,进一步调用 Action对象execute方法,否则,返回input名称的result指定的路径显示
<result name="input">/login.jsp</result>
4、执行execute()方法
a、调用execute()方法,调用过程中业务逻辑层代码
b、调用结束返回字符串对象
5、根据字符串对象返回请求响应结果
----------
1、ActionForm实现功能
a、封装请求提交数据传递至Action
b、手动编程实现表单服务器端验证
2、表单验证成功
a、返回null
b、返回ActionErrors,但里面没内容
Struts1流程
--------------
1、提交请求
http://localhost:8888/struts1/login.do
2、请求由ActionServlet截获
web.xml
------------------------------------------------
<servlet-mapping>
<url-patter>*.do</url-pattern>
</servlet-mapping>
a、获取请求ServletPath去除后缀的内容-->"/login"
b、和Struts-config.xml文件内容比对
<ation path="/login">
如无符合内容,显示404错误
如果有,则进一步看该Action是否配置有ActionForm
3、实例化ActionForm以及调用相关方法
a、从指定作用域(request,session)看ActionForm是否实例化,如无则实例化
b、调用setXxx方法,实现传递请求参数值
c、根据配置信息,调用validate()方法
<action validate="true"...
d、如成功,进一步调用Action方法,否则,返回input指定的路径显示
<ation input="/login.jsp"...
4、实例化Action以及调用相关方法
a、调用execute()方法,调用过程中有可能访问ActionForm或者业务逻辑层代码
b、调用结束返回ActionForward对象
5、根据ActionForward对象返回请求响应结果
a、调用ActionForward对象getPath()拿到跳转路径
b、使用forward或者redirect方式跳转
Struts2流程
--------------
1、提交请求
http://localhost:8888/struts1/login.action
2、请求由FilterDispatcher截获
web.xml
------------------------------------------------
<servlet-mapping>
<url-pattern>/*</url-pattern>
</servlet-mapping>
a、获取请求ServletPath去除后缀的内容和/-->"login"
b、和Struts.xml文件内容比对
<ation name="login"
如无符合内容,显示404错误
如果有,则通过代理模式(ActionProxy)调用Action
3、使用ActionProxy调用Action方法
a、通过Action在struts.xml文件中拦截器的配置情况调用拦截器
<action..
<interceptor-ref name=""/>
</action>
b、拦截器有可能通过调用Action对象的setXxx()方法实现传递请求参数
c、拦截器有可能通过调用Action对象的validate()方法实现表单验证
如成功,进一步调用 Action对象execute方法,否则,返回input名称的result指定的路径显示
<result name="input">/login.jsp</result>
4、执行execute()方法
a、调用execute()方法,调用过程中业务逻辑层代码
b、调用结束返回字符串对象
5、根据字符串对象返回请求响应结果