.Net转Java自学之路—Struts2框架篇一(入门)

概述:

  1、Struts2框架应用Java EE三层结构中的Web层框架。

  2、Struts2框架是Struts1和webwork基础之上发展的全新的框架。

  3、Web层常用的框架:Struts2、SpringMVC

入门案例:

  1、导入jar包。

  2、创建action:每次访问action时,默认执行名称为execute()方法。

  3、创建Struts2核心配置文件
    》核心配置文件的名称和位置都是固定的。位置:src下。名称:struts.xml

    》引入dtd约束。

    》action配置:

<struts>
    <package name="" extends="struts-default" namespace="/">
        <action name="访问名称" class="配置类的全路径">
            <!--配置方法的返回值到页面-->
            <result name="返回值">/xxx.jsp</result>
        </action>
    </package>
</struts>

    》配置Struts2过滤器。在web.xml中进行配置:

<filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFIlter</filter-class>
</filter>
<filter-mapping>
    <filter-name>struts2</filt-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

底层执行过程:

  地址发送请求后,进入过滤器,过滤器实现功能(过滤器在服务器启动时创建)。

  1、过滤器获取请求路径,得到路径中的值。
  2、然后再src下找到struts.xml,使用dom4j解析。得到xml文件中的内容;拿到的值到xml文件中找action标签,匹配name属性值是否一样。
  3、一样后,找到name属性所在的action标签中的另一个属性class属性,得到action的全路径,使用反射实现功能。

Class clazz=Class.forName("action的全路径");
//得到名称时execute的方法
Method mt=clazz.getMethod("execut");
//执行
Object obj=mt.invoke();

  4、得到action方法的返回值。
    》在struts.xml文件中,找到action标签中的result标签,匹配该标签的name属性值是否一样;一样,则跳转配置的页面中。

相关配置:

  1、名称和位置时固定的。

  2、配置文件主要有三个标签package、action、result标签中的属性。

  package:

    1、类似于包,区分不同的action,要配置action,必须首先写package标签,在package中才能配置action 。
    2、package标签属性:
      name:name属性的值与功能本身没有关系,在一个配置文件中可以有多个package标签,但name属性值不能相同。
      extends:表示一种继承的关系,该属性值固定:struts-default 。定义该属性后,在package中配置的类才具有action功能。
      namespace:命名空间.该属性值和action的name属性值构成访问路径。

  action:

    该标签配置action访问路径。该标签含有三个属性:
    name:namespace属性值和action的name属性值构成访问路径。在package标签中写多个action标签,但action的name属性值不能相同。
    class:action全路径。
    method:该属性可以让action中的多个方法进行执行。

  result:

    1、根据action的方法返回值,配置到不同路径中。
    2、包含两个属性:name、type 。
      name:和方法返回值一样。
      type:配置如何到路径中(转发或重定向)。默认值:转发。

  常量配置:

    1、默认常量位置:all.jar >> org.apache.struts2 >> static >> default.properties
    2、修改struts2默认常量值:常用方式:在struts.xml中进行配置

<constant name="struts.i18n.encoding" value="utf-8">
</constant>

    还有俩种方式:
      a、在src下创建struts.properties,进行修改。
      b、在web.xml进行配置。
    3、最常用常量:struts.i18n.encoding=UTF-8
      》表单提交数据到action中,在action中可以获取到表单提交数据。
      》表单提交数据有中文,解决有乱码问题:post提交直接设置编码;get提交做编码转换
      》如果在action获取表单通过post方式提交中文,中文乱码问题已帮解决。但get提交的中文还需要手动处理。

  分模块开发:单独写配置文件,然后引入到核心配置文件中。

<include file="cn/text/action/xxx.xml"></include>

  Action三种编写方式:

    1、创建普通类。该类不继承任何类,不实现任何接口。
    2、创建类,实现接口Action 。
    3、创建类,继承类ActionSupport 。

  访问action的方法的三种实现方式:

    1、使用action标签的method属性,属性值中写执行的action方法。
      》使用method配置的情况缺陷:action的每个方法都需要配置,若action中有多个方法,需要配置多个action 。
    2、使用通配符方式实现:
      》在action标签中name属性,name属性值中用”*“号。*:表示匹配任意内容。
      》method属性中录入*的值:{1}
    3、动态访问实现。
      》如果action中的方法有返回值,在配置文件中没有配置,出现错误。
      》如果action中的方法有返回值,类型必须是String 。
      》action中的方法可以没有返回值,那么在result中就不需要配置。没有返回值的俩种写法:把方法写成void  或  把返回值写成"none"。

posted @ 2019-03-06 10:39  水痕灬  阅读(172)  评论(0编辑  收藏  举报