Struts2框架入门案例
-
Struts2 框架介绍
官网: https://struts.apache.org/
Struts2是Apache组织下一个基于MVC设计模式的Web应用框架。
Struts2是Struts的下一代产品,是Struts1 + WebWork合并的全新框架。
Struts2采用拦截器Filter为核心机制,就一个开源的轻量级的,应用于表示层(Web层、View)的框架。 -
Struts2 入门案例
2.1.首先你要用Maven 创建项目
Maven官网: https://maven.apache.org/
注意:在这里要解决两个问题
问题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文件夹
问题3:调整项目的JavaSE版本及动态网站支持版本
问题4:发布Maven中的包到Tomcat的WEB-INF中,否则报ClassNotFound异常
2.2.引入jar依赖包
在项目的pom.xml中引入Struts 2的核心依赖:struts2-core。
<!-- 引用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>