本文主要介绍Spring mvc的启动流程:
包括servlet注册、loc容器创建、bean的初始化,以及MVC流程
springmvc的本质就是一个servlet,并对其进行了扩展。
其扩展内容主要为这三个类:HttpServletBean,FrameworkServlet,DispatcherServlet
HttpServletBean
将web.xml中配置的参数设置到Servlet中
FrameworkServlet
将Servlet与Spring容器上下文关联
DispatcherServlet
初始化各个功能的实现类。
web.xml :
contextConfigLocation
/WEB-INF/applicationContext.xml
org.springframework.web.context.ContextLoaderListener
dispatcher
org.springframework.web.servlet.DispatcherServlet
1
dispatcher
/
配置contextConfigLocation:
contextConfigLocation
/WEB-INF/applicationContext.xml
配置ContextLoaderListener:
org.springframework.web.context.ContextLoaderListener
配置DispatcherServlet:
dispatcher
org.springframework.web.servlet.DispatcherServlet
1
dispatcher
/
IOC 就是由 Spring IOC 容器来负责对象的生命周期和对象之间的关系
ClassPathXmlApplicationContext:从项目的根目录下加载配置文件
FileSystemXmlApplicationContext:从磁盘中的加载配置文件
AnnotationConfigApplicationContext:当使用注解配置容器对象时使用此类进行注解读取,创建容器。
代码中IOC容器创建
在Java代码中,通过以下方式进行配置文件读取
//基于注解的springIOC容器
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AopBeanConfig.class);
//基于配置文件的springIOC容器
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("/spring-beans.xml");
web中IOC容器创建
org.springframework.web.context.ContextLoaderListener
Spring Bean是被实例的,组装的及被Spring 容器管理的Java对象。Spring 容器会自动完成@bean对象的实例化。创建应用对象之间的协作关系的行为称为:装配(wiring),这就是依赖注入的本质。
bean初始化方法:
applicationContext.xml文件配置:
bean类注册
package com.daoImpl;
import com.dao.AssignDao;
import com.util.JDBCUtil;
import org.springframework.stereotype.Component;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
@Component
public class AssignDaoImpl implements AssignDao {
private Connection connection = JDBCUtil.getConnection();
@Override
public void assign(int tid, int hid) {
String sql = "INSERT INTO assign (tid, hid) VALUES (?, ?)";
try {
PreparedStatement pst = connection.prepareStatement(sql);
pst.setInt(1, tid);
pst.setInt(2, hid);
pst.execute();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
示例:
@Autowired
AssignDao assignDao;
@RequestMapping("/assign")
public String assign(int hid, String students){
String[] studentIDs = students.split(";");
submitDao = new SubmitDaoImpl();
for(String studentId:studentIDs){
int sid = Integer.parseInt(studentId);
submitDao.addSubmit(sid, hid);
}
return "successful";
}
MVC(model view controller),一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。