zoukankan      html  css  js  c++  java
  • struts2 之 【struts2简介,struts2开发步骤,struts2详细配置,struts2执行流程】

    入门框架学习避免不了的问题:

    1. 什么是框架? 简单的说,框架就是模板,模子,模型。就是一个可重用的半成品。

    2. 如何学习框架? 学习框架其实就是学习规则,使用框架就是遵循框架的规则,框架是可变的 和 不可变的部分组成,学习框架就需要把 什么可变什么不可变搞清楚。

    3. 为什么使用 struts2 框架:聊这个问题先来聊一聊 Web的开发模式, model1 和 model2 模式。                                       

    4. model1模式:jsp+javaBean开发。





    优点:执行效率高,代码比较少,开发效率比较高。适合小型项目。

    缺点:不好维护,扩展麻烦,展示代码和java混合导致整体比较混乱。

     

     

    model2模式:jsp+servlet+javaBean开发-----MVC        M:model-->javaBean    V:view-->jsp    C:controller-->servlet




    优点:分工明确,并且分层合理。降低了耦合,适合大型项目,维护方便,扩展容易。

    缺点:开发效率低,执行效率比model1低。

    了解完这些,我们再来聊struts2,它就是一个典型的mvc框架。

    5. 对于一个mvc框架应该掌握哪些知识:

      (1)将请求映射到一个java类的方法上。

      (2) 如何将页面中的数据提交到java类中。

      (3)如何将处理结果展示到页面。

      (4)如何进行页面跳转

    6.struts2介绍:

      (1)Struts2=struts1+webwork。

      (2)在struts2之前就已经有很多mvc框架。当时Strtus1是主流的mvc框架。随着技术发展,struts1不支持新的表示层技术。Strtus1和webwork整合而来struts2。Struts2的核心是webwork,是一个轻量级的mvc框架,是一个基于请求的mvc框架。

      (3)轻量级框架占用资源少,使用方便,不具有侵入性。

      (4)没有侵入性指使用一个框架,不去集成或者实现提供的类或接口。

    7. 使用struts2开发程序步骤:

      (1)新建web项目

      (2)添加index.jsp页面

      (3)添加struts需要的jar包

      (4)在web.xml中添加struts2的核心过滤器(具体配置 见下文)

       ( 5)新建一个Action类,该类用于处理请求

      (6)在src下创建struts.xml,进行配置。(具体配置 见下文)

    8. struts2的具体配置:

    Web.xml 中的配置:

    1 <fileter>
    2     <fileter-name>struts2</fileter-name>  
    3    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    4 </fileter>
    5 <filter-mapping>
    6       <filter-name>struts2</filter-name>
    7       <url-pattern>/*</url-pattern>
    8 </filter-mapping>
    <!-- 作用:接管请求。将请求交给struts2来处理 -->
    <!-- 注意:不同版本的核心过滤器不一样
    2.1以前是org.apache.struts2.dispatcher.FilterDispatcher
    2.1以后org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
    -->

    struts.xml配置文件,该配置文件位于src下,文件名不能被更改。

    <struts>
    <!-- 
            constant 常量配置
            struts.devMode 设置是否是开发模式
         -->
        <constant name="struts.devMode" value="true" />
        <!-- 设置编码 -->
        <constant name="struts.i18n.encoding" value="utf-8"/>
        <!-- 设置action的扩展名 -->
        <constant name="struts.action.extension" value="action,,do"/>
        <!-- 
            package表示一个包每个包下可以配置多个action  包的作用主要用来区分不同模块的配置
            不同模块配置在不同的包下
            name 是包名  在项目下唯一 通常使用模块名做为包名
            extends 表示继承 必须直接或者间接继承struts-default
            namespace 表示命名空间  命名空间和请求名直接相关  
            请求名=项目发布路径名+namespace名+action名
            namespace名称通常也和模块名相关
         -->
        <package name="default" extends="struts-default" namespace="/user">
            <!-- action 配置请求名 一个action表示对一个请求的处理
                name在同一个包下唯一 会作为请求名称 该名称会自动将请求的扩展名去掉,所以不用配置扩展名
                class 配置处理请求的类的完全限定名=包名+类名。如果不配置class默认由
                com.opensymphony.xwork2.ActionSupport来处理。
                method 配置处理方法的名称  默认由execute方法处理
                在struts2中处理方法  必须是 public的,返回值必须是String。
             -->
            <action name="hello" class="cn.sxt.action.HelloAction" method="hello">
                <!-- result配置的结果集处理  每个action中可以及配置多个result 
                    name表示结果集名称 和处理方法的返回值进行匹配 默认是success;
                    type表示结果集类型
                        dispatcher 转发-默认
                        redirect 重定向
                        redirectAction 重定向到另外一个action
                        stream 流
                        chain  表示action链
                    result中填写要跳转的页面的路径
                -->
                <result name="success" type="dispatcher">/index.jsp</result>
            </action>
        </package>
        <!-- 
            include用于添加其他配置文件,在团队开发中使用
            不同模块一般使用不同的配置文件,在总的配置文件中加入即可
         -->
        <include file="user.xml"></include>
    </struts>

    9. struts2的执行流程:

      浏览器发起请求--->服务器接收并处理请求--->项目的web.xml 中匹配过滤器--->匹配是否有对应的Action--->生成对应的Action对象--->调用action对象的处理方法--->返回结果。

    详细流程图:

        

     

     

     

     

  • 相关阅读:
    微信JS SDK Demo
    微信jssdk常见错误及解决方法
    多机定时任务处理
    python zip压缩文件 并移动到指定目录
    Nginx + Uswgi + Django的部署
    pycharm 安装第三方库报错:AttributeError: 'module' object has no attribute 'main'
    zabbix监控
    转:老张喝茶 教你同步异步 阻塞与非阻塞
    odoo开发笔记 -- 多对多字段追加数据
    xml文件对比工具推荐:Altova XMLSpy 2013
  • 原文地址:https://www.cnblogs.com/forever2h/p/6708148.html
Copyright © 2011-2022 走看看