当前位置: 首页 >Java技术 > 整合Spring和SpringMVC

整合Spring和SpringMVC

1.Spring容器和SpringMVC容器的关系

Spring容器是一个父容器,SpringMVC容器是一个子容器,它继承自Spring容器。因此,在SpringMVC容器中,可以访问到Spring容器中定义的Bean,而在Spring容器中,无法访问SpringMVC容器中定义的Bean。在Web开发中,Controller全部在SpringMVC中扫描,除了Controller之外的Bean,全部在Spring容器中扫描(Service、Dao),按这种方式扫描,扫描完完成后,Controller可以访问到Service。

  1. 为什么不全部都在Spring中扫描
      因为处理器映射器只会去SpringMVC中查找到Controller,如果没有,就找不到,不会去Spring中找,这就决定了,Controller必须在SpringMVC中扫描。
  2. 为什么不全部在SpringMVC中扫描
      在SSM整合或者Spring+SpringMVC+JdbcTemplate中,可以全部在SpringMVC中扫描,但是,在SSH整合中,这种方式不允许。

最佳实践:

  1. Controller在SpringMVC中扫描,视图解析器等在SpringMVC容器中配置
  2. Spring中扫描Service、Dao已经其他组件,事务定义、数据源定义都在Spring容器中配置

案例

导入jar包

整合Spring和SpringMVC _ JavaClub全栈架构师技术笔记

定义bean层

package com.sxt.bean;public class User {	private Integer id;		private String useame;		private String password;	public Integer getId() {		retu id;	}	public void setId(Integer id) {		this.id = id;	}	public String getUseame() {		retu useame;	}	public void setUseame(String useame) {		this.useame = useame;	}	public String getPassword() {		retu password;	}	public void setPassword(String password) {		this.password = password;	}	@Override	public String toString() {		retu "User [id=" + id + ", useame=" + useame + ", password=" + password + "]";	}	}

定义dao层与实现类

package com.sxt.dao;import java.util.List;import com.sxt.bean.User;public interface UserDao {	public List<User> query();}
package com.sxt.dao.impl;import java.util.List;import javax.annotation.Resource;import org.springframework.jdbc.core.BeanPropertyRowMapper;import org.springframework.jdbc.core.JdbcTemplate;import org.springframework.stereotype.Repository;import com.sxt.bean.User;import com.sxt.dao.UserDao;@Repositorypublic class UserDaoImpl implements UserDao{	@Resource	private JdbcTemplate template;	@Override	public List<User> query() {		String Sql="select * from t_user";						retu template.query(Sql, new BeanPropertyRowMapper(User.class));	}}

定义Service和它的实现类

package com.sxt.service;import java.util.List;import com.sxt.bean.User;public interface UserService {	public List<User> query();}
package com.sxt.service.impl;import java.util.List;import javax.annotation.Resource;import org.springframework.stereotype.Service;import com.sxt.bean.User;import com.sxt.dao.UserDao;import com.sxt.service.UserService;@Servicepublic class UserServiceImpl implements UserService{		@Resource		private UserDao dao;	@Override	public List<User> query() {		retu dao.query();	}}

SpringMVC配置文件

<!-- 开启SpringMVC注解的方式 -->	<mvc:annotation-driven >	</mvc:annotation-driven>		<!-- 开启扫描 -->	<context:component-scan base-package="com.sxt.controller" use-default-filters="false">			<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>	</context:component-scan>

Spring的配置文件

<context:component-scan base-package="com.sxt.dao.impl,com.sxt.service.impl" use-default-filters="true"> 			<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/> 	</context:component-scan> 	<bean class="org.springframework.jdbc.datasource.DriverManagerDataSource" id="dataSource"> 			<!-- 配置数据库的相关信息 -->		<property name="driverClassName" value="com.mysql.jdbc.Driver" />		<property name="url"			value="jdbc:mysql://localhost:3306/pms?characterEncoding=utf-8" />		<property name="useame" value="root" />		<property name="password" value="123456" /> 	</bean> 	<bean class="org.springframework.jdbc.core.JdbcTemplate" id="template"> 		<property name="dataSource" ref="dataSource"></property> 	</bean>

web.xml文件中

分别加载spring和SpringMVC的配置

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">  <display-name>SpringMVC-01-hello</display-name>  <welcome-file-list><welcome-file>index.html</welcome-file><welcome-file>index.htm</welcome-file><welcome-file>index.jsp</welcome-file><welcome-file>default.html</welcome-file><welcome-file>default.htm</welcome-file><welcome-file>default.jsp</welcome-file>  </welcome-file-list>  <context-param>  		<param-name>contextConfigLocation</param-name>  		<param-value>classpath:application.xml</param-value>  </context-param>  	<listener>		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>	</listener> 	<servlet>		<servlet-name>springmvc</servlet-name>		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>		<init-param>			<param-name>contextConfigLocation</param-name>			<param-value>classpath:Spring-MVC.xml</param-value>		</init-param>		<load-on-startup>1</load-on-startup>	</servlet>	<filter><filter-name>encodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param></filter><filter-mapping><filter-name>encodingFilter</filter-name><url-patte>/*</url-patte></filter-mapping>	<!-- Map all requests to the DispatcherServlet for handling -->	<servlet-mapping>		<servlet-name>springmvc</servlet-name>		<url-patte>/</url-patte>	</servlet-mapping>	<servlet-mapping><servlet-name>default</servlet-name><url-patte>*.jpg</url-patte></servlet-mapping><servlet-mapping><servlet-name>default</servlet-name><url-patte>*.js</url-patte></servlet-mapping><servlet-mapping><servlet-name>default</servlet-name><url-patte>*.css</url-patte></servlet-mapping></web-app>

自定义Controller

package com.sxt.controller;import java.util.List;import javax.annotation.Resource;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.RequestMapping;import com.sxt.bean.User;import com.sxt.service.UserService;@Controllerpublic class UserController {	@Resource	private UserService userService;		@RequestMapping("/query")	public String query(Model m){		 List<User> query = userService.query();		 m.addAttribute("list",query);		retu "/user.jsp";	}}

在user页面将数据提取出来

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body>  <c:forEach items="${list}" var="user">  	${user.id }--${user.useame }--${user.password }<br>  </c:forEach></body></html>

效果测试

整合Spring和SpringMVC _ JavaClub全栈架构师技术笔记

作者:薛不二
来源链接:https://blog.csdn.net/qq_30984561/article/details/89479344

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。





本文链接:https://www.javaclub.cn/java/112107.html

标签:SpringMVC
分享给朋友: