写在开头:
传统的MVC开发模式中,处理业务层用到的是Servlet技术,但是Servlet存在一些问题,做表单传递参数时,会导致大量的数据参数冗余,不能自动类型转换;页面跳转时,路径被写死在类文件中,不利于后续维护。我们为每一个功能开发一个Servlet控制器,会导致Servlet控制器过多,也不利于维护。所以我们引入了Struts2框架的学习。 对于框架而言,它属于软件开发中的半成品,主要解决一些软件开发中的一些通用问题,提高开发效率。它是 Apache公司提供的,典型的 MVC框架。
Struts提供了一个 Action控制器 替换原有的 Servlet控制器,也是基于 MVC的软件开发模式。
Struts通过官网下载之后可以得到其目录结构如下:
struts目录结构 appsStruts2提供的应用实例docsJava doc注释常用API接口libStruts2核心库三方依赖库srcStruts2中的源代码项目新建完成之后,将我们的jar包导入到一个新建的lib文件夹下,如图:
链接:https://pan.baidu.com/s/1-lO7Hs0F0A98juUQ0Xa2RQ 提取码:aavp
因为以前 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>开发 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) { } }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>eLing/mage1/img/20201021173118.png) |
执行结果如下: