整合Spring和SpringMVC
1.Spring容器和SpringMVC容器的關係
Spring容器是一個父容器,SpringMVC容器是一個子容器,它繼承自Spring容器。因此,在SpringMVC容器中,可以訪問到Spring容器中定義的Bean,而在Spring容器中,無法訪問SpringMVC容器中定義的Bean。在Web開發中,Controller全部在SpringMVC中掃描,除了Controller之外的Bean,全部在Spring容器中掃描(Service、Dao),按這種方式掃描,掃描完完成後,Controller可以訪問到Service。
- 為什麼不全部都在Spring中掃描 因為處理器對映器只會去SpringMVC中查詢到Controller,如果沒有,就找不到,不會去Spring中找,這就決定了,Controller必須在SpringMVC中掃描。
- 為什麼不全部在SpringMVC中掃描 在SSM整合或者Spring+SpringMVC+JdbcTemplate中,可以全部在SpringMVC中掃描,但是,在SSH整合中,這種方式不允許。
最佳實踐:
- Controller在SpringMVC中掃描,檢視解析器等在SpringMVC容器中配置
- Spring中掃描Service、Dao已經其他元件,事務定義、資料來源定義都在Spring容器中配置
案例
匯入jar包
定義bean層
package com.sxt.bean; public class User { private Integer id; private String username; private String password; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public String toString() { return "User [id=" + id + ", username=" + username + ", 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; @Repository public class UserDaoImpl implements UserDao{ @Resource private JdbcTemplate template; @Override public List<User> query() { String Sql="select * from t_user"; return 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;
@Service
public class UserServiceImpl implements UserService{
@Resource
private UserDao dao;
@Override
public List<User> query() {
return 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="username" 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-pattern>/*</url-pattern>
</filter-mapping>
<!-- Map all requests to the DispatcherServlet for handling -->
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.jpg</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.js</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.css</url-pattern>
</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;
@Controller
public class UserController {
@Resource
private UserService userService;
@RequestMapping("/query")
public String query(Model m){
List<User> query = userService.query();
m.addAttribute("list",query);
return "/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.username }--${user.password }<br>
</c:forEach>
</body>
</html>
效果測試
相關推薦
整合Spring和SpringMVC
1.Spring容器和SpringMVC容器的關係 Spring容器是一個父容器,SpringMVC容器是一個子容器,它繼承自Sp
spring和springmvc整合案例
專案原始碼傳送門:http://download.csdn.net/download/six_666666/10037348 專案框架 原始碼分享 Spring.java package com; public interface Spring { void
spring和springmvc純註解整合
首先在idea建立一個jar工程,不需要去建立任何配置檔案,也包括web.xml 首先寫spring的配置類()
Spring整合mybatis和springmvc的配置
applicationContext.xml(Spring整合Mybatis配置) <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" x
Spring和SpringMVC的區別
ioc 配置 服務 影響 了解 orm框架 開源 ext 相互 spring 是是一個開源框架,是為了解決企業應用程序開發,功能如下◆目的:解決企業應用開發的復雜性◆功能:使用基本的JavaBean代替EJB,並提供了更多的企業應用功能◆範圍:任何Java應用簡單來說,Sp
【轉】spring和springMVC的面試問題總結
cat In model 被垃圾回收 自動裝配 完整 包裝 架構 repos 1.Spring中AOP的應用場景、Aop原理、好處? 答:AOP--Aspect Oriented Programming面向切面編程;用來封裝橫切關註點,具體可以在下面的場景中使用: Aut
Spring和SpringMVC的關系
為我 處理 核心 驅動 不同的 其他 我們 推薦 視圖解析 1.Spring和SpringMVC是父子容器關系。 2.Spring整體框架的核心思想是容器,用來管理bean的生命周期,而一個項目中會包含很多容器,並且它們分上下層關系,目前最常用的一個場景是在一個項目
spring和springMVC的面試問題總結
ber mxml 是把 封裝 被垃圾回收 所有 hello 用戶 version 1.Spring中AOP的應用場景、Aop原理、好處? 答:AOP--Aspect Oriented Programming面向切面編程;用來封裝橫切關註點,具體可以在下面的場景中使用: Au
Spring和SpringMVC父子容器關系所引發的血案
-o image private cat oca pro proc commit jar包 一、背景 最近在使用工具類實現將數據庫中的數據批量導入到Solr索引庫的時候,使用單元測試提示: java.lang.IllegalStateException: Failed t
SSH中 整合spring和proxool 連線池
[摘要:比來做的一個專案中應用到了毗鄰池技巧,大概我們人人比擬認識的開源毗鄰池有dbcp,c3p0,proxool。對那三種毗鄰池來講,從機能戰失足率來講,proxool輕微比前兩種好些。本日我首要簡略] 最近做的一個專案中運用到了連線池技術,可能我們大家比較熟悉的開源連線池有dbcp,
Spring和SpringMVC常用的註解(轉)
轉於:https://blog.csdn.net/u012661010/article/details/73457732
web.xml中Spring和SpringMVC的配置
Spring配置檔案 1.預設配置。Spring在啟動時載入的配置檔案預設的是WEB-INF下的applicationContext.xml,web.xml中的配置如下。 <listener> <listener-class> org.spri
spring和springmvc元件掃描的要點
轉載於:https://www.cnblogs.com/junzi2099/p/8042476.html 在Spring整體框架的核心概念中,容器是核心思想,就是用來管理Bean的整個生命週期的,而在一個專案中,容器不一定只有一個,Spring中可以包括多個容器,而且容器有上下層關係,目前最常見
Spring和SpringMVC父子容器關係初探
一、背景 最近由於專案的包掃描出現了問題,在解決問題的過程中,偶然發現了Spring和SpringMVC是有父子容器關係的,而且正是因為這個才往往會出現包掃描的問題,我們在此來分析和理解Spring和SpringMVC的父子容器關係並且給出Spring和SpringMVC配
SSM的環境搭建(整合Spring、SpringMVC、Mybatis框架)
本案例基於開發工具IDEA、MySQL,模擬查詢學生類的資訊 專案模組圖: MySQL中Student表 (1)新建一個maven的web-app專案 (2)新建test、java、resources資料夾,並對檔案進行標記 (3)將controller(控制包)、mapper
整合spring和mybatis
spring-mybatis-druid:整合spring和mybatis,使用阿里公司的druid資料庫的連線池&以下是apache基金會的dbcp連線池 <bean id="myDataSource" class="org.apache.commons.dbcp2
整合spring和mybatis時,異常java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManagedTrans
觸發原因:單方面升級mybatis版本。 mybatis、mybatis-spring版本如下: <dependency> <groupId>org.mybatis</groupId> <artifa
Spring和SpringMVC的總結
1. 為什麼使用Spring ? 1). 方便解耦,簡化開發 通過Spring提供的IoC容器,可以將物件之間的依賴關係交由Spring進行控制,避免硬編碼所造成的過度程式耦合。
Spring和SpringMVC父子容器關係初窺
一、背景 最近由於專案的包掃描出現了問題,在解決問題的過程中,偶然發現了Spring和SpringMVC是有父子容器關係的,而且正是因為這個才往往會出現包掃描的問題,我們在此來分析和理解Spring和SpringMVC的父子容器關係並且給出Spring和SpringMV
java整合spring和hadoop HDFS
首先新增 hadoop配置檔案 hbase-site.xml ,這裡只需要配置zk的地址和埠。 <?xml version="1.0" encoding="UTF-8"?> <configuration> <property>