Struts2框架入门

摘要:Struts2框架学习笔记(一)

Struts2框架入门

Struts2简介

Struts2是一种基于MVC模式的轻量级Web框架,Struts2是Struts1的下一代产品,是在Struts1和WebWork技术的基础上进行合并后的全新框架

struts2框架其实是对javaWeb表现层的MVC作了优化

Struts2的优点

1、项目开源,使用及拓展方便,天生优势。
2、提供Exception处理机制。
3、Result方式的页面导航,通过Result标签实现页面跳转。4
4、通过简单、集中的配置来调度业务类,方便修改。
5、提供简单、统一的表达式语言来访问所有可供访问的数据。
6、提供标准、强大的验证框架和国际化框架。
7、提供强大的、可以有效减少页面代码的标签。
8、提供良好的Ajax支持。
9、拥有简单的插件,可以扩展Struts2框架。
10、拥有智能的默认设置,不需要另外进行繁琐的设置。

Struts2入门案例

第一步:下载jar包

下载地址:https://struts.apache.org/

选择struts-2.3.37-all.zip 下载
在这里插入图片描述

下载解压后,出现以下界面,struts-2.3.37的目录结构:
在这里插入图片描述

由于struts的jar包并不全部需要,找到apps目录下struts2-blank.war

在这里插入图片描述
解压struts2-blank.war,将示例程序lib目录下的jar包添加到我们项目中即可,此版本的Struts2项目必需的13个jar包。
在这里插入图片描述

第二步:创建项目导入jar包

创建项目,将上面的13个jar包粘贴到lib中,然后build path,会在Web App Libraries中看到
在这里插入图片描述

第三步:配置web.xml

编辑web应用的web.xml配置文件,配置struts2的核心拦截器。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">

<display-name>FirstStruts2</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<!--配置Struts2核心过滤器-->
<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>

第四步:创建Action类

代码如下:

1
2
3
4
5
6
7
8
package cn.itcast.action;

public class HelloWorldAction {
public String execute (){
return "success";

}
}

第五步:创建struts.xml文件

引入dtd约束,该代码可以在WebContent\WEB-INF\lib\struts2-core-2.3.37.jar找到
在这里插入图片描述

1
2
3
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">

配置action

1
2
3
4
5
6
7
8
<package name="hello" namespace="/" extends="struts-default">
<!-- 配置Action -->
<action name="helloWorld" class="cn.itcast.action.HelloWorldAction">
<!-- 配置result结果页面跳转 -->
<result name="success">/success.jsp</result>
</action>

</package>

完整代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?xml version="1.0" encoding="UTF-8" ?>
<!-- 指定Struts2配置文件的D2T信息 -->
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
<!-- Struts2的Action必须放在指定的包空间下定义 -->
<package name="hello" namespace="/" extends="struts-default">

<action name="helloWorld" class="cn.itcast.action.HelloWorldAction">
<result name="success">/success.jsp</result>
</action>

</package>
</struts>

解决Struts2的配置文件struts.xml文件无提示问题
struts.xml文件提示来自DTD约束:

1
2
3
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">

方法1:电脑可以上网,会自动访问http://struts.apache.org/dtds/struts-2.3.dtd,提供提示功能
方法2: 配置本地DTD提示
首先需要找到我们的struts核心jar包struts2-core-2.3.30.jar,然后我们需要将它解压,可以看到struts-2.3.dtd文件
在这里插入图片描述
选择window –> preferences –> 搜索xml –> 选择xml Catalog
在这里插入图片描述

第六步:创建jsp文件

index.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Struts2入门案例</title>
</head>
<body>
<h1>Struts2入门案例</h1>
<a href="${pageContext.request.contextPath }/helloWorld.action">Click me!</a>
</body>
</html>

success.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Struts2跳转页面</title>
</head>
<body>
<h1>Struts2跳转页面成功</h1>

</body>
</html>

第七步:部署项目

发布项目,点击超链接
在这里插入图片描述
跳转成功
在这里插入图片描述

Struts2处理流程

(1)用户在客户端发出HTTP请求

(2)然后请求被核心过滤器StrutsPrepareAndExecuteFilter拦截

(3)核心过滤器将请求转发到Action映射器,Action映射器负责识别当前的请求是否需要交由Struts2处理。

(4)Action映射器返回需要struts2处理的信息,StrutsPrepareAndExecuteFilter会创建一个Action代理

(5)Action代理并不知道执行哪一个Action,它会向配置管理器询问调用哪一个Action,配置管理器会从struts.xml读取我们配置的Action信息。

(6)Action代理创建相关请求的Action对象,调用相关的方法之前,struts2的一系列拦截器会帮我们做一些操作,例如获取请求参数等。

(7)然后调用execute方法根据返回的字符串去匹配相应的页面,

(8)页面可以获取一些页面模板,然后生成最终页面,再倒序的执行拦截器的后续操作

(9)最后生成HTTP响应内容

在这里插入图片描述


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!