Struts2第一天

概述

  • struts2框架应用于Java ee三成结构中的web层中
  • struts2是在struts1和webwork基础之上发展的全新的框架
  • structs2版本
  • web层常见的框架structs2、springmvc

Struts2开发流程

  1. 导入jar包
  2. 创建action

    public class HelloAction {
    
        public String index(){
            return "hello";
        }
    }
  3. 配置action访问路径

    1. 创建Struts2核心配置文件(在src下,名称为struts.xml)

      <?xml version="1.0" encoding="UTF-8"?>
      
      <!DOCTYPE struts PUBLIC
              "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
              "http://struts.apache.org/dtds/struts-2.5.dtd">
      
      <struts>
          <package name="hellodemo" extends="struts-default" namespace="/">
              <action name="" class="com.eric.demo.action.HelloAction">
                  <!--配置方法的返回值到不同的页面-->
                  <result name="ok">/hello.jsp</result>
              </action>
          </package>
      </struts>
  4. 配置过滤器(web.xml)

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

struts2器基本执行过程

  1. 通过过滤器获取到请求的路径,得到路径中的“hello”的值
  2. 到src下去找到struts.xml,使用dom4j进行解析,得到xml文件中的内容,拿着“hello”的值,到xml中的action标签中匹配name属性的值
  3. 匹配name属性值一样,都是“hello”,找到class属性的值(action的全路径),使用反射来实现功能

    // 反射的实现
    // 得到类
    Class clazz = Class.forName("action的全路径");
    // 的到名称为index的方法
    Method m = clazz.getMethod("index");
    // 方法执行
    Object obj = m.invoke();
  4. 得到action方法的返回值,到struts.xml文件中,找到result标签,匹配其name属性的值是否一样,若是一样的,就跳转到配置的页面中去

学习源码(StrutsPrepareAndExecuteFilter)

  1. 过滤器在服务器启动的时候创建,在创建时执行init方法
    1. 在init方法中加载配置文件,包含自己创建的和struts2自带的。我们需要关注的文件有,struts.xml和web.xml

Struts2配置介绍

  1. Struts2中核心配置文件

    <struts>
    <package name="hellodemo" extends="struts-default" namespace="/">
    <action name="hello" class="com.eric.demo.action.HelloAction">
    <!--配置方法的返回值到不同的页面-->
    <result name="success">/hello.jsp</result>
    </action>
    </package>
    </struts>

    1. 名称:struts.xml、位置:src下
    2. 在配置文件中主要有三个标签package、action、result,标签里的属性
      1. package
        • 类似于代码中的包,用于区分不同的action,必须首先写package标签,在package中才能配置action
        • name属性:值与功能本身没有关系,在一个配置文件中可以写多个package,但是name属性值不能有相同的
        • extends属性:值是固定的 “struts-default”,只有配置了这个属性,其中的类才能具有action的功能,类似于类的继承的思想
        • namespace属性:名称空间,其值要和action标签中的name属性值构成访问路径,默认值为 “/”,比如:/hello
      2. action(很重要),配置action的访问路径
        • name属性:和package的namespace值构成访问路径,在一个package中可以有多个action标签,但是name属性值不能相同
        • class属性:其值为action类的全路径,底层用反射来实现调用
        • method属性:比如在action中默认执行的是index方法,使用method进行配置可以实现执行action中的其他方法
      3. result,根据action方法的返回值,跳转到不同的路径中去
        • name属性:配置方法的返回值
        • type属性:配置如何到路径中去,例如转发或重定向,默认为转发。

Struts2常量配置

  1. (重点)
  2. 在src下创建struts.properties,进行修改(了解)
  3. 在web.xml进行配置(了解)
  4. 最常用的常量是struts.i18n.encoding=utf-8
    1. 表单提交到action中,在action中可以获取到表单数据
    2. 表单数据中有中文,解决乱码问题
    3. 若是post提交,直接可以自动转换编码;get提交需要手动转换编

分模块开发

  1. 单独写配置文件,把配置文件单独引入到核心配置文件中
    • hello.xml

      <struts>
      <package name="hellodemo" extends="struts-default" namespace="/">
      <action name="hello" class="com.eric.demo.action.HelloAction">
      <!--配置方法的返回值到不同的页面-->
      <result name="success">/hello.jsp</result>
      </action>
      </package>
      </struts>
    • struts.xml

      <struts>
      <constant name="struts.i18n.encoding" value="utf-8"/>
      <!--引入hello.xml-->
      <include file="com/eric/demo/action/hello.xml"></include>
      </struts>

Action的编写方式

  1. 第一种:创建普通类,这个类不继承任何类,也不实现任何接口
  2. 第二种:创建类,让这类实现接口 Action

    import com.opensymphony.xwork2.Action;
    
    public class UserAction implements Action {
        @Override
        public String execute() throws Exception {
            return null;
        }
    }
    
  3. 第三种:创建类,继承 ActionSuport(最常用)

    package com.eric.demo.action;
    
    import com.opensymphony.xwork2.ActionSupport;
    
    public class PersonAction extends ActionSupport {
    
    }

访问action的方法(重点)

  1. 第一种:使用action标签的method属性,在这个属性里面写执行action的方法
  2. 第二种:使用通配符方式实现
  3. 第三种:动态访问实现(不用)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值