Struts2框架入门
写在开头:
传统的MVC开发模式中,处理业务层用到的是Servlet技术,但是Servlet存在一些问题,做表单传递参数时,会导致大量的数据参数冗余,不能自动类型转换;页面跳转时,路径被写死在类文件中,不利于后续维护。我们为每一个功能开发一个Servlet控制器,会导致Servlet控制器过多,也不利于维护。所以我们引入了Struts2框架的学习。 对于框架而言,它属于软件开发中的半成品,主要解决一些软件开发中的一些通用问题,提高开发效率。
一、认识Struts2框架
- 它是 Apache公司提供的,典型的 MVC框架。
Struts
提供了一个Action控制器
替换原有的Servlet控制器
,也是基于 MVC的软件开发模式。Struts
通过官网下载之后可以得到其目录结构如下:
struts目录结构 |
apps | Struts2提供的应用实例 | |
docs | Java doc注释 | 常用API接口 |
lib | Struts2核心库 | 三方依赖库 |
src | Struts2中的源代码 |
二、Struts2开发流程与Servlet开发流程对比
- 在这里首先将开发流程进行一次对比,有助于我们快速上手开发。
Struts
框架方便了很多,在做逻辑跳转的时候,可以选择直接配置Struts.xml
三、Struts2环境的搭建
3.0、项目目录结构一览:
【包含相关包-代码源文件-jar包】 |
3.1、创建项目
!!!图中用到的几个核心jar包在下边会给大家链接!!! |
- 项目新建完成之后,将我们的
jar
包导入到一个新建的lib
文件夹下,如图:
3.2、引入 Struts2
核心依赖
我们先导入以下这些Struts核心依赖: |
3.3.1、核心类库链接:
链接:https://pan.baidu.com/s/1-lO7Hs0F0A98juUQ0Xa2RQ
提取码:aavp
3.3、预先配置 Web.xml
配置Struts2的核心Filter用来拦截客户端的所有请求,将这些请求交给Struts2
因为以前 Web.xml
是用来配置Servlet的,所有请求是交给对应 Servlet
控制器来处理的,现在要改变这种处理方式了。
<?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>Struts_day1</filter-name> <filter-class> org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter </filter-class> </filter> <filter-mapping> <filter-name>Struts_day1</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
3.4、开发 Action
类
开发 Action
类,首先新建一个包:com.linghu.action
新建 TestAction
类,这相当于一个控制器,当客户端发送请求的时候,我们的控制器会向后台象征性的打印一句“Hello Struts~~”,接下来我们就新建两个视图,分别是:HelloWorld.jsp 和 index.jsp两个页面。
package com.linghu.action; import javax.swing.*; import java.awt.event.ActionEvent; import java.beans.PropertyChangeListener; public class TestAction implements Action { public String execute() throws Exception{ System.out.println("Hello Struts~~"); return "OK"; } @Override public Object getValue(String s) { return null; } @Override public void putValue(String s, Object o) { } @Override public void setEnabled(boolean b) { } @Override public boolean isEnabled() { return false; } @Override public void addPropertyChangeListener(PropertyChangeListener propertyChangeListener) { } @Override public void removePropertyChangeListener(PropertyChangeListener propertyChangeListener) { } @Override public void actionPerformed(ActionEvent actionEvent) { } }
3.5、两个页面代码:HelloWorld.jsp 和 index.jsp两个页面
HelloWorld.jsp:
<%-- Created by IntelliJ IDEA. User: 编程小哥令狐 Date: 2020/10/21 Time: 16:55 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> <div align="center"> <h1>HelloWorld</h1> </div> </body> </html>
index.jsp:
<%-- Created by IntelliJ IDEA. User: 编程小哥令狐 Date: 2020/10/21 Time: 16:38 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> <h1> <a href="HelloWorld.jsp">点击前往测试页面</a> </h1> </body> </html>
3.6、配置Struts.xml
<?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> <package name="test" extends="struts-default"> <action name="test" class="com.linghu.action.TestAction"> <result name="OK">index.jsp</result> </action> </package> </struts>
3.7、访问
访问界面如下 |
执行结果如下: |
eLing/mage1/img/20201021173118.png) |
执行结果如下: |