struts2的環境搭建以及action的訪問

1.基本配置

  • 軟件:IDEA2019.3.3
  • struts2jar包:struts2.3.24
  • jar包下載

鏈接:https://pan.baidu.com/s/1Y7xt6Y9eyQhi8S026qfaXw
提取碼:vewb

2.struts2簡介

  • struts2是基於MVC設計模式的web層框架,用來接收數據以及對數據的封裝。struts2以webwork爲核心,採用攔截器的機機制來處理用戶的請求,使得業務邏輯控制器能夠與servletAPI完全脫離開。

3.環境搭建

  • web.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <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>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>
  • 引入日誌xml文件
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
    <Appenders>
        <Console name="STDOUT" target="SYSTEM_OUT">
            <PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
        </Console>
        <RollingFile name="RollingFile" fileName="logs/strutslog1.log"
                     filePattern="logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
            <PatternLayout>
                <Pattern>%d{MM-dd-yyyy} %p %c{1.} [%t] -%M-%L- %m%n</Pattern>
            </PatternLayout>
            <Policies>
                <TimeBasedTriggeringPolicy />
                <SizeBasedTriggeringPolicy size="1 KB"/>
            </Policies>
            <DefaultRolloverStrategy fileIndex="max" max="2"/>
        </RollingFile>
    </Appenders>
    <Loggers>
        <Logger name="com.opensymphony.xwork2" level="debug"/>
        <Logger name="org.apache.struts2" level="debug"/>
        <Root level="warn">
            <AppenderRef ref="STDOUT"/>
        </Root>
    </Loggers>
</Configuration>

4.action類的三種寫法

  • action類是一個POJO對象
package com.sun.action;

import static com.opensymphony.xwork2.Action.SUCCESS;

/**
 * @author 若風
 * @version 1.0
 */
public class Action1 {

    public String demo1(){
        System.out.println("這是一個簡單的POJO類");
        return SUCCESS;
    }
}

輸出

  • action類繼承了actionsupport類

import com.opensymphony.xwork2.ActionSupport;

/**
 * @author 若風
 * @version 1.0
 */
public class Action2 extends ActionSupport {

    @Override
    public String execute() throws Exception {
        System.out.println("這個類繼承了ActionSupport");
        return super.execute();
    }
}

  • action類實現了Action接口
package com.sun.action;


import com.opensymphony.xwork2.Action;

/**
 * @author 若風
 * @version 1.0
 */
public class Action3 implements Action {
    @Override
    public String execute() throws Exception {
        System.out.println("這個類實現了action接口");
        return null;
    }
}

5.Action訪問的三種方式

  • 通過method設置

  • 通過通配符設置

  • 通過動態訪問設置

  • 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>
    <!--開啓動態方法訪問-->
    <constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>
    <package name="demo1" extends="struts-default" namespace="/">
        <!--通過method訪問-->
        <action name="demo1" class="com.sun.action.Action1" method="demo1"/>
        <!--通過通配符設置訪問-->
        <action name="demo_*" class="com.sun.action.Action2" method="{1}"/>
        <!--通過動態訪問設置-->
        <action name="demo3" class="com.sun.action.Action3"/>
    </package>
</struts>
  • jsp頁面代碼
<%--
  Created by IntelliJ IDEA.
  User: 若風
  Date: 2020/5/25
  Time: 10:27
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  <%--通過method設置--%>
  <a href="${pageContext.request.contextPath}/demo1.action">demo1</a>
  <%--通過通配符設置--%>
  <a href="${pageContext.request.contextPath}/demo_execute.action">demo2</a>
  <%--通過動態訪問設置--%>
  <a href="${pageContext.request.contextPath}/demo3!execute.action">demo2</a>
  </body>
</html>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章