当前位置: 首页 > news >正文

Struts2框架简单入门

Struts2框架简单入门

  • 1、前言
  • 2、Struts2简介
    • 2.1、Struts2介绍
    • 2.2、Struts2优缺点
      • 2.2.1、优点
      • 2.2.2、缺点
      • 2.2.3、Struts2获取
  • 3、入门案例
    • 3.1、pom依赖
    • 3.2、web.xml配置
    • 3.3、准备页面
    • 3.4、编写Action控制器
    • 3.5、编写核心配置文件struts.xml
    • 3.6、部署测试
    • 3.6、注意点
    • 3.7、小结

1、前言

因为最近接手了一个老项目,项目使用的是SSH框架,也就是Spring + Struts2 + Hibernate的技术框架,现在主流基本上用的都是SSM(Spring + SpringMVC + Mybatis)的了,只有像一些政府的老项目还是SSH框架,所以遇到了,然后还不会,就只有一个方法:主动学习。于是在b站找了一个视频跟着学,也做了一些简单的笔记,趁着有时间,将笔记整理一下记录到博客,方便以后随时翻阅补充。

2、Struts2简介

2.1、Struts2介绍

Struts2是一个MVC框架,以WebWork框架的设计思想为核心,吸收了Struts1的部分优点,设计出来的新一代的MVC框架。

Struts2是流行和成熟的基于MVC设计模式的Web应用程序框架。Struts2不止是Struts1的下一个版本,它是一个完全重写的Struts架构。

WebWork框架开始以Struts框架为基础,其目标是提供一个加强和改进框架Struts来使web开发的开发人员更加容易。

关于MVC:

M(Model)—> 模型(JavaBean类)
V(View)—> 视图(JSP,HTML)
C(Controller)—> 控制器(Servlet)

2.2、Struts2优缺点

2.2.1、优点

  • 实现MVC模式,结构清晰,使开发者只关注业务逻辑的实现。
  • 有丰富的tag可以用,Struts的标签库(taglib),如能灵活运用,可大大提高开发效率。
  • 页面导航使系统的脉络更加清晰,通过一个配置文件,可以把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处,尤其是当另一批开发者接手整个项目时,这种优势体现的更加明显。
  • 提供Exception处理机制。
  • 数据库连接池管理。
  • 支持I18N国际化。

2.2.2、缺点

  • 有线程安全问题。

2.2.3、Struts2获取

官网地址:https://struts.apache.org/download.cgi。

3、入门案例

新建一个maven工程,包含webapp目录,如下结构:
在这里插入图片描述

3.1、pom依赖

<project xmlns="http://maven.apache.org/POM/4.0.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.ycz</groupId>
  <artifactId>struts01</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  
  
  <dependencies>
        <!-- struts2核心依赖 -->
        <dependency>
             <groupId>org.apache.struts</groupId>
             <artifactId>struts2-core</artifactId>
             <version>2.5.22</version>
        </dependency>
  </dependencies>
  
</project>

只加了一个struts2的核心依赖。由于里面有依赖关系,最终加载进来的jar包如下:
在这里插入图片描述
各个jar包的说明:

  • struts2-core-2.5.22.jar:struts2框架的核心类库。
  • freemarker-2.3.28.jar:struts2的标签模板使用类库。
  • ognl-3.1.26.jar:struts2使用的一种表达式语言类库
  • javassist-3.20.0-GA.jar:对字节码进行处理的类库。
  • log4j-api-2.12.1.jar:log4j日志相关类库。
  • commons-fileupload-1.4.jar:文件上传需要的类库。
  • commons-io-2.6.jar:Java lo的扩展类库。
  • commons-lang3-3.8.1.jar:包含了一些数据类型的工具类。

引入struts2-core核心依赖后,最终会加进来8个jar包,如上所示。

3.2、web.xml配置

web.xml中需要配置struts2的核心过滤器:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
	http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         id="WebApp_ID" version="3.1">
  <display-name>struts01</display-name>
  
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  
  <!-- struts02核心过滤器配置 -->
  <filter>
     <filter-name>struts2</filter-name>
     <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
  </filter>
  <filter-mapping>
      <filter-name>struts2</filter-name>
      <url-pattern>/*</url-pattern>
  </filter-mapping>
  
</web-app>

3.3、准备页面

webapp下新建index.jsp和show.jsp页面,页面内容如下。

index.jsp内容:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
    <form action="hello.action" method="post">
         <div>
             <label>用户名:</label>
             <input type="text" name="userName" />
         </div>
         <div>
             <input  type="submit"  value="提交" />
         </div>
    </form>
</body>
</html>

show.jsp如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
      姓名:${userName}
</body>
</html>

3.4、编写Action控制器

action控制器是struts2的核心。新建一个HelloAction类,实现Action接口,内容如下:

/**   
 * @ClassName:  HelloAction   
 * @Description:TODO(描述这个类的作用)   
 * @author: yanchengzhi
 * @date:   2022年12月22日 上午10:33:30      
 * @Copyright:  
 */
public class HelloAction implements Action {
	
	// 与前端页面input中的name保持一致,并提供get和set方法,可以接收参数
	private String userName;
	
	public String getUserName() {
		return userName;
	}

	public void setUserName(String userName) {
		this.userName = userName;
	}

	@Override
	public String execute() throws Exception {
	    System.out.println("前端传过来的名字:" + userName);
		return "success";
	}

}

3.5、编写核心配置文件struts.xml

struts.xml是struts2框架的核心配置文件,这个文件必须命名为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="default" extends="struts-default" namespace="/">
                 <action name="hello" class="com.ycz.struts01.action.HelloAction">
                      <result name="success">/show.jsp</result>
                 </action>
             </package>
        </struts>

一些标签和属性说明:

  • package标签:该标签配置控制器的包结构。name属性自定义,必须保证唯一,用于区分package。extends属性表示继承某个package,其中struts-default是struts2框架的核心,一般继承这个。namespace属性表示命名空间,默认为根目录。
  • action标签:配置访问请求。name属性配置访问路径,比如页面表单中action配置的为hello.action,那么这里的name值应为hello(不包含action后缀)。class属性表明访问该路径需要执行的action控制器。
  • result标签:配置返回的页面。name属性的值可自定义,但是必须与控制器中execute()方法的返回逻辑字符串保持一致,然后里面配置页面路径。

3.6、部署测试

启动Tomcat容器,访问http://localhost:8081/struts01/。
在这里插入图片描述
输入任意内容,点击提交:
在这里插入图片描述
在这里插入图片描述
可以看到提交成功后,跳转到了show.jsp页面,并且上面的url发生了改变,说明请求是经过了action控制器的,再看控制台:
在这里插入图片描述
输出没问题,结果正确。

3.6、注意点

在JSP页面中输出结果的方式有两种,如下:

  • 使用EL表达式,如:${userName}。
  • 使用struts2标签。如:<s:property value="userName" />

上面show.jsp页面中的${userName}可以替换:
在这里插入图片描述
使用标签之前需要先引入标签库,这点类似于jstl标签。

3.7、小结

使用Struts2开发的基本步骤如下:

  • 配置pom加载Struts2核心类库
  • 配置web.xml文件
  • 开发视图层页面
  • 开发控制层Action
  • 配置struts.xml文件
  • 部署、运行项目

相关文章:

  • DW做网站的步骤/百度竞价推广方案的制定
  • 网站建设合并但与那个/seo培训学校
  • 网站开发用java/惠州网络推广平台
  • 永嘉网站制作/网络营销软件哪个好用
  • 积极推进网站建设/南宁seo营销推广
  • 网站开发发展趋势2018/上海谷歌优化
  • TI 2640 Quick start
  • 【前端Vue+后端Node.js+MySql】部署到服务器
  • 电磁功率流和坡印廷矢量
  • 远离不恰当的运动方式,缤跃酒店满足大众对专业化、品质化健身场所的需求!
  • 变频变风量通风系统如何选择
  • python---数据库操作
  • 面试题题review
  • Android studio配置大内存,编译速度更快!
  • 20-Mysql内核查询优化规则详解
  • 训练yolo系列+deepsort模式的跟踪器(一):训练deepsort
  • Shape详解
  • 修改主机名和ip地址之后需重新reconfigure GI