1. 程式人生 > >整合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包

在這裡插入圖片描述

定義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>

效果測試

在這裡   
 
 </div> 
 <div class=

相關推薦

整合SpringSpringMVC

1.Spring容器和SpringMVC容器的關係 Spring容器是一個父容器,SpringMVC容器是一個子容器,它繼承自Sp

springspringmvc整合案例

專案原始碼傳送門:http://download.csdn.net/download/six_666666/10037348 專案框架 原始碼分享 Spring.java package com; public interface Spring {       void

springspringmvc純註解整合

首先在idea建立一個jar工程,不需要去建立任何配置檔案,也包括web.xml   首先寫spring的配置類()

Spring整合mybatisspringmvc的配置

applicationContext.xml(Spring整合Mybatis配置) <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" x

SpringSpringMVC的區別

ioc 配置 服務 影響 了解 orm框架 開源 ext 相互 spring 是是一個開源框架,是為了解決企業應用程序開發,功能如下◆目的:解決企業應用開發的復雜性◆功能:使用基本的JavaBean代替EJB,並提供了更多的企業應用功能◆範圍:任何Java應用簡單來說,Sp

【轉】springspringMVC的面試問題總結

cat In model 被垃圾回收 自動裝配 完整 包裝 架構 repos 1.Spring中AOP的應用場景、Aop原理、好處? 答:AOP--Aspect Oriented Programming面向切面編程;用來封裝橫切關註點,具體可以在下面的場景中使用: Aut

SpringSpringMVC的關系

為我 處理 核心 驅動 不同的 其他 我們 推薦 視圖解析   1.Spring和SpringMVC是父子容器關系。   2.Spring整體框架的核心思想是容器,用來管理bean的生命周期,而一個項目中會包含很多容器,並且它們分上下層關系,目前最常用的一個場景是在一個項目

springspringMVC的面試問題總結

ber mxml 是把 封裝 被垃圾回收 所有 hello 用戶 version 1.Spring中AOP的應用場景、Aop原理、好處? 答:AOP--Aspect Oriented Programming面向切面編程;用來封裝橫切關註點,具體可以在下面的場景中使用: Au

SpringSpringMVC父子容器關系所引發的血案

-o image private cat oca pro proc commit jar包 一、背景 最近在使用工具類實現將數據庫中的數據批量導入到Solr索引庫的時候,使用單元測試提示: java.lang.IllegalStateException: Failed t

SSH中 整合springproxool 連線池

[摘要:比來做的一個專案中應用到了毗鄰池技巧,大概我們人人比擬認識的開源毗鄰池有dbcp,c3p0,proxool。對那三種毗鄰池來講,從機能戰失足率來講,proxool輕微比前兩種好些。本日我首要簡略] 最近做的一個專案中運用到了連線池技術,可能我們大家比較熟悉的開源連線池有dbcp,

SpringSpringMVC常用的註解(轉)

轉於:https://blog.csdn.net/u012661010/article/details/73457732               

web.xml中SpringSpringMVC的配置

Spring配置檔案 1.預設配置。Spring在啟動時載入的配置檔案預設的是WEB-INF下的applicationContext.xml,web.xml中的配置如下。 <listener> <listener-class> org.spri

springspringmvc元件掃描的要點

轉載於:https://www.cnblogs.com/junzi2099/p/8042476.html 在Spring整體框架的核心概念中,容器是核心思想,就是用來管理Bean的整個生命週期的,而在一個專案中,容器不一定只有一個,Spring中可以包括多個容器,而且容器有上下層關係,目前最常見

SpringSpringMVC父子容器關係初探

一、背景   最近由於專案的包掃描出現了問題,在解決問題的過程中,偶然發現了Spring和SpringMVC是有父子容器關係的,而且正是因為這個才往往會出現包掃描的問題,我們在此來分析和理解Spring和SpringMVC的父子容器關係並且給出Spring和SpringMVC配

SSM的環境搭建(整合SpringSpringMVC、Mybatis框架)

本案例基於開發工具IDEA、MySQL,模擬查詢學生類的資訊 專案模組圖: MySQL中Student表 (1)新建一個maven的web-app專案 (2)新建test、java、resources資料夾,並對檔案進行標記 (3)將controller(控制包)、mapper

整合springmybatis

spring-mybatis-druid:整合spring和mybatis,使用阿里公司的druid資料庫的連線池&以下是apache基金會的dbcp連線池 <bean id="myDataSource" class="org.apache.commons.dbcp2

整合springmybatis時,異常java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManagedTrans

觸發原因:單方面升級mybatis版本。 mybatis、mybatis-spring版本如下: <dependency> <groupId>org.mybatis</groupId> <artifa

SpringSpringMVC的總結

1. 為什麼使用Spring ?     1). 方便解耦,簡化開發          通過Spring提供的IoC容器,可以將物件之間的依賴關係交由Spring進行控制,避免硬編碼所造成的過度程式耦合。

SpringSpringMVC父子容器關係初窺

一、背景   最近由於專案的包掃描出現了問題,在解決問題的過程中,偶然發現了Spring和SpringMVC是有父子容器關係的,而且正是因為這個才往往會出現包掃描的問題,我們在此來分析和理解Spring和SpringMVC的父子容器關係並且給出Spring和SpringMV

java整合springhadoop HDFS

首先新增 hadoop配置檔案 hbase-site.xml  ,這裡只需要配置zk的地址和埠。 <?xml version="1.0" encoding="UTF-8"?> <configuration>     <property>