spring-DataSource

spring支持的dataSource有好多,

  如:自帶的org.springframework.jdbc.datasource.DriverManagerDataSource

    ibatis、c3p0、JDBC、hibernate等等;

首先看第一種,使用自帶的datasource:

?1、項目結構

  

  提示:spring的jar需要放在WEB-INF的lib目錄下,只是放在項目的liberaries中會報錯!原因:不同的類加載器加載類的時候尋找的是不同路徑下的類。

2、web.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"><!-- 編碼過濾器 --><filter><filter-name>EncodeFilter</filter-name><filter-class>com.pt.filter.EncodeFileter</filter-class></filter><filter-mapping><filter-name>EncodeFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><!-- 用戶管理servlet --><servlet><servlet-name>userManager</servlet-name><servlet-class>com.pt.UserManager</servlet-class></servlet><servlet-mapping><servlet-name>userManager</servlet-name><url-pattern>/user</url-pattern></servlet-mapping><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list><!-- 自動加載spring配置文件 --><context-param><!-- 配置文件路徑 --><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext*.xml</param-value></context-param><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>
</web-app>
web.xml

3、spring的配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"><!-- 配置數據源 --><bean name="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"><property name="driverClassName" value="com.mysql.jdbc.Driver" />  <property name="url" value="jdbc:mysql://192.168.61.28:3306/test" />  <property name="username" value="encysys48" />     <property name="password" value="encysys48" /> </bean><bean id = "user" class = "com.pt.Users" scope="singleton"> </bean></beans>
applicationContext.xml

4、spring的datasource的使用

package com.pt;import java.io.IOException;
import java.sql.Connection;
import java.sql.Statement;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;import org.springframework.context.ApplicationContext;
import org.springframework.web.context.ContextLoader;public class UserManager extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {// TODO Auto-generated method stub
        doPost(req,resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {// TODO Auto-generated method stubresp.setCharacterEncoding("GBK");//獲取spring上下文ApplicationContext ctx = ContextLoader.getCurrentWebApplicationContext();DataSource ds = (DataSource)ctx.getBean("dataSource");Connection conn=null;Statement stmt = null;try{conn=ds.getConnection();stmt = conn.createStatement();if(conn!=null){resp.getWriter().write("獲取connection成功");resp.getWriter().write("\n");}else{resp.getWriter().write("獲取connection失敗");resp.getWriter().write("\n");}String sql = "insert into users(id,name) values('2012001','陶偉基')";stmt.executeUpdate(sql);}catch(Exception ex){}finally{try{conn.close();stmt.close();}catch(Exception ex){}}resp.getWriter().write("測試成功");}}
UserManager.java

5、過濾器

package com.pt.filter;
import java.io.IOException;import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;public class EncodeFileter implements Filter {public void destroy() {// TODO Auto-generated method stub
        }public void doFilter(ServletRequest arg0, ServletResponse arg1,FilterChain arg2) throws IOException, ServletException {// TODO Auto-generated method stubSystem.out.println("進入編碼過濾器");arg0.setCharacterEncoding("UTF-8");arg2.doFilter(arg0, arg1);}public void init(FilterConfig arg0) throws ServletException {// TODO Auto-generated method stub
        }}
EncoderFilter.java

?

其他文件可以不用寫!

?

二、ibatis數據源

<?xml version="1.0" encoding="UTF-8"?>
<beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"><!-- 配置數據源 --><bean id = "dataSource" name="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"><property name="driverClassName" value="com.mysql.jdbc.Driver" />  <property name="url" value="jdbc:mysql://192.168.61.28:3306/test" />  <property name="username" value="encysys48" />     <property name="password" value="encysys48" /> </bean><bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"><!-- 注入ibatis的配置文件 --><property name="configLocations"><!-- 不加classpath:會出現錯誤 --><value>classpath:SqlMapConfig.xml</value></property><property name="dataSource"><!-- 此處填寫ID --><ref local="dataSource"/></property></bean><bean id = "user" class = "com.pt.Users" scope="singleton"><property name="sqlMapClient" ref="sqlMapClient" /></bean></beans>
applicationCnotext.xml
package com.pt;import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;public class Users extends SqlMapClientDaoSupport implements DataObjManager  {private int id;private String name;private static Users users;public boolean add(Object obj) {// TODO Auto-generated method stubif(obj instanceof Users)getSqlMapClientTemplate().update("addUser", (Users)obj);elseSystem.out.println("輸入類型錯誤!!!");return false;}public boolean deleteById(Object obj) {// TODO Auto-generated method stubreturn false;}public Object getById(Object obj) {// TODO Auto-generated method stubreturn null;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getId() {return id;}public void setId(int id) {this.id = id;}}
Users,java
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap      PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"      "http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap><typeAlias    alias = "user" type = "com.pt.Users" /><insert id="addUser" parameterClass="user">insert into users values(#id#,#name#)</insert>
</sqlMap>    
Users.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMapConfig  
PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"  
"http://www.ibatis.com/dtd/sql-map-config-2.dtd">   
<sqlMapConfig><sqlMap resource="com/pt/xml/Users.xml" />
</sqlMapConfig>
SqlMapConfig.xml
package com.pt;import java.io.IOException;
import java.sql.Connection;
import java.sql.Statement;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;import org.springframework.context.ApplicationContext;
import org.springframework.web.context.ContextLoader;public class UserManager extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {// TODO Auto-generated method stub
        doPost(req,resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {// TODO Auto-generated method stubresp.setCharacterEncoding("GBK");//獲取spring上下文ApplicationContext ctx = ContextLoader.getCurrentWebApplicationContext();//注意,在這兒不可以自己new對象,必須由spring創建,這樣ibatis才生效Users user = (Users)ctx.getBean("user");user.setId(20111907);user.setName("panteng");user.add(user);resp.getWriter().write("測試成功");}}
UserManager.java
package com.pt;public interface DataObjManager {public boolean add(Object obj);public boolean deleteById(Object obj);public Object getById(Object obj);
}
DataObjManager.java

?

轉載于:https://www.cnblogs.com/tengpan-cn/p/5527195.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/395909.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/395909.shtml
英文地址,請注明出處:http://en.pswp.cn/news/395909.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

《Nmap滲透測試指南》—第7章7.8節后臺打印機服務漏洞

本節書摘來自異步社區《Nmap滲透測試指南》一書中的第7章7.8節后臺打印機服務漏洞&#xff0c;作者 商廣明,更多章節內容可以訪問云棲社區“異步社區”公眾號查看。 7.8 后臺打印機服務漏洞表7.8所示為本章節所需Nmap命令表&#xff0c;表中加粗命令為本小節所需命令——后臺打…

VSCODE 配置遠程調試環境

以下內容為本人的著作&#xff0c;如需要轉載&#xff0c;請聲明原文鏈接 微信公眾號「englyf」https://mp.weixin.qq.com/s/f1KZOlL92ojes-r2l9rlCw 我的需求是&#xff0c;在Windows桌面環境下&#xff0c;通過 VSCODE 遠程調試在服務器(或者其它遠程主機)的工程代碼。其實就…

html動態網頁效果代碼_教你制作網頁的第一步

Internet中有許多漂亮、美觀的網頁&#xff0c;要制作出這樣的網頁&#xff0c;必須先了解什么是網頁&#xff0c;網頁的基本組成是怎樣的。網頁又稱為Web頁&#xff0c;一般都包含圖像、文字和超鏈接等元素。按表現形式的不同&#xff0c;網頁可分為靜態網頁和動態網頁。靜態網…

Spring Cloud 7:Gateway

Zuul 網關 Zuul 是 Netfilx 開源的一個 API Gateway 服務器&#xff0c;本質是一個 Web Servlet 應用。其在微服務架構體系中提供動態路由、監控、彈性、安全等邊緣服務。 使用 Zuul 作為網關&#xff0c;其主要原因有以下幾點&#xff1a; 1、Zuul、Ribbon 以及 Consul 客戶端…

nodejs開發工程師前景_Google NodeJS運行時團隊的工程師Matt Loring訪談

nodejs開發工程師前景by Sameer Khoja通過Sameer Khoja Google NodeJS運行時團隊的工程師Matt Loring訪談 (An Interview with Matt Loring, an engineer on Google’s NodeJS Runtime team) I had the pleasure of interviewing Matt Loring (Cornell class of 2015) who wor…

計算機EI期刊2020,2020年Ei Compendex收錄的中國期刊目錄( JANUARY 1, 2020 )

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓2020年Ei Compendex收錄的中國期刊目錄更新了&#xff0c;合計222本。本文根據最新 JANUARY 1, 2020 更新《2020年Ei Compendex收錄出版物期刊目錄》整理&#xff0c;需要提醒&#xff0c;目錄EI是不定時更新的&#xff0c;但根據小…

mysql聯合索引順序調整_MySQL 關于聯合索引的字段順序規則討論

聯合索引的順序&#xff0c;難道不是哪個查詢條件最多用就放在前面的嗎&#xff1f;比如商品有三個分類A&#xff0c;B&#xff0c;C&#xff0c;類似「界門綱目科屬種」那樣&#xff0c;越左類別越大。還有一個是商品來源D&#xff0c;不一定會用于查詢條件中。舉個例子&#…

python基礎-第三篇-函數編程

基本數據類型之set set是無序不允許重復的集合set創建&#xff1a;s set&#xff08;&#xff09; 創建空集合 s {11,22,33}轉換s set&#xff08;可迭代數據&#xff09;li [11,22,33,44] s set(li) print(s) #結果為{33, 11, 44, 22} 集合元素的添加與清空se {11,22,…

10個 Linux/Unix下 Bash 和 KSH shell 的作業控制實例

Linux 和 Unix 屬于多任務的操作系統&#xff0c;也就是說一個系統在同一時間段內能運行多重任務(進程)。在這個新的博客系列&#xff0c;我將會列出相關的 Linux 和 Unix 作業&#xff08;job&#xff09;控制的命令&#xff0c;你可以通過這些命令在 Bash 或 Korn 還有 POSIX…

微信小程序 - 骨架屏

骨架屏 - “與其等待網絡加載&#xff0c;不如提前給點暗示” 注&#xff1a;不適用復雜交互效果 演示 示例解釋以及使用全在index.wxml中&#xff0c;觀看需了解組件使用. 示例下載&#xff1a;微信小程序-骨架屏演示 轉載于:https://www.cnblogs.com/cisum/p/10032448.html

圖解機器學習 github_使用Github和Cloudflare建立網站的圖解指南

圖解機器學習 githubby Karan Thakkar由Karan Thakkar 使用GitHub和Cloudflare建立網站的插圖指南 (An illustrated guide to setting up your website using GitHub and Cloudflare) You should read this if…如果...&#xff0c;您應該閱讀此內容 You want to setup custo…

ajax拼接顯示不同樣式,Ajax重點整理

Ajax工作流程Ajax:在不刷新頁面的情況下向服務器請求數據1.創建XMLHttpRequest對象(俗稱小黃人)var xhr new XMLHttpRequest();XMLHttpRequest &#xff1a; http請求對象&#xff0c;負責實現ajax技術2.設置請求xhr.open(get, url);url:服務器地址3.發送請求xhr.send();4.注冊…

java與mysql的交互_java與數據庫交互常用到的一些方法

下面我整理了一下java中常用的幾個與數據庫交互的常用方法&#xff0c;僅供參考&#xff1a;1.執行SQL(dao層的實現類中)(1)SQL查詢&#xff1a;//import org.hibernate.Query;//import org.hibernate.Session;/*** 通過名稱查找id*parampsname*returnid*/OverridepublicString…

xbmc電腦版本和手機版本學習教程

XBMC改名為Kodi了&#xff0c;IOS系統&#xff0c;Cydia源地址也同樣發生了變化&#xff0c;新的源是&#xff1a;http://mirrors.kodi.tv/apt/ios/先了解一下幾點知識&#xff1a; 教程中的各項操作&#xff0c;默認起始點都是“主界面”或“各分類菜單&#xff08;視頻、音樂…

線程管理(七)守護線程的創建和運行

聲明&#xff1a;本文是《 Java 7 Concurrency Cookbook 》的第一章&#xff0c; 作者&#xff1a; Javier Fernndez Gonzlez 譯者&#xff1a;鄭玉婷 校對&#xff1a;方騰飛 守護線程的創建和運行 Java有一種特別的線程叫做守護線程。這種線程的優先級非常低&#xff0c;通常…

vue2中的keep-alive使用總結及注意事項

問題總結;最近在寫vue移動端的項目的時候,當我切換菜單,再切換換回去的時候,發現頁面出現閃動的效果,其原因是因為切換回去之后,頁面重新渲染了;為了解決這一問題:查閱資料,只需要在 入口文件 App.vue 的router-view外層包裹一個keep-active標簽,表示該組件被保存在內存中,不需…

grove 套件_如何通過使用Andy Grove的High Leverage Activities加快發展?

grove 套件by Guido Schmitz由Guido Schmitz 如何通過使用Andy Grove的High Leverage Activities加快發展&#xff1f; (How to speed up your development by using Andy Grove’s High Leverage Activities ?) Youre constantly building on new features, fixing new bugs…

ajax php 觀察者模式,JavaScript觀察者模式定義和dom事件實例詳解

觀察者模式(發布-訂閱模式)&#xff1a;其定義對象間一種一對多的依賴關系&#xff0c;當一個對象的狀態發生改變時&#xff0c;所有依賴于它的對象都將得到通知。在JavaScript中&#xff0c;一般使用事件模型來替代傳統的觀察者模式。好處&#xff1a;(1)可廣泛應用于異步編程…

python中代碼段的標志是什么車_請問這段Python代碼是什么意思?

ord(p) - ord(a)這個意思是以 a 為序號0&#xff0c;計算字符p的序號。在ASCII字符集中&#xff0c;小寫字母a-z是連續排列的&#xff0c;因此如果a是0的話&#xff0c;那么b就是1&#xff0c;c就是2……以此類推。ord(p) - ord(a) 3前面一段我們解釋過了&#xff0c;那么這一…

servlet和jsp頁面過濾器Filter的作用及配置

剛剛有個朋友問我&#xff0c;Servlet的過濾器有什么作用&#xff1f; 現在發個帖子說明一下&#xff0c; 過濾器是一個對象&#xff0c;可以傳輸請求或修改響應。它可以在請求到達Servlet/JSP之前對其進行預處理&#xff0c;而且能夠在響應離開Servlet /JSP之后對其…