SpringMVC中資料庫連結配置
阿新 • • 發佈:2019-01-01
從昨天開始一直在糾結資料庫連結的問題,現在可以說才從庫裡面查出資料。這種感覺還是希望和大家分享一下
首先我們來看看我用ecplise建立專案的目錄結構:
上面是我的目錄結構,和資料庫連結的都放在了applicantContent.xml這個配置檔案裡面了。在最開始學習SpringMVC的時候配置檔案的位置真的是一個比較困擾的問題。而且如果你是自學的話找,往往在網上看一篇文章然後跟著做發現在自己本地就是不行,有的時候儘管從望山直接拉下一個別人佈置好的SpringMVC你興致沖沖的匯入到ecplise中,可是還是不行,伴隨著各種無奈,並不是說人家的專案不行,各種原因吧,可能你本地ecplise配置和人家的不一樣都有。好了,不扯這些,我們首先來看看配置檔案,首先我們在一開始建立web工程的時候自帶的 是一個web.xml,所有的開始我們都從web.xml中進行,而且我還是注意的是web.xml你需要審批,配置什麼,別看到網上的程式碼全部都複製過來。配置檔案其實是你的程式碼裡面需要讀取的,你需要實現怎樣的功能,就配置什麼,然後引入相關的jar
那麼我們這個地方需實現的是配置jdbc的配置,我們來看看web.xml應該怎樣來進行配置:
上面是我的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>
為什麼說這一段重要,因為我們從在SpringMVC中許多的bean都是配置在applicantContent.xml中,當然連結資料庫也是一樣配置到了這個檔案,其實這一段為載入配置檔案applicantContent.xml只有在載入之後我們在java程式碼中才能找到這個檔案,<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-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();
}
}
希望對你有所幫助