一、struts1工作原理
1.ActionServlet核心控制器会拦截所有*.do的请求
。
三、Action是不是线程安全的?如果不是 有什么方式可以保证Action的线程安全?如果是,说明原因
1.ActionServlet核心控制器会拦截所有*.do的请求
2.从struts-config.xml中找到用户请求的Action
3.通过struts-config.xml中的配置再去找这个Action对应的ActionForm,并实例化
4.把用户填写的数据自动填充到ActionForm中(调用ActionForm中的setXX()方法填充)
5.同时把ActionForm放入到指定的范围中(request,session)
6.然后把请求转发给Action
7.Action获取ActionForm中的值然后调用业务逻辑层实现功能
8.在通过ActionMapping查找Actionforward实现转发;
二、
Action和ActionForm是单例的吗?Action是线程安全的吗?3.通过struts-config.xml中的配置再去找这个Action对应的ActionForm,并实例化
4.把用户填写的数据自动填充到ActionForm中(调用ActionForm中的setXX()方法填充)
5.同时把ActionForm放入到指定的范围中(request,session)
6.然后把请求转发给Action
7.Action获取ActionForm中的值然后调用业务逻辑层实现功能
8.在通过ActionMapping查找Actionforward实现转发;
Struts1的Action是单例模式,非线程安全的,ActionForm是多实例
三、Action是不是线程安全的?如果不是 有什么方式可以保证Action的线程安全?如果是,说明原因
Struts1 Action是单例模式,因为仅有Action的一个实例来处理所有的请求。
补充:交给spring管理的话可以通过设置scope为prototype来为每次请求创建一个action。 用ThreadLocal控制也可以。
保证Action的线程安全
1、实现 SingleThreadModel 接口
2、同步对共享数据的操作
3、避免使用实例变量
补充:交给spring管理的话可以通过设置scope为prototype来为每次请求创建一个action。 用ThreadLocal控制也可以。
四、Struts提供了几个标签库?都是什么标签库?
struts的标签库有:html标签、bean标签、tiles标签、logic标签、nested标签;
html标签:替代html标签
bean标签:访问javabean;
logic标签:逻辑控制标签;
tiles标签:创建tiles样式的页面;
nested标签:具有html、bean、logic标签的所有功能,允许嵌套使用;
五、Tiles框架是什么?
六、为什么使用struts
注意:
只是小弟最近的面试总结,如有不当,欢迎拍砖!
待续....
struts的标签库有:html标签、bean标签、tiles标签、logic标签、nested标签;
html标签:替代html标签
bean标签:访问javabean;
logic标签:逻辑控制标签;
tiles标签:创建tiles样式的页面;
nested标签:具有html、bean、logic标签的所有功能,允许嵌套使用;
五、Tiles框架是什么?
六、为什么使用struts
注意:
JSP默认是以多线程方式执行的,
struts的action是非线程安全的。
不要在action中定义实例变量。
不要在action中定义实例变量。
只是小弟最近的面试总结,如有不当,欢迎拍砖!
待续....