【IDEA版】简单快速上手撸Struts框架

it2024-12-29  8

Struts2框架入门

写在开头:

传统的MVC开发模式中,处理业务层用到的是Servlet技术,但是Servlet存在一些问题,做表单传递参数时,会导致大量的数据参数冗余,不能自动类型转换;页面跳转时,路径被写死在类文件中,不利于后续维护。我们为每一个功能开发一个Servlet控制器,会导致Servlet控制器过多,也不利于维护。所以我们引入了Struts2框架的学习。 对于框架而言,它属于软件开发中的半成品,主要解决一些软件开发中的一些通用问题,提高开发效率。

一、认识Struts2框架

它是 Apache公司提供的,典型的 MVC框架。

Struts提供了一个 Action控制器 替换原有的 Servlet控制器,也是基于 MVC的软件开发模式。

Struts通过官网下载之后可以得到其目录结构如下:

struts目录结构 appsStruts2提供的应用实例docsJava doc注释常用API接口libStruts2核心库三方依赖库srcStruts2中的源代码

二、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) |

执行结果如下:

最新回复(0)