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.mzph.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之后对其…