zoukankan      html  css  js  c++  java
  • 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);

                }

          }

         

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

  • 相关阅读:
    20201120-1 每周例行报告
    20201112-1 每周例行报告
    20201105-1 每周例行报告
    20201029-1 每周例行报告
    20201022-1 每周例行报告
    20201015-3 每周例行报告
    20201008-1 每周例行报告
    20200924-1 每周例行报告
    使用代理服务器的方式在一个端口上运行多个服务
    只出现一次的数字
  • 原文地址:https://www.cnblogs.com/feifeihu/p/2638426.html
Copyright © 2011-2022 走看看