【软件开发架构】初识Spring框架—以学生信息管理系统为例

初识Spring框架—以学生信息管理系统为例
实验要求:
  1. 采用注解的方式完成学生信息的查询和录入操作
  2. 基于bean的配置和基于annotation的装配方式
  3. 基于AOP完成日志输出。
实验步骤:
  1. 在eclipse下创建项目stuManagement
  2. 添加.jar包
  3. 在src下创建com.itheima.po.Student接口,添加selectStu()、insertStu()方法
  4. 在src下创建com.itheima.po.CollegeStudent类,实现Student接口,包含属性:String类型stuNo,stuName和score(Integer)
  5. 在src下创建com.itheima.aspect.LogAspect切面,定义环绕通知myAround()。
  6. 在src下创建applicationContext.xml文件,进行文件配置
  7. 在src下创建com.itheima.test.StuTest类,调用selectStu()、insertStu()方法。
程序代码:

Student接口

public interface Student {
	public void selectStu();
	public void insertStu();
}

CollegeStudent类

public class CollegeStudent implements Student {
	String stuNo;
	String stuName;
	Integer score;
	public String getStuNo() {
		return stuNo;
	}
	public void setStuNo(String stuNo) {
		this.stuNo = stuNo;
	}
	public String getStuName() {
		return stuName;
	}
	public void setStuName(String stuName) {
		this.stuName = stuName;
	}
	public Integer getScore() {
		return score;
	}
	public void setScore(Integer score) {
		this.score = score;
	}
	@Override
	public void selectStu() {// 查询学生信息
		System.out.println("查询学生信息");
	}

	@Override
	public void insertStu() {// 添加学生信息
		System.out.println("添加学生信息");
	}
}

LogAspect切面类

public class LogAspect implements MethodInterceptor{
	@Override
	public Object invoke(MethodInvocation mi) throws Throwable {
		myAround();
		Object obj = mi.proceed();
		myAround();
		return obj;
	}
	/**
	 * 环绕通知
	 */
	public void myAround() {
		System.out.println("环绕通知:模拟事务...");
	}
}

applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
          http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
          http://www.springframework.org/schema/aop 
          http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
          http://www.springframework.org/schema/context 
          http://www.springframework.org/schema/context/spring-context-4.3.xsd">
    <!-- 1.目标类 -->
    <bean id="stu" class="com.itheima.po.CollegeStudent"/>
	<!-- 2.切面类 -->
	<bean id="LogAspect" class="com.itheima.aspect.LogAspect"/>
	<!-- 3.使用Spring代理工厂定义一个名称为stuProxy的代理对象  -->
	<bean id="stuProxy" class="org.springframework.aop.framework.ProxyFactoryBean">
		<!-- 3.1指定代理实现的接口 -->
		<property name="proxyInterfaces" value="com.itheima.po.Student"/>
		<!-- 3.2指定目标对象 -->
		<property name="target" ref="stu"/>
		<!-- 3.3指定切面,植入环绕通知 -->
		<property name="interceptorNames" value="LogAspect"/>
		<!-- 3.4指定代理方式:cglib代理 -->
		<property name="proxyTargetClass" value="true"/>
	</bean>
</beans>

StuTest类

public class StuTest {
	public static void main(String[] args) {
		ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
		Student stu = (Student) applicationContext.getBean("stuProxy");
		stu.selectStu();
		stu.insertStu();
	}
}
运行结果:

在这里插入图片描述

大部分Java应用都是Web应用,展现层是Web应用不可忽略的重要环节。Spring为展现层提供了一个优秀的Web框架——Spring MVC。和众多其它Web框架一样,它基于MVC设计理念,此外,由于它采用了松散耦合可插拔组件结构,具有比其它MVC框架更多的扩展性和灵活性。 Spring MVC框架围绕DispatcherServlet这个核心展开,DispatcherServlet的作用是截获请求并组织一系列组件共同完成请求的处理工作。 JavaServer Faces (JSF) 是一种用于构建 Web 应用程序的新标准 Java 框架。它提供了一种以组件为心来开发 Java Web 用户界面的方法,从而简化了开发。JavaServer Faces 还引起了广大 Java/Web 开发人员的兴趣。“企业开发人员”和 Web 设计人员将发现 JSF 开发可以简单到只需将用户界面 (UI) 组件拖放到页面上,而“系统开发人员”将发现丰富而强健的 JSF API 为他们提供了无与伦比的功能和编程灵活性。JSF 还通过将良好构建的模型-视图-控制器 (MVC) 设计模式集成到它的体系结构,确保了应用程序具有更高的可维护性。最后,由于 JSF 是通过 Java Community Process (JCP) 开发的一种 Java 标准,因此开发工具供应商完全能够为 JavaServer Faces 提供易于使用的、高效的可视化开发环境。 ① 整个过程开始于客户端发送一个HTTP请求; ② DispatcherServlet接收这个请求后,并将请求的处理工作委托给具体的处理器(Handler),后者负责处理请求执行相应的业务逻辑。在这之前,DispatcherServlet必须能够凭借请求信息(URL或请求参数等)按照某种机制找到请求对应的处理器,DispatcherServlet是通过垂询HandlerMapping完成这一工作的; ③ 当DispatcherServlet从HandlerMapping得到当前请求对应的处理器后,它就将请求分派给这个处理器。处理器根据请求的信息执行相应的业务逻辑,一个设计良好的处理器应该通过调用Service层的业务对象完成业务处理,而非自己越俎代庖。 Spring提供了丰富的处理器类型,在真正处理业务逻辑前,有些处理器会事先执行两项预处理工作: 1)将HttpServletRequest请求参数绑定到一个POJO对象; 2)对绑定了请求参数的POJO对象进行数据合法性校验; ④ 处理器完成业务逻辑的处理后将返回一个ModelAndView给DispatcherServlet,ModelAndView包含了视图逻辑名和渲染视图时需要用到的模型数据对象; ⑤ 由于ModelAndView包含的是视图逻辑名,DispatcherServlet必须知道这个逻辑名对应的真实视图对象,这项视图解析的工作通过调用ViewResolver来完成; ⑥ 当得到真实的视图对象后,DispatcherServlet将请求分派给这个View对象,由其完成Model数据的渲染工作; ⑦ 最终客户端得到返回的响应,这可能是一个普通的HTML页面,也可能是一个Excel电子表格、甚至是一个PDF文档等不一而足的视图形式,Spring的视图类型是异常丰富和灵活的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CS_木成河

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值