概述Java的struts2框架

yizhihongxing

概述Java的struts2框架

简介

Java的struts2框架是一个MVC(Model-View-Controller)模式的Web框架,它借鉴了许多JSP/Servlet和Struts的优点,同时也做了很多改进,达到了更优秀的Web应用开发效果。struts2框架可以很好的帮助开发人员快速搭建Web应用程序,并且可以方便地进行功能扩展和维护。

struts2框架提供了很多实用、高效、易用的功能,有很好的活动记录、国际化支持、表单验证、注解等特性。此外,struts2框架还拥有良好的体系结构,可以很好的进行配置和扩展,同时支持Spring、Hibernate、MyBatis等流行的开源框架。

如何使用

下面我们来介绍如何在Java Web应用中使用Struts2框架,整个过程主要分为以下几个步骤:

  1. 引入Struts2依赖

Struts2框架需要在Maven或Gradle中引入相应的依赖,或者手动把Jar包复制到项目中。这里以Maven为例,在pom.xml中添加如下配置:

<dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-core</artifactId>
    <version>2.5.26</version>
</dependency>
  1. 配置Struts2

在项目的src/main/resouces目录下创建一个名为struts.xml的配置文件,该文件用于配置拦截器和对应的Action。

示例配置:

<?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="true" />
    <package name="default" extends="struts-default">
        <action name="hello" class="com.example.HelloWorldAction">
            <result name="success">/hello.jsp</result>
        </action>
    </package>
</struts>
  1. 创建Action

在Java源码中创建一个名为HelloWorldAction的Class,实现自己的业务逻辑。

示例代码:

package com.example;

public class HelloWorldAction {
    private String message;

    public String execute() throws Exception {
        setMessage("Hello Struts2");
        return "success";
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }
}
  1. 搭建Web

在Web目录下创建一个名为hello.jsp的JSP文件,用于展示我们的业务逻辑数据。

示例代码:

<%@ taglib prefix="s" uri="/struts-tags" %>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Hello World</title>
</head>
<body>
<h1><s:property value="message" /></h1>
</body>
</html>
  1. 运行测试

最后一步是运行我们的Web应用程序,访问http://localhost:8080/应用程序名称/hello.action,就可以看到我们的“Hello Struts2”页面了。

示例1

下面介绍一个简单的登陆验证的例子,来认识下Struts2的基本概念和流程。

步骤:

  1. 配置struts.xml
<action name="login" class="com.example.LoginAction" method="execute">
    <result name="success">/success.jsp</result>
    <result name="error">/error.jsp</result>
    <result name="input">/login.jsp</result>
</action>
  1. 创建LoginAction类
public class LoginAction {
    private String username;
    private String password;
    public String execute() {
        if ("admin".equals(username) && "123456".equals(password)) {
            return "success";
        } else {
            return "error";
        }
    }
    // 省略setter和getter方法
}
  1. 创建login.jsp
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib uri="/struts-tags" prefix="s" %>
<html>
    <head>
        <title>登录</title>
        <meta charset="UTF-8">
    </head>
    <body>
        <s:form action="login">
            <s:textfield name="username" label="用户名"></s:textfield>
            <s:password name="password" label="密 码"></s:password>
            <s:submit value="登 录"></s:submit>
        </s:form>
    </body>
</html>
  1. 创建success.jsp和error.jsp

success.jsp与error.jsp的代码内容可以自行编写。

示例2

下面介绍一个简单的CRUD操作的例子,来认识下Struts2的操作实践。

步骤:

  1. 配置struts.xml
<package name="default" extends="struts-default">
    <action name="list" class="com.example.UserAction" method="list">
        <result name="success">/user/list.jsp</result>
    </action>
    <action name="input" class="com.example.UserAction" method="input">
        <result name="success">/user/edit.jsp</result>
    </action>
    <action name="save" class="com.example.UserAction" method="save">
        <result name="success" type="redirectAction">list</result>
    </action>
    <action name="edit" class="com.example.UserAction" method="edit">
        <result name="success">/user/edit.jsp</result>
    </action>
    <action name="delete" class="com.example.UserAction" method="delete">
        <result name="success" type="redirectAction">list</result>
    </action>
</package>
  1. 创建UserAction类
public class UserAction extends ActionSupport implements ModelDriven<User> {
    private User user;
    private List<User> userList;
    private UserService userService;
    private Long id;

    public void setUserService(UserService userService) {
        this.userService = userService;
    }

    public List<User> getUserList() {
        return userList;
    }

    public void setUserList(List<User> userList) {
        this.userList = userList;
    }

    public String list() {
        userList = userService.findAllUsers();
        return SUCCESS;
    }

    public String input() {
        return SUCCESS;
    }

    public String edit() {
        user = userService.findById(id);
        return SUCCESS;
    }

    public String save() {
        userService.save(user);
        return SUCCESS;
    }

    public String delete() {
        userService.delete(id);
        return SUCCESS;
    }

    public User getModel() {
        if (user == null) {
            user = new User();
        }
        return user;
    }

    public void prepare() throws Exception {
        if (id != null) {
            user = userService.findById(id);
        }
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }
}
  1. 创建edit.jsp和list.jsp

edit.jsp和list.jsp的内容可以自行编写。

  1. 创建UserService类

UserService是一个服务类,用于实现User的CRUD操作。

示例代码:

public class UserServiceImpl implements UserService {

    private UserDao userDao;

    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }

    @Override
    public User findById(Long id) {
        return userDao.findById(id);
    }

    @Override
    public void save(User user) {
        userDao.save(user);
    }

    @Override
    public void delete(Long id) {
        userDao.delete(id);
    }

    @Override
    public List<User> findAllUsers() {
        return userDao.findAllUsers();
    }
}
  1. 创建UserDao类

UserDao是一个数据访问层,用于访问数据库。

示例代码:

public class UserDaoImpl implements UserDao {

    private SessionFactory sessionFactory;

    public void setSessionFactory(SessionFactory sessionFactory) {
        this.sessionFactory = sessionFactory;
    }

    @Override
    public User findById(Long id) {
        return (User) sessionFactory.getCurrentSession().get(User.class, id);
    }

    @Override
    public void save(User user) {
        sessionFactory.getCurrentSession().saveOrUpdate(user);
    }

    @Override
    public void delete(Long id) {
        sessionFactory.getCurrentSession().createQuery("delete from User where id=?")
                .setParameter(0, id).executeUpdate();
    }

    @SuppressWarnings("unchecked")
    @Override
    public List<User> findAllUsers() {
        return sessionFactory.getCurrentSession().createCriteria(User.class).list();
    }
}
  1. 配置spring.xml

在spring.xml文件中配置相关Bean定义。

示例代码:

<bean id="userDao" class="com.example.UserDaoImpl">
    <property name="sessionFactory" ref="sessionFactory"/>
</bean>

<bean id="userService" class="com.example.UserServiceImpl">
    <property name="userDao" ref="userDao"/>
</bean>

以上就是Struts2的一个简单的CRUD操作示例代码。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:概述Java的struts2框架 - Python技术站

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

相关文章

  • java 数值类型分秒时间格式化的实例代码

    让我来为你详细讲解一下“Java数值类型分秒时间格式化的实例代码”的攻略。 一、需求分析 在进行实例编写前,我们先来分析一下需求: 我们需要实现一个功能能够将时间以及数值类型的分秒转化成如下格式:mm:ss,例如:将80秒转化成01:20,将150秒转化成02:30等。 二、实现思路 基于上面的需求,我们大概可以想到以下的实现思路: 通过对秒数的模运算来计算…

    Java 2023年5月20日
    00
  • Java8中的lambda表达式入门教程

    Java8中的Lambda表达式入门教程 什么是Lambda表达式 Lambda表达式是Java8中的新特性,它可以让我们更为简洁地表示实现接口方法的代码块,同时还支持函数式编程。Lambda表达式的本质是一个函数式接口实例的声明。 例如,我们常见的匿名内部类写法: new Thread(new Runnable(){ @Override public vo…

    Java 2023年5月23日
    00
  • Java实现FTP文件的上传和下载功能的实例代码

    首先我们来讲解一下如何使用Java实现FTP文件的上传和下载功能。 原理分析 FTP(File Transfer Protocol)是一种用于文件传输的协议,在本地与远程主机之间传输文件。Java中通过FTPClient类来实现FTP文件的上传和下载功能。FTPClient类是org.apache.commons.net.ftp.FTPClient类库中的一…

    Java 2023年5月19日
    00
  • 详解Java如何进行Base64的编码(Encode)与解码(Decode)

    当我们需要在网络上传输二进制数据时,常常需要将数据进行Base64编码。Java中提供了基础库,实现Base64编码非常方便。本文将详细讲解Java如何进行Base64的编码和解码。 Java Base64编码 在Java中,Base64编码可以使用Java标准库Java.util.Base64完成。具体步骤如下: 将待编码的数据转换为字节数组; 创建Bas…

    Java 2023年5月20日
    00
  • JavaSpringBoot报错“BeanDefinitionStoreException”的原因和处理方法

    原因 “BeanDefinitionStoreException” 错误通常是以下原因引起的: 配置问题:如果您的配置不正确,则可能会出现此错误。在这种情况下,您需要检查您的配置并确保它们正确。 类型不匹配:如果您的代码中存在类型不匹配问题,则可能会出现此错误。在这种情况下,您需要检查您的代码并确保它们正确。 解决办法 以下是解决 “BeanDefiniti…

    Java 2023年5月4日
    00
  • Java如何实现通过键盘输入一个数组

    Java 可以通过 Scanner 类实现键盘输入一个数组。 具体步骤如下: 引入 Scanner 类 需要使用 java.util 包中的 Scanner 类,因此需要在程序开头声明引入这个包。 import java.util.Scanner; 定义 Scanner 对象 在程序中定义一个 Scanner 对象用于读取键盘输入: Scanner sc =…

    Java 2023年5月26日
    00
  • JDBC插入数据返回数据主键代码实例

    下面就是“JDBC插入数据返回数据主键”完整攻略,包含以下内容: 概述 实现步骤 示例1:直接使用Statement执行插入操作并返回主键 示例2:使用PreparedStatement预编译执行插入操作并返回主键 1. 概述 在开发中,我们经常需要在数据库中插入数据,并获取插入后的数据主键值。JDBC 提供了两种方式来执行插入操作并返回主键:直接使用 St…

    Java 2023年5月20日
    00
  • SpringMVC的执行流程及组件详解

    以下是关于“SpringMVC的执行流程及组件详解”的完整攻略,其中包含两个示例。 SpringMVC的执行流程及组件详解 SpringMVC是一个基于MVC模式的Web框架,它可以帮助我们快速开发Web应用程序。本文将介绍SpringMVC的执行流程及组件详解,并提供两个示例。 SpringMVC的执行流程 SpringMVC的执行流程可以分为以下几个步骤…

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