Struts2框架入门案例

  1. Struts2 框架介绍
    官网: https://struts.apache.org/
    Struts2是Apache组织下一个基于MVC设计模式的Web应用框架。
    Struts2是Struts的下一代产品,是Struts1 + WebWork合并的全新框架。
    Struts2采用拦截器Filter为核心机制,就一个开源的轻量级的,应用于表示层(Web层、View)的框架。

  2. Struts2 入门案例

2.1.首先你要用Maven 创建项目

Maven官网: https://maven.apache.org/
Struts2框架入门案例
Struts2框架入门案例
Struts2框架入门案例
Struts2框架入门案例
Struts2框架入门案例

注意:在这里要解决两个问题

问题1:如果您的jsp文件报错

解决办法:在pom.xml中引入servlet-api依赖即可

<!-- 引用支持servlet依赖 -->
<dependency>
	<groupId>javax.servlet</groupId>
	<artifactId>javax.servlet-api</artifactId>
	<version>4.0.0</version>
</dependency>

问题2:在项目中显示src/main/java文件夹
Struts2框架入门案例
Struts2框架入门案例
Struts2框架入门案例
问题3:调整项目的JavaSE版本及动态网站支持版本
Struts2框架入门案例
Struts2框架入门案例
Struts2框架入门案例
问题4:发布Maven中的包到Tomcat的WEB-INF中,否则报ClassNotFound异常
Struts2框架入门案例
Struts2框架入门案例
Struts2框架入门案例
Struts2框架入门案例
2.2.引入jar依赖包
在项目的pom.xml中引入Struts 2的核心依赖:struts2-core。
Struts2框架入门案例

<!-- 引用struts2框架核心依赖 -->
<dependency>
	<groupId>org.apache.struts</groupId>
	<artifactId>struts2-core</artifactId>
	<version>2.5.16</version>
</dependency>

这里我用的是2.5.16版本的你们可以用其他版本的这里推荐一个网站里面很多jar依赖包 https://mvnrepository.com/

注意:struts2的版本不同,配置也有部分差异。

2.3.配置核心拦截器

在项目webapp/MEB-INF/web.xml文件中配置Struts2核心拦截器StrutsPrePareAndExectueFilter
当用户请求匹配的URL时,执行核心栏截器

<!--定义struts2的核心Filter-->
<filter>
<filter-name>struts2</filter-name>
<!--Struts2.1.3版本起使用的核心过滤器-->
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<!--让Struts2的核心Filter拦截所有请求-->
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
<!--url-pattern>*.action</url-pattern-->
</filter-mapping>

注意事项:
Struts 2.1版本之前用的核心过滤器是FilterDispacther。

Struts 2.1~2.4版本用的是StrutsPrepareAndExecuteFilter
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

Struts 2.5版本用的也是StrutsPrepareAndExecuteFilter,但路径有所改变:
org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter

注意:每个版本的核心过滤器都不一样

2.4.定义Action
Action是业务控制器,是Struts2的重要组成部分之一。Action是MVC中的C,也就是控制器。该类负责调用Model里的方法来处理请求。

创建Action动作类:UserAction

/**
* 用户业务控制类
*/
public class UserAction{
    //execute方法为默认执行方法
    public String execute() throws Exception{
    ……
return “success”; //返回字符串(即结果码)
}
}

注意:这里的方法名不能更改必须一样

3.5.配置Action
在src或src/main/resources下创建Struts2核心配置文件:struts.xml,配置Action类的请求与响应。

<?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>
    	<-- 包的配置:name为自定义包名;extends当前包继承struts-default,必须要写;namespace非必填 -->
	<package name="myPackage" extends="struts-default" namespace="/user">
         <-- Action的配置:name为URL请求地址;class为实例对象全路径名;method没写,默认执行execute方法 -->
         http://localhost:8080/student/userAction.action
		<action name="userAction" class="com.zking.struts.user.action.UserAction">
			……
		</action>
	</package>
</struts>

注意:这里的struts.xml必须保持一样不然会找不到这个xml

2.6. 配置处理结果与视图

<action name="userAction" class="com.zking.struts.user.action.UserAction">
    <!--定义3个逻辑视图和资源之间的映射-->
<result name=”input” >loginForm.jsp</result>
<result name=”failure” >error.jsp</result>
<result name=”success” >/WEB-INF/webs/welcome.jsp</result>
……
</action>

2.7.编写视图资源

<a href=”${pageContext.request.contextPath}/login.action”>测试连接</a>
<a href=”login.action”>测试连接</a>