因为最近接手了一个老项目,项目使用的是SSH框架,也就是Spring + Struts2 + Hibernate的技术框架,现在主流基本上用的都是SSM(Spring + SpringMVC + Mybatis)的了,只有像一些政府的老项目还是SSH框架,所以遇到了,然后还不会,就只有一个方法:主动学习。于是在b站找了一个视频跟着学,也做了一些简单的笔记,趁着有时间,将笔记整理一下记录到博客,方便以后随时翻阅补充。
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)
官网地址:https://struts.apache.org/download.cgi。
<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.0modelVersion>
<groupId>com.yczgroupId>
<artifactId>struts01artifactId>
<version>0.0.1-SNAPSHOTversion>
<dependencies>
<dependency>
<groupId>org.apache.strutsgroupId>
<artifactId>struts2-coreartifactId>
<version>2.5.22version>
dependency>
dependencies>
project>
只加了一个struts2的核心依赖。由于里面有依赖关系,最终加载进来的jar包如下:
各个jar包的说明:
引入struts2-core核心依赖后,最终会加进来8个jar包,如上所示。
web.xml中需要配置struts2的核心过滤器:
<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>struts01display-name>
<welcome-file-list>
<welcome-file>index.jspwelcome-file>
welcome-file-list>
<filter>
<filter-name>struts2filter-name>
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilterfilter-class>
filter>
<filter-mapping>
<filter-name>struts2filter-name>
<url-pattern>/*url-pattern>
filter-mapping>
web-app>
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>Titletitle>
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>Titletitle>
head>
<body>
姓名:${userName}
body>
html>
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";
}
}
struts.xml是struts2框架的核心配置文件,这个文件必须命名为struts.xml,配置如下:
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.jspresult>
action>
package>
struts>
一些标签和属性说明:
启动Tomcat容器,访问http://localhost:8081/struts01/。
输入任意内容,点击提交:
可以看到提交成功后,跳转到了show.jsp页面,并且上面的url发生了改变,说明请求是经过了action控制器的,再看控制台:
输出没问题,结果正确。
在JSP页面中输出结果的方式有两种,如下:
上面show.jsp页面中的${userName}可以替换:
使用标签之前需要先引入标签库,这点类似于jstl标签。
使用Struts2开发的基本步骤如下: