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日

相关文章

  • java之CSV大批量数据入库的实现

    Java之CSV大批量数据入库的实现 背景 在实际项目中,常常需要处理大量的数据,而CSV格式是一种很常见的数据格式,因此对于CSV数据进行入库操作是非常必要的。本文将介绍如何使用Java实现CSV大批量数据入库的实现。 准备工作 在开始正文之前,我们需要进行几个工作: 导入相关依赖 在项目中需要使用opencsv来解析CSV文件,因此需要在maven或gr…

    Java 2023年5月20日
    00
  • Spring security自定义用户认证流程详解

    下面为大家详细讲解“Spring security自定义用户认证流程详解”的完整攻略。 1. Spring Security简介 Spring Security是Spring框架的一个子项目,提供了完善的安全管理功能。它通过使用一系列过滤器来拦截网络请求,并对每个请求进行安全管理。 Spring Security提供了以下核心功能: 用户认证(Authent…

    Java 2023年5月20日
    00
  • java编程进阶小白也能手写HashMap代码

    Java编程进阶:小白也能手写HashMap代码 前言 HashMap 是 Java 中常用的数据结构之一,它可以用于键值对存储和快速查找。虽然 Java 提供了 HashMap 的实现,但是手写 HashMap 算是 Java 编程基本功之一。本文将向大家介绍手写 HashMap 的完整攻略。 原理概述 Java 中 HashMap 是由数组和链表构成的,…

    Java 2023年5月26日
    00
  • Java实现常见的排序算法的示例代码

    下面是“Java实现常见的排序算法的示例代码”的完整攻略。 一、了解排序算法 首先,我们需要对排序算法有所了解。排序算法就是将一组无序的数据按照一定规则进行排序的过程,目的是让数据按照一定规则有序排列,方便处理。常见的排序算法有冒泡排序、选择排序、插入排序、快速排序、堆排序和归并排序等。每种排序算法的实现方式和时间复杂度各不相同,具体可以查看相关资料进行深入…

    Java 2023年5月19日
    00
  • Java实战之校园外卖点餐系统的实现

    Java实战之校园外卖点餐系统的实现攻略 本次攻略将介绍如何用Java实现一个校园外卖点餐系统。本系统涵盖了用户注册登录、商家上传餐品、用户下单、商家接单等功能。 思路分析 用户注册登录:用户需要填写基本信息,通过验证后才能注册成功。注册成功后,用户可以用自己的账号密码进行登录。 商家上传餐品:商家需要填写餐品名称、价格、描述和图片等信息,上传后用户可以浏览…

    Java 2023年5月24日
    00
  • SpringMVC 拦截器不拦截静态资源的三种处理方式方法

    在 SpringMVC 中,拦截器可以用来拦截请求并进行处理。但是,有时候我们不希望拦截静态资源,因为这会影响应用程序的性能。本文将详细讲解 SpringMVC 拦截器不拦截静态资源的三种处理方式方法,并提供两个示例说明。 1. 方式一:使用 addResourceHandlers 方法 我们可以使用 addResourceHandlers 方法来配置静态资…

    Java 2023年5月18日
    00
  • docker(一):Develop faster. Run anywhere.

    前言 在进行微服务部署时,首先需要进行部署环境的搭建。目前,Docker 已经成为了微服务部署的主流解决方案之一。Docker 可以帮助我们更快地打包、测试以及部署应用程序,从而缩短从编写到部署运行代码的周期。 在本文中,我们将对 Docker 进行初步的讲解,并介绍如何将映像生成并作为容器运行、使用 Docker Hub 共享映像。具体的功能点如下: 将映…

    Java 2023年5月11日
    00
  • Struts2源码分析之ParametersInterceptor拦截器

    下面我将就“Struts2源码分析之ParametersInterceptor拦截器”的完整攻略给您讲解,全文将分别从以下几个方面展开: ParametersInterceptor介绍 ParametersInterceptor源码分析 ParametersInterceptor示例 1. ParametersInterceptor介绍 Parameters…

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