Apache Struts 2入门实战

简介: Apache Struts 2入门实战 本文使用最新的Struts 2.3.24.1版,演示了怎样用Apache Struts 2构建最基本的Web应用。 项目的基本需求: 1)Maven 3.

Apache Struts 2入门实战

本文使用最新的Struts 2.3.24.1版,演示了怎样用Apache Struts 2构建最基本的Web应用。

项目的基本需求:

1)Maven 3.3.3
2)Eclipse Mars.1 Release (4.5.1)
3)Struts 2.3.24.1

一、项目的主体结构

1、新建一Maven项目

Group Id:com.ch.common
Artifact Id:Struts2Example
Packaging:war

2、解决Maven Web项目的一个错误

鼠标右键点击项目,选择”Java EE Tools”->”enerate Deployment Descriptor Stub”,会自动产生WEB-INF子目录和web.xml配置文件。

3、导入Struts 2依赖包

项目pom.xml内容如下:

<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.ch.common</groupId>
    <artifactId>Struts2Example</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>
    <dependencies>
        <dependency>
            <groupId>org.apache.struts</groupId>
            <artifactId>struts2-core</artifactId>
            <version>2.3.24.1</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <build>
        <finalName>Struts2Example</finalName>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.0</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project> 

4、项目的主体结构如下图所示

二、JSP页面

1、编写JSP登录页面

包括输入用户名和密码的输入框、提交按钮等。
login.jsp

<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head></head>
<body>
    <h1>Struts 2 Hello World Example</h1>
    <s:form action="Welcome">
        <s:textfield name="username" label="Username" />
        <s:password name="password" label="Password" />
        <s:submit />
    </s:form>
</body>
</html> 

2、编写JSP欢迎页面

登录成功后,进入欢迎页面。
welcome_user.jsp

<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head></head>
<body>
    <h1>Struts 2 Hello World Example</h1>
    <h2>
        Hello
        <s:property value="username" />
    </h2>
</body>
</html> 

3、编写业务逻辑Action类

Struts 2的Action类,负责所有的业务逻辑。
WelcomeUserAction.java

package com.ch.user.action;
public class WelcomeUserAction {
    private String username;
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    // Struts业务逻辑放这里
    public String execute(){
        return "SUCCESS";
    }
} 

在Struts 2中,Action类无需实现任何借口或继承任何类,唯一的要求就是它必须创建一个execute()方法来放置所有的业务逻辑,并且此方法必须返回String类型的字符串,告知用户它要重定向到哪里。
注意:有些开发者实现了com.opensymphony.xwork2.Action类,这取决于你的需求和应用场景,这个类提供了常用的常量值。

4、Struts 2的配置文件

Struts 2的配置文件名必须是struts.xml。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
    <package name="user" namespace="/pages" extends="struts-default">
        <action name="Login">
            <result>login.jsp</result>
        </action>
        <action name="Welcome" class="com.ch.user.action.WelcomeUserAction">
            <result name="SUCCESS">welcome_user.jsp</result>
        </action>
    </package>
</struts> 

Struts配置文件声明了一个包(Package)和封装的Action类,Action类是自解释的,下面对配置中的一些内容做一说明:

1)package name=”user”
仅仅定义了一个包名,无需关心它。

2)namespace=”/pages”
这用于匹配URL为“/”的访问路径。

3)extends=”struts-default”
意思是此包继承自struts-default包组件和拦截器,而这些是在struts-default.xml文件中声明的,这个配置文件位于struts2-core.jar文件中。

5、web.xml配置

Web应用描述符web.xml文件的配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    version="3.0">
    <display-name>Struts 2 Web Application</display-name>
    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <welcome-file-list>
        <welcome-file>pages/login.jsp</welcome-file>
    </welcome-file-list>
</web-app> 

6、运行项目

对于Struts 2 Web项目,可以通“.action”后缀直接访问Action。
浏览器访问:http://localhost:8080/Struts2Example/pages/Login.action
或者是访问:http://localhost:8080/Struts2Example/pages/login.jsp 
 
任意输入用户名和密码, 
 
可以看到,访问正常!

目录
相关文章
|
2月前
|
消息中间件 数据挖掘 Kafka
Apache Kafka流处理实战:构建实时数据分析应用
【10月更文挑战第24天】在当今这个数据爆炸的时代,能够快速准确地处理实时数据变得尤为重要。无论是金融交易监控、网络行为分析还是物联网设备的数据收集,实时数据处理技术都是不可或缺的一部分。Apache Kafka作为一款高性能的消息队列系统,不仅支持传统的消息传递模式,还提供了强大的流处理能力,能够帮助开发者构建高效、可扩展的实时数据分析应用。
112 5
|
3月前
|
消息中间件 存储 druid
大数据-156 Apache Druid 案例实战 Scala Kafka 订单统计
大数据-156 Apache Druid 案例实战 Scala Kafka 订单统计
66 3
|
5月前
|
安全 Java 网络安全
Apache Struts 2 2.3.14.3 远程代码执行(CVE-2013-2134)
Apache Struts 2 2.3.14.3 远程代码执行(CVE-2013-2134)
Apache Struts 2 2.3.14.3 远程代码执行(CVE-2013-2134)
|
5月前
|
安全 Java 网络安全
Apache Struts Showcase App 2.0.0 到 2.3.13(在 2.3.14.3 之前的 Struts 2 中使用)远程代码执行(CVE-2013-1965)
Apache Struts Showcase App 2.0.0 到 2.3.13(在 2.3.14.3 之前的 Struts 2 中使用)远程代码执行(CVE-2013-1965)
|
5月前
|
关系型数据库 Linux 网络安全
"Linux系统实战:从零开始部署Apache+PHP Web项目,轻松搭建您的在线应用"
【8月更文挑战第9天】Linux作为服务器操作系统,凭借其稳定性和安全性成为部署Web项目的优选平台。本文以Apache Web服务器和PHP项目为例,介绍部署流程。首先,通过包管理器安装Apache与PHP;接着创建项目目录,并上传项目文件至该目录;根据需要配置Apache虚拟主机;最后重启Apache服务并测试项目。确保防火墙允许HTTP流量,正确配置数据库连接,并定期更新系统以维持安全。随着项目复杂度提升,进一步学习高级配置将变得必要。
433 0
|
7月前
|
存储 Apache 文件存储
在Apache环境下为Web网站增设访问控制:实战指南
在Apache服务器上保护网站资源涉及启用访问控制模块(`mod_authz_core`和`mod_auth_basic`),在`.htaccess`或`httpd.conf`中设定权限,如限制对特定目录的访问。创建`.htpasswd`文件存储用户名和密码,并使用`htpasswd`工具管理用户。完成配置后重启Apache服务,访问受限目录时需提供有效的用户名和密码。对于高安全性需求,可考虑更复杂的认证方法。【6月更文挑战第20天】
480 4
|
7月前
|
弹性计算 应用服务中间件 Linux
双剑合璧:在同一ECS服务器上共存Apache与Nginx的实战攻略
在ECS服务器上同时部署Apache和Nginx的实战:安装更新系统,Ubuntu用`sudo apt install apache2 nginx`,CentOS用`sudo yum install httpd nginx`。配置Nginx作为反向代理,处理静态内容及转发动态请求到Apache(监听8080端口)。调整Apache的`ports.conf`监听8080。重启服务测试,实现两者高效协同,提升Web服务性能。记得根据流量和需求优化配置。【6月更文挑战第21天】
670 1
|
6月前
|
分布式计算 Apache Spark
|
1月前
|
存储 人工智能 大数据
The Past, Present and Future of Apache Flink
本文整理自阿里云开源大数据负责人王峰(莫问)在 Flink Forward Asia 2024 上海站主论坛开场的分享,今年正值 Flink 开源项目诞生的第 10 周年,借此时机,王峰回顾了 Flink 在过去 10 年的发展历程以及 Flink社区当前最新的技术成果,最后展望下一个十年 Flink 路向何方。
342 33
The Past, Present and Future of Apache Flink
|
3月前
|
SQL Java API
Apache Flink 2.0-preview released
Apache Flink 社区正积极筹备 Flink 2.0 的发布,这是自 Flink 1.0 发布以来的首个重大更新。Flink 2.0 将引入多项激动人心的功能和改进,包括存算分离状态管理、物化表、批作业自适应执行等,同时也包含了一些不兼容的变更。目前提供的预览版旨在让用户提前尝试新功能并收集反馈,但不建议在生产环境中使用。
945 13
Apache Flink 2.0-preview released

热门文章

最新文章

推荐镜像

更多