struts2入门介绍及代码实例

Struts2 入门介绍及代码实例

什么是 Struts2?


Struts2 是一个基于 Java 网络应用框架,使用 MVC 设计模式,将应用程序分成模型、视图和控制器(model-view-controller,MVC)三部分,它由 Apache 软件基金会主导开发,是 Struts1 的升级版, 通过 Struts2 可以极大地简化 Web 应用的开发过程。

Struts2 开发环境准备

  • 操作系统: Windows 或 Linux
  • JDK 版本: 1.7 或以上
  • Tomcat 版本: 7.x 或以上
  • Struts2 版本: 2.x

Struts2 框架开发步骤

步骤 1:创建 Web 项目

在 Eclipse 中新建 Web 项目,设置好项目名称、服务器名称和服务器运行环境。

步骤 2:导入 Struts2 框架

将下载好的 Struts2 jar 包导入到项目中。在 Eclipse 中右键点击项目,选择 Properties -> Java Build Path -> Libraries,在右侧的界面中选择 Add External JARs,找到下载的 Struts2 jar 包导入即可。

步骤 3:配置 struts.xml

在 Web 项目的 WebContent/WEB-INF 下新建 struts.xml 配置文件,Struts2 框架需要在这个文件中配置一些参数及拦截器等功能。

<?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>
  <constant name="struts.enable.DynamicMethodInvocation" value="false" />
  <constant name="struts.devMode" value="false" />
  <package name="default" extends="struts-default">
    <action name="index">
      <result>/index.jsp</result>
    </action>
    <action name="helloWorld" class="com.example.HelloWorldAction">
      <result name="success">/helloWorld.jsp</result> 
      <result name="failure">/error.jsp</result>
    </action>
  </package>
</struts>
步骤 4:编写 Action 类

Action 就是一个 Java 类,它用于接收来自客户端的请求,并处理请求后返回结果。

public class HelloWorldAction extends ActionSupport {
   private String message;

   public String execute() throws Exception {
      setMessage("Hello World from Struts2.");
      return SUCCESS;
   }

   public String getMessage() {
      return message;
   }

   public void setMessage(String message) {
      this.message = message;
   }
}
步骤 5:编写 JSP 页面
<html>
<head><title>Hello World Example</title></head>
<body>
   <h1><s:property value="message"/></h1>
</body>
</html>

Struts2 常用标签

  • <s:if> 标签:用于条件控制,如控制页面上某些内容的显示或隐藏。
<s:if test="%{userName != null}">
   Hello <s:property value="userName"/>!
</s:if>
  • <s:iterator> 标签:用于迭代集合类型的数据,将集合中的每个元素生成多个 HTML 元素。
<s:iterator value="students">
   <tr>
      <td><s:property value="name"/></td>
      <td><s:property value="age"/></td>
      <td><s:property value="sex"/></td>
   </tr>
</s:iterator>

Struts2 数据库操作示例

为了展示 Struts2 的数据库操作,下面提供一个用户信息管理的示例。

  1. 创建数据库表:
CREATE TABLE `user_info` (
   `id` int(11) NOT NULL AUTO_INCREMENT,
   `username` varchar(20) NOT NULL,
   `password` varchar(20) NOT NULL,
   `email` varchar(50) NOT NULL,
   PRIMARY KEY (`id`)
 ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
  1. struts.xml 中配置拦截器和 Action:
<package name="default" extends="struts-default">
   <action name="login" class="com.example.LoginAction">
      <interceptor-ref name="basicStack"/>
      <result name="success">/loginSuccess.jsp</result>
      <result name="error">/loginError.jsp</result>
   </action>
</package>
  1. 编写 LoginAction 类:
public class LoginAction extends ActionSupport {
   private String username;
   private String password;

   public String execute() throws Exception {
      Connection conn = null;
      PreparedStatement pstmt = null;
      ResultSet rs = null;

      try {
         Class.forName("com.mysql.jdbc.Driver");
         String url = "jdbc:mysql://localhost:3306/test";
         String user = "root";
         String password = "password";
         conn = DriverManager.getConnection(url, user, password);
         String sql = "select * from user_info where username=? and password=?";
         pstmt = conn.prepareStatement(sql);
         pstmt.setString(1, username);
         pstmt.setString(2, password);
         rs = pstmt.executeQuery();
         if (rs.next()) {
            return SUCCESS;
         } else {
            return ERROR;
         }
      } catch (SQLException e) {
         e.printStackTrace();
         return ERROR;
      } finally {
         if (rs != null) {
            try {
               rs.close();
            } catch (SQLException ex) {
               ex.printStackTrace();
            }
         }
         if (pstmt != null) {
            try {
               pstmt.close();
            } catch (SQLException ex) {
               ex.printStackTrace();
            }
         }
         if (conn != null) {
            try {
               conn.close();
            } catch (SQLException ex) {
               ex.printStackTrace();
            }
         }
      }
   }

   public String getUsername() {
      return username;
   }

   public void setUsername(String username) {
      this.username = username;
   }

   public String getPassword() {
      return password;
   }

   public void setPassword(String password) {
      this.password = password;
   }
}
  1. 编写登录页面 login.jsp
<html>
<head>
<title>Login Page</title>
</head>
<body>
  <s:form action="login">
    <s:textfield name="username" label="Username" />
    <s:password name="password" label="Password" />
    <s:submit value="Sign In"/>
  </s:form>
</body>
</html>

以上为 Struts2 入门介绍及代码实例的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:struts2入门介绍及代码实例 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • Spring框架+jdbcTemplate实现增删改查功能

    Spring框架+jdbcTemplate实现增删改查功能 Spring框架是一个非常流行的Java开发框架,它提供了很多便捷的功能,其中包括JdbcTemplate。JdbcTemplate是Spring框架中的一个核心组件,它提供了一种简单的方式来访问数据库。本文将详细介绍如何使用Spring框架和JdbcTemplate实现增删改查功能。 环境准备 在…

    Java 2023年5月17日
    00
  • Java使用JDBC连接数据库的实现方法

    下面是详细讲解“Java使用JDBC连接数据库的实现方法”的完整攻略。 JDBC简介 Java数据库连接(Java Database Connectivity,JDBC)是Java语言中用于规范客户端程序如何访问数据库的应用程序接口,提供了诸如查询和更新数据库记录的方法。 JDBC是基于面向对象设计思想的接口,它是Java访问数据库的标准方式,使得Java程…

    Java 2023年6月16日
    00
  • 详解Java中static关键字和内部类的使用

    详解Java中static关键字和内部类的使用 Java中的static关键字和内部类是程序设计中非常重要的特性,本文将全面讲解它们的使用。 static关键字 概念 static关键字可以用来修饰类的成员变量和成员方法。 当static关键字被修饰成员变量时,该变量成为静态变量,也可以称为类变量。静态变量的特点是在内存中只有一份,无论有多少个对象被创建,静…

    Java 2023年5月26日
    00
  • 一个合格JAVA软件工程师应该具备什么

    作为一个合格的JAVA软件工程师,应该掌握以下技能和知识: 技能 1. JAVA基础 熟练掌握Java语言的基本语法、面向对象思想、异常处理等知识 熟悉常用的设计模式,如单例模式、工厂模式、观察者模式等 熟练使用JVM的各种调优和管理手段,如GC、JMX等 2. 数据库 熟悉关系型数据库和非关系型数据库,如MySQL、Oracle、MongoDB等 能够使用…

    Java 2023年5月19日
    00
  • springboot 传参校验@Valid及对其的异常捕获方式

    下面我来详细讲解一下“springboot 传参校验@Valid及对其的异常捕获方式”的完整攻略。 1. 什么是@Valid注解 Spring Boot 在处理 Web 请求时,通常会使用数据绑定将请求中的数据映射到 Controller 中的方法参数列表里。当数据格式不正确或缺失时,我们往往会在方法中手动校验数据,这会增加开发的耗时,也容易产生错误。而@V…

    Java 2023年5月27日
    00
  • SpringBoot集成Auth0 JWT的示例代码

    下面是详细讲解“SpringBoot集成Auth0 JWT的示例代码”的完整攻略,其中包含两条示例。 1. 准备工作 在开始之前,需要确保以下环境已经完成配置: JDK 1.8 Maven IDE(推荐IntelliJ IDEA) 此外,需要在 Auth0 网站上注册并创建一个应用程序,获取应用程序的 Client ID 和 Client Secret。 2…

    Java 2023年5月20日
    00
  • Spring源码阅读MethodInterceptor解析

    我会为你提供一份详细的“Spring源码阅读MethodInterceptor解析”的攻略。 Spring源码阅读MethodInterceptor解析 概述 Spring框架的核心功能是基于面向切面编程(AOP)技术实现的,而MethodInterceptor是AOP中最有代表性的接口之一。本文将对MethodInterceptor进行深入分析。 什么是M…

    Java 2023年5月31日
    00
  • 常见的Java反射应用场景有哪些?

    常见的Java反射应用场景主要包括以下几个方面: 动态代理 取得类的方法、属性等信息 调用私有方法,破解封装性 注解解析 以下是两个具体的示例: 动态代理 动态代理是Java反射的一大应用,主要用于在运行时动态地创建一个代理类。这个代理类实现了一组给定接口,它的方法调用会被转发到一个调用处理器上。在代理对象的实现中,我们可以在方法执行前后加入任意的操作,比如…

    Java 2023年5月11日
    00
合作推广
合作推广
分享本页
返回顶部