sprng和struts有什么区别?

sprng和struts有什么区别?

背景介绍

sprng(简称Spring)和struts是两个常见的Java Web框架,都是基于MVC设计模式。它们都能帮助开发人员加快Web应用程序开发的速度。

区别

1. 关注点不同

Spring框架的主要关注点在于IoC(Inverse of Control,控制反转)和AOP(Aspect-Oriented Programming,面向切面编程)方面,它提供了一组硬件和API,可帮助开发人员构建基于Spring的Java应用程序和Web应用程序。

而Struts框架的主要关注点在于为Web应用程序提供清晰的MVC分层架构。 Struts从MVC模式的角度看待Web应用程序,并在应用程序开发中强制实施MVC分层模型。在Struts中,View与Controller是分开的,并且假定模型与控制器分开。

2. 框架体系结构不同

从框架体系结构的角度来看,Spring框架是一组松散耦合的API,这些API有助于将应用程序设计为分层结构,并支持各种模块化设计。Spring框架支持多种数据解析和交互模型,以及Web应用程序和非Web应用程序的开发。

相比之下,Struts框架是一个比较复杂的框架,由多个组件组成,包括ActionServlet、ActionForm、BeanUtils、Validator和Tiles等组件。 Struts特别关注于Web应用程序开发,支持多种UI技术和标记语言,例如JSP和Velocity,便于实现易于维护和部署的Web应用程序。

3. 开发模式不同

在开发模式方面,Spring框架倡导面向接口和面向对象编程的开发模式,例如依赖注入和控制反转技术。所以,使用Spring框架开发应用程序时,开发人员需要定义接口和类,并将它们在一起组装成具体的模块。

而Struts框架在开发模式方面着重于简化Web应用程序开发的过程,提供了一些与Web相关的组件以及MVC模式。在应用程序开发过程中,开发人员需要定义Action和Form类,并将它们组装在一起以及为JSP页面配置约束规则。

示例

示例1:Spring框架使用模板实现JDBC

让我们看看在Spring框架中如何执行JDBC操作。

首先,定义一个配置文件applicationContext.xml,声明数据源和JdbcTemplate对象。这可以通过以下配置完成:

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    <property name="url" value="jdbc:mysql://localhost/myDatabase" />
    <property name="username" value="myUser" />
    <property name="password" value="myPassword" />
</bean>

<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
    <property name="dataSource" ref="dataSource" />
</bean>

接下来,在代码中使用JdbcTemplate操作数据库:

public class EmployeeDAO {
    private JdbcTemplate jdbcTemplate;

    public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
    }

    public Employee getEmployeeById(int empId) {
        String sql = "SELECT * FROM employee WHERE emp_id = ?";
        Employee employee = (Employee) jdbcTemplate.queryForObject(sql, new Object[] { empId }, new EmployeeRowMapper());
        return employee;
    }

    public void insertEmployee(Employee employee) {
        String sql = "INSERT INTO employee (emp_id, first_name, last_name) VALUES (?, ?, ?)";
        jdbcTemplate.update(sql, new Object[] { employee.getEmpId(), employee.getFirstName(), employee.getLastName() });
    }
}

可以看到,Spring框架充分利用依赖注入和控制反转技术,将数据源和JdbcTemplate对象注入到DAO类中,并将JdbcTemplate作为操作数据库的重要组件,简化了JDBC操作的复杂度。

示例2:Struts框架使用Action类实现请求响应

下面是一个简单的Struts示例,展示了如何使用Action类处理请求和响应:

首先,我们定义一个简单的JSP页面(index.jsp),用于输入和提交用户信息:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Struts Example - Index Page</title>
</head>
<body>
    <div>
        <h3>Struts 1.x Example</h3>
    </div>
    <div>
        <p>Enter Your Details and Click on Submit Button</p>
        <form method="post" action="process">
            <table>
                <tbody>
                    <tr>
                        <td>
                            <label>Name:</label>
                        </td>
                        <td>
                            <input type="text" name="name" />
                        </td>
                    </tr>
                    <tr>
                        <td>
                            <label>Age:</label>
                        </td>
                        <td>
                            <input type="text" name="age" />
                        </td>
                    </tr>
                    <tr>
                        <td></td>
                        <td>
                            <button type="submit">Submit</button>
                        </td>
                    </tr>
                </tbody>
            </table>
        </form>
    </div>
</body>
</html>

接着,定义一个Action类,用于处理提交的用户信息,该类实现了Action接口,并覆盖了execute()方法,最后返回一个字符串(Success),表示请求执行成功:

public class ProcessAction extends Action {
    private String name;
    private int age;

    public void setName(String name) {
        this.name = name;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String execute() throws Exception {
        if (name.isEmpty() || age <= 0) {
            return "Error";
        } else {
            return "Success";
        }
    }
}

然后,需要将Action类配置在struts-config.xml文件中:

<struts-config>
    <form-beans>
        <form-bean name="processForm" type="com.example.ProcessForm">
            <form-property name="name" type="java.lang.String" />
            <form-property name="age" type="int" />
        </form-bean>
    </form-beans>
    <action-mappings>
        <action path="/process" name="processForm" type="com.example.ProcessAction">
            <forward name="Success" path="/success.jsp" />
            <forward name="Error" path="/error.jsp" />
        </action>
    </action-mappings>
</struts-config>

最后,创建一个结果页面success.jsp,用于显示请求处理结果:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Struts Example - Success Page</title>
</head>
<body>
    <div>
        <h3>Request Successfully Processed !!!</h3>
    </div>
    <div>
        <p>Name: <%= request.getParameter("name")%></p>
        <p>Age: <%= request.getParameter("age")%></p>
    </div>
</body>
</html>

在应用程序运行时,请求处理流程如下:

  1. 当用户访问应用程序的URL时,将打开index.jsp页面。
  2. 用户在该页面上输入信息并单击提交按钮。
  3. 用户信息将作为HTTP请求发送到服务器端。
  4. 服务器端使用Struts框架,根据请求密钥找到相应的Action类。
  5. 在Action类中处理请求,并将处理结果(Success或Error)返回给框架。
  6. 框架根据返回值执行响应动作。

综上所述,Spring框架和Struts框架是两种不同的Web应用程序开发框架,它们有各自的特点和优势。开发人员应根据项目需求和开发人员的技术能力综合考虑选择。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:sprng和struts有什么区别? - Python技术站

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

相关文章

  • 生成无限制的微信小程序码的示例代码

    生成无限制的微信小程序码需要通过调用微信开发者工具的接口实现。下面是详细的步骤: 1. 开启开发者工具服务器功能 在微信开发者工具的顶栏中点击“设置”按钮,在弹出的设置页面中开启“开发者工具服务”,如果之前没有设置安全域名,开启之后需要先设置安全域名。 2. 获取 session_key 调用 wx.login() 方法获取 code,然后通过以下方式获取 …

    Java 2023年5月23日
    00
  • java WebSocket 服务端实现代码

    下面是实现Java WebSocket服务端的完整攻略,包括示例说明。 准备工作 在开始编写WebSocket服务端代码之前,需要先确保拥有以下条件: Java开发环境,最好使用JDK8或以上版本。 WebSocket API,Java提供了JSR-356标准的WebSocket API,可以通过Maven添加依赖以使用API。 <dependency…

    Java 2023年5月19日
    00
  • 详解用java描述矩阵求逆的算法

    详解用Java描述矩阵求逆的算法 算法概述 在线性代数中,矩阵求逆是一个很重要的问题,它在各种科学计算中发挥着关键作用。矩阵求逆也被用于解决多元线性回归等问题。 基本上所有矩阵求逆算法都是基于高斯-约旦变换(Gauss-Jordan elimination)来工作的,该算法旨在通过对原始矩阵进行顺序消元、列缩放和行交换等操作,从而生成一个沿着对角线对称的单位…

    Java 2023年5月19日
    00
  • Java中Calendar类的一些常用方法小结

    下面是详细讲解“Java中Calendar类的一些常用方法小结”的完整攻略: Java中Calendar类的一些常用方法小结 什么是Calendar类 Calendar类是Java中处理日期时间的重要类之一,它位于java.util包中,提供了许多用于处理Calendar对象的方法。 Calendar类的实例化 通过调用Calendar.getInstanc…

    Java 2023年5月20日
    00
  • Java语言实现基数排序代码分享

    Java语言实现基数排序代码分享 什么是基数排序 基数排序(Radix Sort)是一种线性的时间复杂度的排序算法,它的速度比冒泡排序、插入排序、选择排序等算法都快,但是没有快速排序和归并排序快。基数排序是根据排序元素的每一个数位来排序元素的算法,时间复杂度为O(dn),其中d为元素位数。 基数排序的思路 基数排序依次对文本的排序关键字的每一位进行排序,从高…

    Java 2023年5月19日
    00
  • 详解Java5、Java6、Java7的新特性

    详解 Java5、Java6、Java7 的新特性 随着 Java 技术的不断发展,每个新版本都带来了新的特性和改进,从 Java5 到 Java7,Java 技术得到了很多重大的改进和新增功能。本文将详细讲解 Java5、Java6、Java7 的新特性。 Java5 Java5 中引入了很多重要的特性,这些特性极大地改进了 Java 语言和虚拟机的性能和…

    Java 2023年5月26日
    00
  • Java中的异常类有哪些?

    当Java程序运行中发生异常时,将会抛出一个异常类对象。Java中的异常类是通过Throwable类继承而来的,其中定义了两个重要的子类:Error和Exception。Error类表示由Java虚拟机生成的错误,例如系统崩溃或者虚拟机无法执行。而Exception类代表程序可以处理的异常,一般来说,程序中出现的异常都属于Exception类下的子类。下面将…

    Java 2023年4月27日
    00
  • Java 四种基本加密算法分析

    Java 四种基本加密算法分析 在Java中,有四种基本的加密算法,分别是:DES、AES、RSA 和 MD5。本文将对四种算法进行详细讲解,并给出相关的示例说明。 DES 加密算法 DES(Data Encryption Standard)是一种对称加密算法,其密钥长度为64位,加密和解密使用相同的密钥。DES算法的加密过程如下: 将明文进行填充,使其长度…

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