概述Java的struts2框架

概述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日

相关文章

  • 【深度思考】聊聊JDK动态代理原理

    1. 示例 首先,定义一个接口: public interface Staff { void work(); } 然后,新增一个类并实现上面的接口: public class Coder implements Staff { @Override public void work() { System.out.println(“认真写bug……”); } } …

    Java 2023年4月17日
    00
  • java ssm框架实现分页功能的示例代码(oracle)

    实现分页功能是很多Web应用程序中的常见需求。在Java SSM框架中,我们可以使用MyBatis分页插件来实现分页功能,下面是针对Oracle数据库的完整攻略。 步骤1:添加相关依赖 要使用MyBatis分页插件,我们需要在项目中添加相关的依赖。以下是Maven配置示例: <dependency> <groupId>com.gith…

    Java 2023年6月15日
    00
  • springboot+thymeleaf打包成jar后找不到静态资源的坑及解决

    在使用Spring Boot和Thymeleaf开发Web应用程序时,我们可能会遇到打包成jar后找不到静态资源的问题。本文将详细介绍这个问题的原因和解决方法,并提供两个示例说明。 1. 问题原因 在Spring Boot应用程序中,静态资源通常存放在src/main/resources/static目录下。当我们使用Maven或Gradle将应用程序打包成…

    Java 2023年5月18日
    00
  • SpringBoot2.x配置HTTPS访问的过程

    下面是“SpringBoot2.x配置HTTPS访问的过程”的完整攻略。 1. 生成证书 首先需要生成一对密钥(证书和私钥),可以使用 keytool 工具来生成。在终端中执行以下命令: keytool -genkeypair -alias mycertalias -keyalg RSA -keysize 2048 -storetype PKCS12 -ke…

    Java 2023年5月19日
    00
  • asp.net 支付宝及时到帐接口使用详解

    ASP.NET支付宝及时到账接口使用详解: 概述 本文主要介绍如何使用ASP.NET集成支付宝及时到账接口,实现在线支付功能。 支付宝是国内常见的第三方支付平台之一,提供了丰富的支付接口。包括但不限于扫码支付、移动支付、Web支付、网页收银台等方式。今天我们要介绍的是ASP.NET集成支付宝即时到账接口。 开始 使用支付宝即时到账接口,需要注册成为支付宝商家…

    Java 2023年6月15日
    00
  • Java中如何正确重写equals方法

    Java中的equals方法通常需要被重写,以便进行对象之间的比较。正确重写equals方法不仅可以提高代码质量,而且可以避免因错误的比较导致的程序错误。下面是Java中如何正确重写equals方法的完整攻略。 1. 理解equals方法 在开始重写equals方法之前,我们需要先理解equals方法的作用以及如何使用它来比较两个对象。在Java中,equa…

    Java 2023年5月26日
    00
  • Java中拼接字符串String的N种方法总结

    下面我将详细讲解“Java中拼接字符串String的N种方法总结”的攻略步骤: 一、使用 + 号 使用 + 号进行字符串拼接 示例代码: String str = "hello"; String result = str + " world"; 解释说明: 上面代码中,我们使用 + 号将 “hello” 和 ” wor…

    Java 2023年5月26日
    00
  • Spring各版本新特性的介绍

    Spring各版本新特性的介绍 Spring是目前Java开发中最常用的框架之一,每个版本都会引入新的特性和功能。本文将详细介绍Spring各版本的新特性。 Spring 5.x的新特性 异步编程 Spring 5.x 版本引入了响应式编程模型,支持异步编程。通过 WebFlux 模块,可以使用反应堆编程模型,并使用反应式 Streams API 处理异步事…

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