struts1简介

什么是框架?(Framework)

 

     框架是软件的半成品。用来解决以下几个问题:

      1、设计模式问题——struts实现了MVC—Model2模式

      2、代码重用

 

 

*****************************************************

一、Struts框架属于哪层技术?主要解决什么问题?

 

      (1).Struts属于WEB层技术,主要用于替代Servlet。

      (2).Struts主要用来解决一下几个问题:

            1、获取用户提交的数据

            2、对数据进行校验

            3、国际化的处理

            4、跳转

            5、转发与重定向

            6、页面的数据展示

****************************************************

二、Struts1框架由哪些部分组成?

 

      1.jar包(在lib中)

      2.一批文件(包括:struts-config.xml,tld文件-标签描述文件,validator-roles.xml 验证框架的配置文件),Struts1.3以后tld文件被添加入了jar包中

**************************************************** 

 

三、如何用IDE工具在项目中加入Struts框架?

      在向导中设置:Struts config path:配置config文件路径:默认:/WEB-INF/struts-config.xml

                  Struts specification:选Struts版本信息

                  ActionServlet name:为action

                  URL pattern:为主控制器设置过滤哪些资源

                  Base package for new classes:为(国际化?)资源文件创建包

                  Default application resources:创建全局的资源文件默认名字:com.yourcompany.ApplicationResources.可以更改

**************************************************** 

四、Struts1的主控制器是什么?作用是什么? 如何配置?

 

 

      Struts1的主控制器是个自启动的Servlet,他的配置如下:

            在项目的WEB-INF中的web.xml文件中:

            <servlet>

                  <servlet-name>action</servlet-name>

                  <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>

 

                  <init-param>                        <!--为主控制器设置启动参数,加载配置文件,并对其进行解析 -->

                   <param-name>config</param-name>    <!--当需要多个配置文件时,在多个文件中间用逗号隔开 -->

                   <param-value>/WEB-INF/struts-config.xml</param-value>

                  </init-param>

 

                  <init-param>

                         <param-name>debug</param-name>

                   <param-value>3</param-value>

                  </init-param>

 

                  <init-param>

                     <param-name>detail</param-name>

                         <param-value>3</param-value>

                    </init-param>

 

                   <load-on-startup>0</load-on-startup>     <!--该主控制器设置为自启动,参数表示启动级别最高。0 -->

            </servlet>

 

 

            <servlet-mapping>

                  <servlet-name>action</servlet-name>

                  <url-pattern>*.do</url-pattern>           <!--默认过滤所有.do结尾的请求 -->

            </servlet-mapping>

**************************************************** 

五、Struts1的配置文件可以有几个?     

           

      可以有过个。多个配置文件之间以,间隔。

 

**************************************************** 

六、Action的作用?如何配置Action?

 

      (1).Action用于替代Servlet,继承自org.apache.struts.action.Action。它继承自HttpServlet。

      (2).在向导中设置:Path:用于配置前台表单提交的资源地址。不需要后缀即:.do。

                     例:前台请求:Hello.do 在此配置:/Hello。必须反斜杠开始。

                  Superclass:选择action继承的超类。

                  Action Type:你自定义的action的全名。例如:com,bluedot.web.actions.HelloAction

      (3).struts-config.xml中的配置:

**************************************************** 

七、ActionMapping的作用?

 

**************************************************** 

八、ActionForm的作用?

     

****************************************************

九、ActionForward的作用?

 

****************************************************

十、主控制器的原理?ActionServlet的工作内容

      class ActionServlet excends HttpServlet{

 

            public void init(){

                  //容器启动时候,解析配置文件。Struts-config.xml

                    将数据存入List中。

                  List<ActionConfig> list= parse();

                  ServletContext sct=getServletContext();

                  sct.setAttribute("list",list);

            }

            //  doget dopost方法,在该方法中根据配置文件调用execute()方法

            public void doGet(HttpServletRequest request,HttpServletResponse response) throws Exception{

                  ServletContext sct=getServletCont();

                  List list=<list>sct.getAttribute("list",list);

                  for(ActionConfig config:list){

                        String uri=request.getRequestURI();   //该字符串为:Struts1Demo/Hello.do

                        //用请求的地址与ActionConfig中的数据进行比较,如果正确操纵对象的execute方法

                        if(uri.equals(request.getContextPath()+config.getPath()+".do")){

                              String type =config.getType();

                              Action action = Class.forName().newInstance();

                        ActionForward f=action.execute(mapping,form,request,response);

                        }

                        //  根据返回值来进行跳转,该步骤由主控制器来完成。

                        if(f.isRedirect){

                        //  如果是重定向方式则

                        response。sendRedirect(f.getURI());

                        }else{

                        request.getRequestDispatcher(f.getURI).forward(request,response);

                        }

                  }

            }

            public void doPost(HttpServletRequest request,HttpServletResponse response) throws Exception{

                  doget(request,response);

            }

      }

     

 

****************************************************    

posted @ 2012-08-14 17:42  feifeihu  阅读(898)  评论(0编辑  收藏  举报