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>