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>
在应用程序运行时,请求处理流程如下:
- 当用户访问应用程序的URL时,将打开index.jsp页面。
- 用户在该页面上输入信息并单击提交按钮。
- 用户信息将作为HTTP请求发送到服务器端。
- 服务器端使用Struts框架,根据请求密钥找到相应的Action类。
- 在Action类中处理请求,并将处理结果(Success或Error)返回给框架。
- 框架根据返回值执行响应动作。
综上所述,Spring框架和Struts框架是两种不同的Web应用程序开发框架,它们有各自的特点和优势。开发人员应根据项目需求和开发人员的技术能力综合考虑选择。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:sprng和struts有什么区别? - Python技术站