美文网首页
Struts2----配置、运行机制

Struts2----配置、运行机制

作者: shallwego_ | 来源:发表于2017-03-24 17:47 被阅读0次

    简单来说,Struts2的作用就是把请求和结果分开,即提高可扩展性,使得更加灵活。

    一、struts2的基本配置

    新建一个web project项目,下载struts2,配置Strusts2环境。
    • 1配置struts.xml文件。
      将struts-2.1.6目录中的apps中的struts2-blank.war文件解压,打开WEB-INF---------classes--------struts.xml文件拷贝到新建项目的src目录下。

    【struts-2.1.6\apps\struts2-blank-2.1.6-\WEB-INF\classes\struts.xml】

    • 2配置struts2所需的jar包。
      将【struts-2.1.6\apps\struts2-blank-2.1.6-\WEB-INF\lib】下的jar包拷贝到 项目的WebRoot-----WEB-INF
      ----lib目录下。
    • 3配置web.xml文件。
      将示例web.xml文件中关于struts2的filter标签配置复制到项目的web.xml中。
    1.源码和javadoc的设置:
    【可查阅struts2源码,按F1可查阅javadoc】
        在jar包上右键---properties---Java Source Attachment/Java Doc Location:
    
        【struts2的Java Source源码路径为:
             \struts-2.3.16.1\src\core\src\main\java
          struts2的Java Doc路径为:
              \struts-2.3.16.1\docs\struts2-core\apidocs】
    2.xml文件自动提示设置
    Window----Preferences----输入catalog----XML catalog----Add---设置dtd文档location、keyType和key
    
    【Location:选择dtd文档位置。
          解压 struts-2.3.16.1\lib\ 目录下的struts2-core-2.3.16.1.jar文件,选择struts-2.0.dtd文件位置。
      Key Type:URL
      Key:输入dtd的URL地址,在struts.xml文件的上部的DOCTYPE标签中定义的   "http://struts.apache.org/dtds/struts-2.0.dtd"】
    
    • 4配置action。
      简化struts.xml中package标签中的内容。
    <constant>标签:struts.devMode为true时,为开发模式,可更改action的name且不用重启tomcat
    <package>标签:包名,设置namespace。类似java项目中的包名,起到防止action重名的作用。
    <action>标签:设置action的name,设置相应result路径。
    

    二、Struts2运行机制

    Struts2的作用:把请求和视图分开,增强项目的可扩展性。

    struts2的原理

    工作流程:

    1、客户端浏览器发出HTTP请求.
    2、根据web.xml配置,该请求被FilterDispatcher接收
    3、根据struts.xml配置,找到需要调用的Action类和方法, 并通过IoC方式,将值注入给Aciton
    4、Action调用业务逻辑组件处理业务逻辑,这一步包含表单验证。
    5、Action执行完毕,根据struts.xml中的配置找到对应的返回结果result,并跳转到相应页面
    6、返回HTTP响应到客户端浏览器


    namespace:action访问路径

    用户自定义Action

    1.IndexAction中有execute()方法,返回“success”字符串,struts.xml的action标签中定义class。

    当struts2的filter读到struts.xml中的action是一个class时,每次访问struts2都会调用createMessage()方法,new一个新的action的class对象,调用execute()方法,不会出现线程同步的问题。【而struts1每次访问时会访问可能用的是同一个对象,会出现线程同步的问题。】

    2.当action中不配置class时,可以使IndexAction继承Action接口,实现execute()方法,返回SUCCESS常量。
    3.当action中不配置class时,可以使IndexAction继承ActionSupport类,重写execute方法,返回SUCCESS常量。
    ------------------------------日常开发使用第三种方法。

    路径问题

    Action--method

    Action执行的时候并不一定要执行execute()方法
    (1)可以在struts.xml配置文件中配置Action的时候用“method=要执行的方法”,并在对应的Action中实现该方法。

    (2)也可以在url地址中动态指定(动态方法调用DMI)【推荐】
    不指定method,在调用时通过在action后添加“!方法名”的方式调用Action中的方法。

    Action---通配符

    使用通配符,可将配置量降到最低。但一定要遵守“约定优于配置”的原则。

    通过Studentadd访问action


    在action配置中没有对应的Studentadd的action,但有Student。result中{1}与表示的内容相同。

    相关文章

      网友评论

          本文标题:Struts2----配置、运行机制

          本文链接:https://www.haomeiwen.com/subject/cwkfottx.html