您的位置:澳门新葡8455最新网站 > 编程教学 > 一分钟学会在JavaWeb项目中布局数据源,八分钟学

一分钟学会在JavaWeb项目中布局数据源,八分钟学

发布时间:2019-10-08 10:30编辑:编程教学浏览(107)

    在上一节中,大家曾经运用springmvc搭建了叁个web项目标矮小系统,一个web项目,连接数据库肯定是不能缺少的。访谈数据库的首先步,咱们供给有八个总是,最先的jdbc1.0专门的学问,大家供给自身写获取数据库连接的Java代码,还供给手动关闭连接,多量的try catch来得程序非常麻烦。

    前言

    做 Java Web 开辟的你,一定据书上说过SpringMVC的芳名,作为后天利用最常见的Java框架,它到最近截止还是保持着庞大的肥力和大范围的顾客群。

    正文介绍如何用eclipse一步一步搭建SpringMVC的矮小系统,所谓最小系统,正是足以使项目在SpringMVC框架下成功跑起来,并且能够做一些大约的事体的系列。

    话非常少说,让我们开首吧。全数的源代码和jar包都会在最后交给。

    任何条件:操作系统:Windos 10汤姆cat : v7.0JDK : 1.7

    在jdbc2.0正经中,引进了连接池的概念,也正是所谓的数据源 —— DataSource 。具体怎么布局数据源,是每叁个Java Web开荒人士必备的才能。

    正文

    澳门新葡萄京娱乐场 1Paste_Image.png

    我们用eclipse新建项目,选用Dynamic Web Project。

    点击Next

    澳门新葡萄京娱乐场 2Paste_Image.png

    Project name里面写上 springmvc,那正是大家项目的名称,别的不用改,直接点击Finish 。

    澳门新葡萄京娱乐场 3Paste_Image.png

    OK,项目就建好了。

    本文在 四分钟学会用SpringMVC搭建最小系统 的基础上,进一步疏解怎么着在多少个web项目中铺排数据源。

    接下去自然要将项指标字符集改为UTF-8

    右键项目——properties

    澳门新葡萄京娱乐场 4Paste_Image.png

    改为UTF-8,点击OK。

    当大家开垦WebContent/WEB-INF目录的时候,开掘当中唯有二个lib目录,那是存放在各类jar包的地方。大家领略三个web项目必供给有贰个web.xml文件才行。

    既然未有,大家团结写一个咯。

    右键WEB-INF——new——file,新建三个web.xml文件。

    点击Finish

    将以下内容填进去就可以。

    <?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" > <!-- 这是项目的名称 --><display-name>springmvc</display-name></web-app>
    

    如此就到位了骨干的配置,小编的意味是说,未来那些类型就曾经是二个正规的web项目了。

    为了验证到近些日子停止的不利,大家在WebContent目录上面新建四个jsp文件。

    名字就叫index.jsp

    澳门新葡萄京娱乐场 5Paste_Image.png

    剧情如下:

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><html> <head> <meta charset="UTF-8" /> </head> <body> 恭喜,web項目已經成功搭建! </body></html>
    

    大家今日就将那几个类型配置到汤姆cat,来验证是不是足以跑起来。

    在项目上右键——Debug As——Debug on Server

    直接点击Finish

    透过一段时间,调控台起始打字与印刷日志音讯,当大家来看那个消息的时候,表明汤姆cat已经起步完结了。

    澳门新葡萄京娱乐场 6Paste_Image.png

    让我们张开浏览器,在地点栏输入以下音讯

    笔者Computer上汤姆cat配置的端口号是8088,具体情形视你协调的Tomcat决定,或然是8080等。

    澳门新葡萄京娱乐场 7Paste_Image.png

    可知,能够得逞采访页面了,这证明大家到如今截至的操作是准确的。

    咱俩在web.xml文件之中增多下边包车型客车安插3.1 配置监听器

    <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><listener> <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class></listener>
    

    3.2 配置过滤器,消除POST乱码难题

    <filter> <filter-name>encoding</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>encoding</filter-name> <url-pattern>/*</url-pattern></filter-mapping>
    

    3.3 配置SpringMVC分发器,拦截全部恳求

    <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>namespace</param-name> <param-value>dispatcher-servlet</param-value> </init-param></servlet><servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
    

    在那些布局中,大家显著了 DispatcherServlet 的涉嫌 XML 文件名为做 dispatcher-servlet

    留意,这里的门径是周旋于web.xml来讲的,约等于说,那个文件也在WEB-INF的根目录下。

    故而,大家供给在WEB-INF的根目录下新建二个dispatcher-servlet.xml文件。

    澳门新葡萄京娱乐场 8Paste_Image.png

    由来,web.xml文件的编写制定就告一段落了。

    3.4 编写dispatcher-servlet.xmldispatcher-servlet.xml 的功用正是布局SpringMVC分发器。

    配置如下:

    <?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-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd "> <!-- 开启注解模式驱动 --> <mvc:annotation-driven></mvc:annotation-driven> <!-- 扫包 --> <context:component-scan base-package="com.springmvc.*"></context:component-scan> <!-- 静态资源过滤 --> <mvc:resources location="/resources/" mapping="/resources/**"/> <!-- 视图渲染 jsp/freemaker/velocity--> <bean > <!-- 制定页面存放的路径 --> <property name="prefix" value="/WEB-INF/pages"></property> <!-- 文件的后缀 --> <property name="suffix" value=".jsp"></property> </bean> </beans>
    

    依靠布署,有多个须要小心的地点。

    1. 它会扫描 com.springmvc 包下全体的Java类,但凡是碰着有声明的,譬喻@Controller , @Service , @Autowired ,就能够将它们投入到Spring的bean工厂里面去。

    2. 装有的静态财富文件,比如说 js , css , images 都须求放在/resources目录下,这几个目录未来我们还并未有建。

    3. 具备的显得页面,比方jsp文件,都亟需停放在/WEB-INF/pages目录下,这一个目录以往我们也从不建。

    OK,大家把相应的目录加上。

    先是是Java文件的目录。

    澳门新葡萄京娱乐场 9Paste_Image.png

    作者们在这几个地点右键,新建贰个 com 包,再在其间建一个 springmvc 包,也许用 . 的不二等秘书诀一并建。

    澳门新葡萄京娱乐场 10Paste_Image.png

    点击Finish

    澳门新葡萄京娱乐场 11Paste_Image.png

    据他们说SpringMVC的支行,大家在springmvc 包上边建多少个包,分别是controller , service , dao

    澳门新葡萄京娱乐场 12Paste_Image.png

    那样的话, 当大家项目只要运行,springmvc就能扫描那三个包,将当中但凡是有注明的类都提取起来,放进Spring容器(也许说Spring的bean工厂),借由Spring容器来统一管理。那也便是你一直未有去new多少个Controller的由来。

    接下去,大家来建静态财富的目录。

    在WebContent目录下新建一个resources文件夹。

    然后有意还是无意把js,css,img的文本夹都建转眼,这里就寄存大家的静态能源文件。

    澳门新葡萄京娱乐场 13Paste_Image.png

    最后,大家在WEB-INF目录下建二个pages文件夹,作为显示页面的存放目录。

    澳门新葡萄京娱乐场 14Paste_Image.png

    将以前的index.jsp拷贝进来。

    澳门新葡萄京娱乐场 15Paste_Image.png

    那样就布局的大半了。

    我们将jar包放到lib目录:

    澳门新葡萄京娱乐场 16Paste_Image.png

    下一场运维项目,验证一下到最近截止的创设是还是不是准确。

    开荒Servers视图,点击如图疑似甲虫同样的Logo。

    澳门新葡萄京娱乐场 17Paste_Image.png

    发觉报错了,错误新闻如下:

    澳门新葡萄京娱乐场 18Paste_Image.png

    错误:Could not open ServletContext resource [/WEB-INF/applicationContext.xml]

    它说俺们在WEB-INF下边少了一个applicationContext.xml 那个文件,原本,我们少了对SpringBean工厂的配置,它的意趣便是说,大家要规定一下,在Spring容器运营的时候,须求活动加载哪些东西?

    于是,我们把 applicationContext.xml 加上。

    澳门新葡萄京娱乐场 19Paste_Image.png

    <?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:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:util="http://www.springframework.org/schema/util" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd "> </beans>
    

    个中大家什么也不计划,再度启航汤姆cat。

    澳门新葡萄京娱乐场 20Paste_Image.png

    那回不报错了。

    小编们通晓,WEB-INF目录下的别样财富都以不或者间接通过浏览器的url地址去访问的,保险了安全性。那也是我们怎么把页面都放在该目录下的原故。

    为了具有分歧,大家还独立建构了三个pages文件夹,将那一个页面保存起来。

    澳门新葡萄京娱乐场 21Paste_Image.png

    前段时间,为了访谈这几个页面,我们须要用到SpringMVC的页面跳转搭飞机制。

    大家在Controller包下新建叁个ViewController

    澳门新葡萄京娱乐场 22Paste_Image.png

    点击Finish

    澳门新葡萄京娱乐场 23Paste_Image.png

    ViewController 代码:

    package com.springmvc.controller;import javax.servlet.http.HttpServletRequest;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.servlet.ModelAndView;@Controllerpublic class ViewController { @RequestMapping public ModelAndView view(HttpServletRequest request){ String path = request.getParameter + ""; ModelAndView mav = new ModelAndView(); mav.setViewName; return mav; }}
    

    自个儿只需求将想要访问的页面放在path里面,通过url传进来就行了。

    因为加多了java类,由此大家再度起动汤姆cat。

    启航成功后,在地方栏输入:

    结果:

    澳门新葡萄京娱乐场 24Paste_Image.png

    无妨,大家看她报什么错。

    message /springmvc/WEB-INF/pagesindex.jsp

    pagesindex.jsp是怎么着鬼??

    原来,在dispatcher-servlet.xml中,大家少写了一个 "/"

    澳门新葡萄京娱乐场 25Paste_Image.png

    添上去就行了。

    澳门新葡萄京娱乐场 26Paste_Image.png

    保存后,因为修改了XML配置文件,由此大家如故供给再行启航汤姆cat。

    开发银行成功后,继续!

    澳门新葡萄京娱乐场 27Paste_Image.png

    成功了。

    譬如说,作者在resources/img目录下放了一张图纸,怎么引进到index.jsp呢?

    澳门新葡萄京娱乐场 28Paste_Image.png

    background : url(http://localhost:8088/springmvc/resources/img/bg.jpg);background-size : 100% 100%;
    

    真正,那是一种方式。然则,它有八个劣势正是根路线写死了,大家终将不希望那样的。

    实际上,大家能够在viewController里面获得项目根路线,然后传递到jsp页面就OK了。

    澳门新葡萄京娱乐场 29Paste_Image.png

    大家把调节和测验音讯 “恭喜,web項目已經成功搭建!” 删掉。

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><html> <head> <meta charset="UTF-8" /> </head> <style> body { background : url(${contextPath}/resources/img/bg.jpg); background-size : 100% 100%; } </style> <body> </body></html>
    

    ${contextPath} 能够取到Controller传过来的context帕特h值。

    成功了!

    笔者要下载源码

    本章甘休 ...

    神威一小兔,电气自动化毕业。参加工作后对计算机感兴趣,深知初学编制程序之忙碌。希望将团结所学记录下来,给初学者一点扶植。

    你的帮助是自家撰文的最大引力:

    澳门新葡萄京娱乐场 30

    豁免义务申明: 博客中有所的图片素材均源于百度搜索,仅供就学交换,如有失水准请联系笔者,侵立删,多谢。

    话相当的少少,我知道讲再多也不比直接来一个例子间接,那么,早先吧。(本文选择的数据库为 Oracle 11G,)

    我们要在Java中访谈数据库,须求以下八个东西:

    1.1 驱动类的名字比方Oracle驱动正是 oracle.jdbc.driver.OracleDriver

    1.2 数据库的连年地址 便是url,再讲明白有个别,它就是三个字符串,多个String 。

    1.3 连接顾客名

    1.4 连接密码

    我们在WEB-INF目录下新建二个 jdbc.properties文件

    澳门新葡萄京娱乐场 31Paste_Image.png

    剧情大约是那样的

    driver=oracle.jdbc.driver.OracleDriverurl=jdbc:oracle:thin:@127.0.0.1:1521:orclusername=adminpassword=000000
    

    譬喻说客商名为admin,密码是000000

    如此那般,我们就编写好了 jdbc.properties文件,下一步,思量什么将它引进到大家的花色中。

    还记得上一节中的applicationContext.xml 吗?

    其一xml文件对spring的bean工厂举行了本性化配置,说得轻松一些,便是当您tomcat运维的时候,你在这几个xml文件之中写的bean(归根结底便是Java类),就能够被开头化。

    怎么个起始化,咱们掌握,当大家要调用对象的非静态方法的时候,第一步正是去new多个指标。

    比如:

    Person p = new Person();
    

    而我辈将来引进了spring框架,那个专门的学业可以交到它来帮大家成功。

    applicationContext.xml 便是做那些用的。

    Spring给你提供了三个类——PropertiesFactoryBean , 大家今日将他布置到applicationContext.xml 中,他就能在汤姆cat运行的时候被实例化,也等于new出来一个指标。

    像这样:

    <bean > </bean>
    

    嗯,等等,大家把它new出来是有缘由的,希望让它给大家做事,所以才把它配进来,不然要它干嘛呢?

    **Web项目十五日游 ? **

    顺便来简书露个脸 ?

    NO!

    后续,大家透过它来将大家恰好编写好的 jdbc.properties文件加载进来。

    <bean > <property name="locations"> <list> <value>jdbc.properties</value> </list> </property> </bean>
    

    这几句话一写,就一定于在xml文件中有了二个PropertiesFactoryBean类的实例,它的id叫做applicationProperties。

    借使您看得不是很清楚,大家能够把它想象成那样。 (** 仅仅只是比喻 , 源码笔者没去看,具体怎么搞的自身不知情,只是表明了二个光景的意味** )

    PropertiesFactoryBean applicationProperties = new PropertiesFactoryBean();applicationProperties.setLocations("jdbc.properties");
    

    加载进来还非常不够,我们犹盼望能够拿到到安排文件里的键值对。

    故而还索要 PreferencesPlaceholderConfigurer 来协助,反正Spring的jar包都导进来了,不用白不用,还无需管饭,多好。

    <bean > <property name="properties" ref="applicationProperties" /></bean> 
    

    比方用Java的视角来看,大致是那般 ( 仅仅只是比喻 , 源码小编没去看,具体怎么搞的自己不驾驭,只是表明了八个大意的意味 ):

    PreferencesPlaceholderConfigurer propertyConfigurer = new propertyConfigurer();propertyConfigurer.setProperties(applicationProperties);
    

    那样一来,大家就足以在xml文件中探访 jdbc.properties文件中的具体消息了。

    眼下有繁多不利的数据源,你大概据说c3p0比比较多。

    本文选择的是ProxoolDataSource数据源,也是二个很好用的东东。

    数据源到底是啥?

    今是昨非的是,那一个java类的坚守或者会强大学一年级点,并且非常大程度地惠及了大家对数据库的接连操作。

    在 jdbc1.0 的时日,你一定用过多量的try catch,你操作数据库每一回都要手动去获得连接,操作等收尾后再关闭它。

    而有了数据源就差异等了,你在applicationContext.xml 里布置了数据源,那么一旦汤姆cat一运转,它就能够被加载到Spring的Bean工厂。它的效劳正是程序一运行,就给您一大堆连接,什么人须要,谁就去拿。用完了再还回去。

    上代码:

    <bean > <property name="driver" value="${driver}"></property> <property name="driverUrl" value="${url}"></property> <property name="user" value="${username}"></property> <property name="password" value="${password}"></property> <property name="houseKeepingSleepTime" value="5000"></property> <property name="testBeforeUse" value="true"></property> <property name="houseKeepingTestSql" value="SELECT count from dual"></property> <property name="maximumActiveTime" value="10000"></property> <!-- 最少保持的空闲连接数  --> <property name="prototypeCount" value="20"></property> <!-- 最大连接数  --> <property name="maximumConnectionCount" value="100"></property> <!-- 最小连接数  --> <property name="minimumConnectionCount" value="30"></property></bean>
    

    有了连接池,大家还需求对数据库进行实际的操作,由此我们一直引进jdbcTemplate类。

    <bean > <property name="dataSource" ref="dataSource" /></bean>
    

    最终,大家把要求的jar包导入

    澳门新葡萄京娱乐场 32Paste_Image.png

    在持续以前,大家先运转汤姆cat,看看有没有报错。

    澳门新葡萄京娱乐场 33Paste_Image.png

    nested exception is java.io.FileNotFoundException: Could not open ServletContext resource [/jdbc.properties]

    报错了,它说找不到jdbc.properties,我们是把那些文件放在WEB-INF根目录下的,既然获取不到,大家就换个地方咯。譬喻,放在classpath下。

    澳门新葡萄京娱乐场 34Paste_Image.png

    所谓的classpath,正是编写翻译目录的公文夹,全部的java类,都会被发布到这么些地点。

    例如,本项目标classpath就是在此地

    澳门新葡萄京娱乐场 35Paste_Image.png澳门新葡萄京娱乐场 36Paste_Image.png澳门新葡萄京娱乐场 37Paste_Image.png

    然后修改applicationContext.xml

    <bean > <property name="locations"> <list> <value>classpath:jdbc.properties</value> </list> </property> </bean>
    

    重启tomcat,不报错了。(注意: classpath:jdbc.properties 冒号前面无法有空格)

    我们把applicationContext.xml 也放到classpath里面。

    澳门新葡萄京娱乐场 38Paste_Image.png

    何况修改 web.xml 文件,将applicationContext.xml加载进来。

    <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext*.xml</param-value></context-param>
    

    澳门新葡萄京娱乐场,重启tomcat,没报错。

    咱俩在src下面,新建二个test包。

    澳门新葡萄京娱乐场 39Paste_Image.png

    新建二个测验类:

    澳门新葡萄京娱乐场 40Paste_Image.png

    引进junit4,那是eclipse自带的,ctrl + shift + o 间接引进。

    package test;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class TestDataSource { @Test public void test(){ //读取applicationContext.xml,初始化上下文 ApplicationContext context = new ClassPathXmlApplicationContext("classpath:applicationContext.xml"); }}
    

    鼠标双击test,按F11调治:

    澳门新葡萄京娱乐场 41Paste_Image.png澳门新葡萄京娱乐场 42Paste_Image.png

    @Testpublic void test(){ //读取applicationContext.xml,初始化上下文 ApplicationContext context = new ClassPathXmlApplicationContext("classpath:applicationContext.xml"); //获取applicationContext.xml中的ProxoolDataSource实例 ProxoolDataSource ProxoolDataSource = context.getBean(ProxoolDataSource.class); System.out.println(ProxoolDataSource.getDriver; System.out.println(ProxoolDataSource.getDriverUrl; System.out.println(ProxoolDataSource.getUser; System.out.println(ProxoolDataSource.getPassword; System.out.println("数据源成功加载!");}
    

    调治将养结果:

    澳门新葡萄京娱乐场 43Paste_Image.png

    接下去,大家用jdbcTemplate 来查询数据库中某张表的数码:

    JdbcTemplate jdbcTemplate = context.getBean(JdbcTemplate.class);List list = jdbcTemplate.queryForList("select * from tb_user ");System.out.println;
    

    打字与印刷出来的结果:{ID=1, ACCOUNT=admin, PASSWOPRADOD=123, USE帕杰罗NAME=admin, CREATETIME=二〇一五-08-31 09:38:21.0, UPDATETIME=31-六月 -16, IS_DELETE=0}

    注: tb_user 是本人数据库中的一张测量检验表。

    OK了!

    那注明我们对数码的拜候已经没难题了。

    迄今,数据源配置一体完了!

    本章截至 ...

    勇敢一小兔,电气自动化结业。参与专门的学问后对计算机感兴趣,深知初学编制程序之艰巨。希望将和谐所学记录下来,给初学者一点赞助。

    您的支持是本人创作的最大重力:

    澳门新葡萄京娱乐场 44

    豁免义务表明: 博客中颇负的图片素材均来自百度找出,仅供就学调换,如不符合规律请联系本人,侵立删,多谢。

    本文由澳门新葡8455最新网站发布于编程教学,转载请注明出处:一分钟学会在JavaWeb项目中布局数据源,八分钟学

    关键词: