1. 程式人生 > >SpringMVC中資料庫連結配置

SpringMVC中資料庫連結配置

從昨天開始一直在糾結資料庫連結的問題,現在可以說才從庫裡面查出資料。這種感覺還是希望和大家分享一下

首先我們來看看我用ecplise建立專案的目錄結構:


上面是我的目錄結構,和資料庫連結的都放在了applicantContent.xml這個配置檔案裡面了。在最開始學習SpringMVC的時候配置檔案的位置真的是一個比較困擾的問題。而且如果你是自學的話找,往往在網上看一篇文章然後跟著做發現在自己本地就是不行,有的時候儘管從望山直接拉下一個別人佈置好的SpringMVC你興致沖沖的匯入到ecplise中,可是還是不行,伴隨著各種無奈,並不是說人家的專案不行,各種原因吧,可能你本地ecplise配置和人家的不一樣都有。好了,不扯這些,我們首先來看看配置檔案,首先我們在一開始建立web工程的時候自帶的 是一個web.xml,所有的開始我們都從web.xml中進行,而且我還是注意的是web.xml你需要審批,配置什麼,別看到網上的程式碼全部都複製過來。配置檔案其實是你的程式碼裡面需要讀取的,你需要實現怎樣的功能,就配置什麼,然後引入相關的jar

那麼我們這個地方需實現的是配置jdbc的配置,我們來看看web.xml應該怎樣來進行配置:

<?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>Shopping</display-name>
	<!-- 過濾器編碼設定 -->
	<filter>
		<filter-name>CharacterEncodingFilter</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>CharacterEncodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	<!-- 資訊轉發器 -->
	<servlet>
		<servlet-name>springMVC</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>springMVC</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>
	<listener>
	<listener-class>
	org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener>
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath*:applicationContext.xml</param-value>
	</context-param>
	<!-- 允許訪問靜態資源 -->
	<servlet-mapping>
		<servlet-name>default</servlet-name>
		<url-pattern>*.html</url-pattern>
	</servlet-mapping>
	<!-- 歡迎頁 -->
	<welcome-file-list>
		<welcome-file>index.html</welcome-file>
	</welcome-file-list>
	<!-- 配置log4j配置檔案路徑 -->
	<context-param>
		<param-name>log4jConfigLocation</param-name>
		<param-value>log4j.properties</param-value>
	</context-param>
	<!-- 60s 檢測日誌配置 檔案變化 -->
	<context-param>
		<param-name>log4jRefreshInterval</param-name>
		<param-value>60000</param-value>
	</context-param>
	<!-- 配置Log4j監聽器 -->
	<listener>
		<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
	</listener>
</web-app>
上面是我的web.xml的配置,其中有一段忘記了註釋,也是我們這地方比較重要的,那就是
	<listener-class>
	org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath*:applicationContext.xml</param-value>
	</context-param>
為什麼說這一段重要,因為我們從在SpringMVC中許多的bean都是配置在applicantContent.xml中,當然連結資料庫也是一樣配置到了這個檔案,其實這一段為載入配置檔案applicantContent.xml只有在載入之後我們在java程式碼中才能找到這個檔案,

從上面的目錄中我們可以看到的是還有一個配置檔案SpringMVC-Servlet.xml這個配置檔案,其實這個是用來控制我們的訪問,作為web專案介面不可避免的,為了很好的訪問,我們用這個配置檔案來進行控制訪問的許可權,或者對url進行轉發。也就是我們在上面註釋的資訊轉發器,那麼我們拿出來這個SpringMVC-servlet.xml看看:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:util="http://www.springframework.org/schema/util" xmlns:mvc="http://www.springframework.org/schema/mvc"
	xsi:schemaLocation="
  http://www.springframework.org/schema/beans
  http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
  http://www.springframework.org/schema/util
  http://www.springframework.org/schema/util/spring-util-4.2.xsd
  http://www.springframework.org/schema/context 
  http://www.springframework.org/schema/context/spring-context-4.2.xsd
  http://www.springframework.org/schema/mvc
  http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd">

	<!-- 解決中文亂碼 -->
	<mvc:annotation-driven>
		<mvc:message-converters register-defaults="true">
			<bean class="org.springframework.http.converter.StringHttpMessageConverter">
				<property name="supportedMediaTypes">
					<list>
						<value>text/plain;charset=UTF-8</value>
						<value>text/html;charset=UTF-8</value>
						<value>application/json;charset=UTF-8</value>
					</list>
				</property>
			</bean>
		</mvc:message-converters>
	</mvc:annotation-driven>
	<!-- 支援返回json(避免IE在ajax請求時,返回json出現下載 ) -->
	<bean id="utf8Charset" class="java.nio.charset.Charset"
		factory-method="forName">
		<constructor-arg value="UTF-8" />
	</bean>
	<bean
		class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
		<property name="messageConverters">
			<list>
				<bean
					class="org.springframework.http.converter.StringHttpMessageConverter">
					<constructor-arg ref="utf8Charset" />
				</bean>
				<bean id="mappingJacksonHttpMessageConverter"
					class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
					<property name="supportedMediaTypes">
						<list>
							<value>text/plain;charset=UTF-8</value>
							<value>application/json;charset=UTF-8</value>
						</list>
					</property>
				</bean>
			</list>
		</property>
	</bean>
	<bean class="org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter" />
	<bean
		class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" />
	<bean
		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/html/" />
	</bean>
	<!-- 靜態資源處理 -->
	<mvc:default-servlet-handler />
	<mvc:annotation-driven />
	<context:component-scan base-package="com.wdg.controller"></context:component-scan>
</beans>
對於這個檔案的介紹我們就一一多說了,網上有很多詳細的介紹,我們來繼續看applicantContent.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
   http://www.springframework.org/schema/beans/spring-beans.xsd
   http://www.springframework.org/schema/context
   http://www.springframework.org/schema/context/spring-context.xsd
   http://www.springframework.org/schema/tx
   http://www.springframework.org/schema/tx/spring-tx.xsd
   http://www.springframework.org/schema/aop
   http://www.springframework.org/schema/aop/spring-aop.xsd">

	<!-- <context:component-scan base-package="com.spring.controller" /> -->
	<!--view -->
	<!-- 獲取配置檔案 -->
	<bean id="config"
		class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
		<property name="locations">
			<list>
				<value>classpath*:jdbc.properties</value>
			</list>
		</property>
	</bean>
	<!-- 獲取資料來源 -->
	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
		destroy-method="close">
		<property name="driverClassName" value="com.mysql.jdbc.Driver" />
		<property name="url" value="jdbc:mysql://localhost:3306/shopping?characterEncoding=utf8" />
		<property name="username" value="root" />
		<property name="password" value="11111" />
	</bean>


	<bean id="userDao" class="com.wdg.dao.UserDao">
		<property name="dataSource" ref="dataSource"></property>
	</bean>

	<bean
		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/view/" />
		<property name="suffix" value=".html" />
	</bean>
</beans>
這個裡面配置了資料來源,當然在這個過程中會缺少包之類的ClassNotFound,

UserDao是你自己建立的類:

package com.wdg.dao;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.support.JdbcDaoSupport;

public class UserDao extends JdbcDaoSupport {
	@SuppressWarnings("rawtypes")
	public  void getUserName(){
		String sql="select * from userinfo";
		List<Map> result = super.getJdbcTemplate().query(sql, new RowMapper<Map>() {  
			@Override  
		      public Map<String,String> mapRow(ResultSet rs, int rowNum) throws SQLException {  
		          Map<String,String> row = new HashMap<String, String>();  
		          row.put("rowguid", rs.getString("rowguid"));  
		          return row;  
		  }}); 
		  System.out.println(result.toString());
	}
	public UserDao() {
		super();
	}
	
}

希望對你有所幫助