sturts1基本图示:web客户端浏览器发送请求到ActionServlet(前端控制器),ActionServlet根据struts-config.xml配置的信息分发到不同的Action中,不同的Action控制不同的业务逻辑,再分别调用不同Model,获得结果返回。Action再把信息返回给ActionServlet,ActionServlet根据返回的信息(成功还是失败等等)转发到不同的jsp。
表单数据放入到ActionForm中,可以省去数据类型转换相关的工作。ActionForm其实就是一个JavaBean类。里面有表单对应的基础属性以及get、set方法。使用ActionForm所有的表单数据都在其中了。
LoginForm:
{
private int age; //这个age其实是可以随便写的,或者叫 nianling。
setAge(int age){ //这里的set后面的必须跟表单中的<input typt="text" name="age">一致。
this.age =age;
}
}
配置Struts:
1、 拷贝Struts相关的jar文件到WEB-INF/lib下
2、在web.xml中配置 ActionServlet
3、提供struts-config.xml文件。
在struts-config.xml文件配置中,主要 进行配置
<form-beans>
<form-bean name="calculForm" type="com.liushuai.struts1.CalculActionForm"> </form-bean>
</form-beans>
<action-mappings>
<action path="/cal" //Action请求的相对路径,和form那里的一致
type="com.liushuai.struts1.CalculAction" //Action对应的全路径。
name = "calculForm" //该Action绑定的ActionFormBean,与<form-bean>中name一致。
scope="request" > //指定ActionForm Bean的作用域(session和request),缺省为session。(可选);
</action>
<forward name="success" path="/success.jsp"></forward>
<forward name="error" path="/error.jsp"> </forward>
<action-mappings>
validate:若为true,则会调用ActionForm的validate()方法或调用validate验证,否则不调用,缺省为true(可选)。
Struts我们主要写的就是Action和ActionForm。
actionMapping 是在ActionServlet一初始化的时候创建的,根据配置信息可以从中读取到路径等各方面的信息。默认情况下,ActionServlet是在Tomcat一启动的时候就创建的,可以进行设置。
根据Action的完成类名称,到Map中去找,如果存在就返回Action对象,否则根据Action类的完整名称采用反射去创建,再将创建好的Action放到Map中,所以Struts1的Action类是单实例的(只有一个实例),存在线程安全问题。