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日

相关文章

  • php页面跳转session cookie丢失导致不能登录等问题的解决方法

    为了解决PHP页面跳转、Session和Cookie丢失导致不能登录等问题,我们可以采用以下方法: 解决Session丢失的方法 Session指的是在服务器端存储用户信息。当用户登录成功后,服务器会为该用户分配一个Session ID,并将该Session ID存储在Cookie中或者URL参数中。下面介绍两种解决Session丢失的方法: 1.设置ses…

    Java 2023年6月16日
    00
  • Java基础语法:逻辑控制

    下面是对于Java基础语法中逻辑控制的完整攻略: 逻辑控制 在Java中,逻辑控制结构有三个主要的表现形式:条件语句、循环语句和跳转语句。这些结构主要用于控制程序的执行流程,使得程序可以按照既定的规则进行操作。 条件语句 条件语句是根据一个条件是否满足,来执行相应的代码块或语句的控制组件。在Java中,常见的条件语句有if语句和switch语句。 if语句 …

    Java 2023年5月23日
    00
  • 最小树形图模板朱刘算法分享

    最小树形图模板朱刘算法分享 最小树形图(Minimum Spanning Arborescence)是有向图的一种特殊的生成树,它包含了图中所有的点且仅有一个点入度为0(源点)。朱刘算法是一种求解最小树形图的算法,时间复杂度为$O(VE)$。 以下是朱刘算法的完整攻略: 1. 算法原理 朱刘算法基于”缩点”思想和“基环树”的性质,在每一个生成树已经连出来的点…

    Java 2023年5月19日
    00
  • Java控制台输入数组并逆序输出的方法实例 原创

    Java控制台输入数组并逆序输出的方法实例 题目描述: 在Java环境下,使用控制台输入一个整型数组,然后将数组逆序输出。请给出解决该问题的方法。 解决方案: 1.使用Scanner类进行控制台输入,然后利用Collections.reverse()方法逆序输出数组。 import java.util.*; public class InputReverse…

    Java 2023年5月26日
    00
  • Java获取当前时间方法总结

    Java获取当前时间方法总结 在Java中,有多种方法可以获取当前时间。本文将总结其中常用的方法,并提供示例代码。 方法一:使用System.currentTimeMillis() System.currentTimeMillis()方法返回当前时间的毫秒数。可以使用这个值来获取当前时间。 示例代码: long currentTimeMillis = Sys…

    Java 2023年5月20日
    00
  • SpringBoot与SpringMVC中参数传递的原理解析

    在SpringBoot和SpringMVC中,参数传递是Web开发中的重要部分。本文将详细讲解SpringBoot和SpringMVC中参数传递的原理解析,并提供两个示例说明。 SpringBoot中参数传递 在SpringBoot中,我们可以使用@RequestParam注解来获取请求参数。下面是一个示例: @GetMapping("/user&…

    Java 2023年5月18日
    00
  • 比较详细的关于javascript 解析json的代码

    当我们获取到JSON格式的数据时,需要将其解析为JavaScript对象才能够方便地操作和使用其数据。下面详细解析一下JavaScript如何解析JSON格式的数据。 1. JSON的基本结构 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它是基于JavaScript的一个子集,但是独立于编程语言。 JSON的基…

    Java 2023年5月26日
    00
  • 一文带你了解如何正确使用MyBatisPlus

    一文带你了解如何正确使用MyBatis Plus MyBatis Plus 是 MyBatis 的增强工具,在 MyBatis 的基础上,提供了更加便捷的方法和功能。本文将介绍如何正确使用 MyBatis Plus,包括安装、配置、使用和优化等方面。 安装和配置 在使用 MyBatis Plus 之前,需要进行一些准备工作,包括 Maven 依赖的配置和配置…

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