Struts1.x(三)

来源:互联网 发布:laravel路由源码 编辑:程序博客网 时间:2024/05/02 01:52

 组件:

        ActionServlet:继承于HttpServlet

        Action:初始化不是在读取配置文件时(服务器启动时),而是用户第一次发出请求时。

                       每个Action只初始化一次。因为所有请求共享一个action实例,所以它是线程不安全的,我们使用时需注意。

                       注意不要使用实例变量和静态变量共享只是针对某个请求的数据。但利用实例变量可以设计计数器。

                       注意资源操作的同步性。(如:使用synchronized)

        ActionMapping:对应配置文件中<action></action>中的内容,可以使用ActionMapping中的getName(),getPath()等方法获取。

                                      其中setPath()等方法不让使用,在struts-config中已有配置时。

        ActionForward:对应配置文件中<forward></forward>,内容有name逻辑转向路径和path物理转向路径。

                                     redirect(boolean),true时表示HttpServletResponse.sendRedirect(),容器外跳转,绝对路径。

                                                                    false时(默认)表示RequestDispatcher.forward(),容器内跳转,相对路径。

        ActionForm:先查找Action,再查找Form,看Action配置中是否有name属性<action name=""></action>

                                根据范围和名字查找Form(范围Scope,默认为session,还有一个request)

                                没有找到则实例化一个Form(调用构造方法)并保存到一个范围内,如果有直接使用Form

                                填充Form前,先调用Reset方法使Form回到默认值

                                然后使用request.getParameter()从客户端取得参数赋给Form

                                如果<action validate="yes"></action>,则需要校验Form中的数据是否合法,在派发给Action以前

                                校验成功则派发请求到Action,并带上Form的消息。校验失败转向错误页面<action input="">中指定。

         以上都是由ActionServlet完成。                       

 

MVC:

        1.The Model: System State and Business Logic JavaBeans

        2.The View: JSP Pages and Presentation Components

        3.The Controller: ActionServlet and ActionMapping

 

注意事项:

ActionForm中的无参构造方法必须有。

ActionServlet调用Form中的setter方法是对应jsp页面中传入属性名(name中的值)的标准方法。如:name="studentName",Form中的setter方法必需是setStudentName(),和Form中的相应变量,setter方法中的变量无关。

原创粉丝点击