小白学struts2

Struts2

据说Struts2已过时,没办法,学校要学,还是偶尔听下

1、struts2介绍

​ Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,但是相对于WebWork,Struts 2的变化很小。

2、struts2的简单使用

  • ​ 创建web项目,导入jar包

  • ​ 创建一个index.jsp页面

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>Title</title>
    </head>
    <body>
        <a href="${pageContext.request.contextPath}/hello.action">
            struts2 test
        </a>
    </body>
    </html>
    
  • 编写Action类

    public class HelloAciton {
    
        public String execute () {
            System.out.println("hello action execute...");
            return null;
        }
    }
    
  • 编写配置文件struts.xml

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts PUBLIC
    	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    	"http://struts.apache.org/dtds/struts-2.3.dtd">
    <struts>
        <!-- 配置struts2的包-->
    	<package name="demo1" extends="struts-default" namespace="/">
            <-- 配置Action-->
    		<action name="hello" class="com.pre.struts2.HelloAciton" >
    		</action>
    	</package>
    </struts>
    
  • 在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</filter-name>
            <!-- 所有请求都有struts2处理-->
            <url-pattern>/*</url-pattern>
        </filter-mapping>
    
  • 直接运行:

    ​ 页面将出现空白页

在这里插入图片描述

  • 更改struts.xml,HelloAction.java文件

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts PUBLIC
    	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    	"http://struts.apache.org/dtds/struts-2.3.dtd">
    <struts>
    	<package name="demo1" extends="struts-default" namespace="/">
    		<action name="hello" class="com.pre.struts2.HelloAciton" >
    			<result name="success" type="dispatcher">/success.jsp</result>
    		</action>
    	</package>
    </struts>
    
    public class HelloAciton {
    
        public String execute () {
            System.out.println("hello action execute...");
            return "success";
        }
    }
    
    
    • 再次访问页面:

    ​ 页面显示处理success.jsp的内容
    在这里插入图片描述

3、struts2的执行流程

在这里插入图片描述

当用户访问某一个Action的时候,先经过核心过滤器,在核心过滤器中执行一组拦截器(这组拦截器实现部分功能),执行目标Action,根据Action的返回值,进行页面跳转。

4、struts2常见配置

常用配置文件加载顺序

  • default.properties

  • struts-default.xml

  • struts-plugin.xml

  • struts.xml

  • struts.properties

  • web.xml

    • 后配置的常量的值会覆盖先配置的常量的值

package相关配置

  • package标签称为包,这个包与java中的包的概念不一致,这里的包只是为了更好的管理action

  • package标签的属性

    • name :包的名称,只有在一个项目中不重名即可。

    • extends :继承哪个包,通常值为struts-default。

    • namespace :名称空间,与标签中的name属性共同决定访问路径。

    • 名称空间有三种写法:

      • 带名称的名称空间 :namespace=”/aaa”

      • 跟名称空间 :namespance=”/”

      • 默认名称空间 :namespace=””

  • abstract :抽象的,用于其他包的继承。

action相关配置

  • action标签配置Action类。

  • action标签的属性

    • name :与namespace共同决定访问路径

    • class :Action类的全路径

    • method :执行Action中的哪个方法的方法名,默认值execute

    • converter :用于设置类型转换器

struts2的常量配置

  1. struts.xml中配置

    <struts>
        <!--常量配置-->
    	<constant name="struts.action.extension" value="action"/>
    	<package name="demo1" extends="struts-default" namespace="/">
    		<action name="hello" class="com.pre.struts2.HelloAciton" >
    			<result name="success" type="dispatcher">/success.jsp</result>
    		</action>
    	</package>
    </struts>
    
  2. web.xml中配置

    <filter>
            <filter-name>struts2</filter-name>
            <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
            
            <!--配置常量-->
            <init-param>
                <param-name>struts.action.extension</param-name>
                <param-value>test</param-value>
            </init-param>
        </filter>
    

5、实现Action控制器的方式

直接写一个普通的Action类,添加一个execute方法

public class HelloAciton {

    public String execute () {
        System.out.println("hello action execute...");
        return "success";
    }
}

实现一个Action接口

import com.opensymphony.xwork2.Action;

public class ActionDemo2 implements Action {
    @Override
    public String execute() throws Exception {
        System.out.println("ActionDemo2 execute.......");
        return "success";
    }
}

注意不要导错包了

继承ActionSupport

import com.opensymphony.xwork2.ActionSupport;

public class ActionDemo3 extends ActionSupport {
    
    @Override
    public String execute() {
        System.out.println("ActionDemo3 execute.......");
        return "success";
    }
}

6、Action的访问

  1. 通过method指定
    <struts>
    	<constant name="struts.action.extension" value="action"/>
    	<package name="demo1" extends="struts-default" namespace="/">
    		<!--method=test表示执行HelloAction类中的test方法-->
    		<action name="hello" class="com.pre.struts2.HelloAciton" method="test">
    			<result name="success" type="dispatcher">/success.jsp</result>
    		</action>
    	</package>
    </struts>
    
  2. 通过通配符的方式进行配置

在这里插入图片描述

不学了,没意思的技术

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值