SpringMVC(二)

今天在完成的工作的前提下,最终在睡觉前将SpringMVC和Mybatis整合了~~~

其实就是按照从网上(参考http://www.toutiao.com/a6332703083554324737/)找到的教程自己做了一回,我的习惯是先做然后再深究:

1、创建工程(marven工程);

2、创建所需要的目录(如图):

3、各个文件所需要的代码如下:

(1)spring-dao.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:context="http://www.springframework.org/schema/context"       xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd">    <!-- 配置整合mybatis过程 -->    <!-- 1.配置数据库相关参数properties的属性:${url} -->    <!-- 使用数据库配置文件解耦 -->    <context:property-placeholder location="classpath:jdbc.properties"/>    <!-- 下面的druid配置都是基本配置,具体优化设置可以上网查询,也可以去github上面直接搜索druid -->    <!-- 2.数据库连接池 -->    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"          init-method="init" destroy-method="close">        <!-- 配置连接池属性 -->        <property name="driverClassName" value="${jdbc.driver}"/>        <property name="url" value="${jdbc.url}"/>        <property name="username" value="${jdbc.username}"/>        <property name="password" value="${jdbc.password}"/>        <!-- 配置初始化大小、最小、最大 -->        <property name="initialSize" value="1" />        <property name="minIdle" value="1" />        <property name="maxActive" value="10" />        <!-- 配置获取连接等待超时的时间 -->        <property name="maxWait" value="10000" />        <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->        <property name="timeBetweenEvictionRunsMillis" value="60000" />        <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->        <property name="minEvictableIdleTimeMillis" value="300000" />        <property name="testWhileIdle" value="true" />        <!-- 这里建议配置为TRUE,防止取到的连接不可用 -->        <property name="testOnBorrow" value="true" />        <property name="testOnReturn" value="false" />        <!-- 打开PSCache,并且指定每个连接上PSCache的大小 -->        <property name="poolPreparedStatements" value="true" />        <property name="maxPoolPreparedStatementPerConnectionSize"                  value="20" />        <!-- 这里配置提交方式,默认就是TRUE,可以不用配置 -->        <property name="defaultAutoCommit" value="true" />        <!-- 验证连接有效与否的SQL,不同的数据配置不同 -->        <property name="validationQuery" value="select 1 " />        <property name="filters" value="stat" />        <property name="proxyFilters">            <list>                <ref bean="logFilter" />            </list>        </property>    </bean>    <!-- 3.配置SqlSessionFactory对象 -->    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">        <!-- 注入数据库连接池 -->        <property name="dataSource" ref="dataSource"/>        <!-- 配置MyBaties全局配置文件:mybatis-config.xml -->        <property name="configLocation" value="classpath:mybatis-config.xml"/>        <!-- 扫描entity包 使用别名 -->        <!-- cn.acheng1314是我的应用程序的包名,你们需要使用你们自己的包名,也就是前面我们提到过的GroupId -->        <property name="typeAliasesPackage" value="cn.acheng1314.domain"/>        <!-- 扫描sql配置文件:mapper需要的xml文件 -->        <property name="mapperLocations" value="classpath:mapper/*.xml"/>    </bean>    <!-- 4.配置扫描Dao接口包,动态实现Dao接口,注入到spring容器中 -->    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">        <!-- 注入sqlSessionFactory -->        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>        <!-- 给出需要扫描Dao接口包 -->        <property name="basePackage" value="cn.acheng1314.dao"/>    </bean>    <!-- 上面的druid的配置 -->    <bean id="logFilter" class="com.alibaba.druid.filter.logging.Slf4jLogFilter">        <property name="statementExecutableSqlLogEnable" value="false" />    </bean></beans>

(2)spring-service.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:context="http://www.springframework.org/schema/context"       xmlns:tx="http://www.springframework.org/schema/tx"       xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx.xsd">    <!-- 扫描service包下所有使用注解的类型 -->    <!-- cn.acheng1314为我们应用的包名,当然也是我们前面提到过的GroupId -->    <context:component-scan base-package="com.qccr.acheng1314" />    <!-- 配置事务管理器 -->    <bean id="transactionManager"          class="org.springframework.jdbc.datasource.DataSourceTransactionManager">        <!-- 注入数据库连接池 -->        <property name="dataSource" ref="dataSource" />    </bean>    <!-- 配置基于注解的声明式事务 -->    <tx:annotation-driven transaction-manager="transactionManager" /></beans>

(3)jdbc.properties:
jdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3307/wordpress?useUnicode=true&characterEncoding=utf8jdbc.username=数据库用户名jdbc.password=数据库用户名对应的密码

(4)log4j2.xml:
<?xml version="1.0" encoding="UTF-8"?><!-- status=debug 可以查看log4j的装配过程 --><configuration status="off" monitorInterval="1800"><properties>        <!--日志目录-->        <property name="LOG_HOME">/logs/webLog</property>        <!-- 日志备份目录 -->        <property name="BACKUP_HOME">{LOG_HOME}/backup</property>        <property name="STAT_NAME">stat</property>        <property name="SERVER_NAME">global</property>    </properties>    <appenders>        <!-- 定义控制台输出 -->        <Console name="Console" target="SYSTEM_OUT" follow="true">            <PatternLayout pattern="%date{yyyy-MM-dd HH:mm:ss.SSS} %level [%thread][%file:%line] - %msg%n"/>        </Console>        <!-- 程序员调试日志 -->        <RollingRandomAccessFile name="DevLog" fileName="${LOG_HOME}/${SERVER_NAME}"                                 filePattern="${LOG_HOME}/${SERVER_NAME}.%d{yyyy-MM-dd-HH}.log">            <PatternLayout pattern="%date{yyyy-MM-dd HH:mm:ss.SSS} %level [%thread][%file:%line] - %msg%n"/>            <Policies>                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>            </Policies>        </RollingRandomAccessFile>        <!-- 游戏产品数据分析日志 -->        <RollingRandomAccessFile name="ProductLog"                                 fileName="${LOG_HOME}/${SERVER_NAME}_${STAT_NAME}"                                 filePattern="${LOG_HOME}/${SERVER_NAME}_${STAT_NAME}.%d{yyyy-MM-dd-HH}.log">            <PatternLayout                    pattern="%date{yyyy-MM-dd HH:mm:ss.SSS} %level [%thread][%file:%line] - %msg%n"/>            <Policies>                <TimeBasedTriggeringPolicy interval="1"                                           modulate="true"/>            </Policies>        </RollingRandomAccessFile>    </appenders>    <loggers>        <!-- 3rdparty Loggers -->        <logger name="org.springframework.core" level="info">        </logger>        <logger name="org.springframework.beans" level="info">        </logger>        <logger name="org.springframework.context" level="info">        </logger>        <logger name="org.springframework.web" level="info">        </logger>        <logger name="org.jboss.netty" level="warn">        </logger>        <logger name="org.apache.http" level="warn">        </logger>        <logger name="com.mchange.v2" level="warn">        </logger>        <!-- Game Stat logger -->        <logger name="com.u9.global.service.log" level="info"                additivity="false">            <appender-ref ref="ProductLog"/>        </logger>        <!-- Root Logger -->        <root level="DEBUG">            <appender-ref ref="DevLog"/>            <appender-ref ref="Console"/>        </root>    </loggers></configuration>

(5)mybatis-config.xml:
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"        "http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration>    <!-- 配置全局属性 -->    <settings>        <!-- 使用jdbc的getGeneratedKeys获取数据库自增主键值 -->        <setting name="useGeneratedKeys" value="true" />        <!-- 使用列别名替换列名 默认:true -->        <setting name="useColumnLabel" value="true" />        <!-- 开启驼峰命名转换:Table{create_time} -> Entity{createTime} -->        <setting name="mapUnderscoreToCamelCase" value="true" />    </settings></configuration>

(6)web.xml:
<!DOCTYPE web-app PUBLIC        "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"        "http://java.sun.com/dtd/web-app_2_3.dtd" ><web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"                                                            xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaeehttp://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"                                                            version="3.1" metadata-complete="true">    <!--默认的首页-->    <welcome-file-list>        <welcome-file>index.html</welcome-file>        <welcome-file>index.htm</welcome-file>        <welcome-file>index.jsp</welcome-file>        <welcome-file>default.html</welcome-file>        <welcome-file>default.htm</welcome-file>        <welcome-file>default.jsp</welcome-file>    </welcome-file-list>    <!-- 如果是用maven命令生成的xml,需要修改servlet版本为3.1 -->    <!-- 配置DispatcherServlet -->    <servlet>        <display-name>SSM_LOG</display-name> <!-- 项目名称 -->        <servlet-name>mvc-dispatcher</servlet-name> <!-- mvc调度器 -->        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>        <!-- 配置springMVC需要加载的配置文件        spring-dao.xml,spring-service.xml,spring-web.xml        Mybatis - > spring -> springmvc        -->        <init-param>            <param-name>contextConfigLocation</param-name>            <param-value>classpath:spring/spring-*.xml</param-value>        </init-param>    </servlet>    <servlet-mapping>        <servlet-name>mvc-dispatcher</servlet-name>        <!-- 默认匹配所有的静态资源,此处配置出错,会产生错误500 -->        <url-pattern>/js/*</url-pattern>        <url-pattern>/css/*</url-pattern>        <url-pattern>/images/*</url-pattern>        <url-pattern>/fonts/*</url-pattern>    </servlet-mapping>    <!--druid ==> WEB方式监控配置-->    <servlet>        <servlet-name>DruidStatView</servlet-name>        <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>    </servlet>    <servlet-mapping>        <servlet-name>DruidStatView</servlet-name>        <url-pattern>/druid/*</url-pattern>    </servlet-mapping>    <filter>        <filter-name>druidWebStatFilter</filter-name>        <filter-class>com.alibaba.druid.support.http.WebStatFilter</filter-class>        <init-param>            <param-name>exclusions</param-name>            <param-value>/public/*,*.js,*.css,/druid*,*.jsp,*.swf</param-value>        </init-param>        <init-param>            <param-name>principalSessionName</param-name>            <param-value>sessionInfo</param-value>        </init-param>        <init-param>            <param-name>profileEnable</param-name>            <param-value>true</param-value>        </init-param>    </filter>    <filter-mapping>        <filter-name>druidWebStatFilter</filter-name>        <url-pattern>/*</url-pattern>    </filter-mapping></web-app>

4、这些只是我能够跑起来的一些程序代码,因为我看到了数据库的cmd窗口运行起来了,具体的实现还没有做,等明天做完了截图。

5、还有其中的一些原理现在也不是很清楚,还需要继续研究一下,等知道了再上图解释介绍。
时间: 2024-10-11 10:44:01

SpringMVC(二)的相关文章

SpringMVC(二)——流程控制

SpringMVC主要就是用来做流程控制的,这篇博客总结一下如何在流程控制添加Interceptor(拦截器),如何将进行流程Mapping映射解析,如何编写Controller(控制器). 一,首先看一下框架中的映射解析器,用来将uri和控制器进行绑定的: 1,   SpringMVC框架的默认解析器采用是:bean的name属性名称作为URI,与控制器进行映射绑定,BeanNameUrlHandlerMapping.例如: [html] view plaincopyprint? <span 

SpringMVC(二) 流程控制

SpringMVC主要就是用来做流程控制的,这篇博客总结一下如何在流程控制添加Interceptor(拦截器),如何将进行流程Mapping映射解析,如何编写Controller(控制器). 一,首先看一下框架中的映射解析器,用来将uri和控制器进行绑定的: 1,   SpringMVC框架的默认解析器采用是:bean的name属性名称作为URI,与控制器进行映射绑定,BeanNameUrlHandlerMapping.例如: [html] view plaincopyprint? <bean 

SpringMVC(二)---JSON

一,JSON 介绍 JSON (JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式.易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率 二,JSON 语法 1,JSON 语法规则 在 JS 语言中,一切都是对象.因此,任何支持的类型都可以通过 JSON 来表示,例如字符串.数字.对象.数组等.但是对象和数组是比较特殊且常用的两种类型 对象表示为键值对 数据由逗号分隔 花括号保存对象 方括号保存数组 2,JSON 键/值对 JSO

springmvc(二)

请求信息转换 异步发送表单数据到JavaBean,并响应JSON文本返回 操作步骤:(1)加入Jackson2或fastjson框架包,springmvc默认支持Jackon2,不需要做任何操作,而fastjson需要重新配置HttpMessageConverter.(2)使用@RequestBody接收数据和@ResponseBody返回数据,这两个动作完全是透明的. 使用jackson转换json数据 代码示例: 创建动态web项目,配置web.xml文件: <?xml version=&quo

SpringMVC(二十四) 视图解析流程

目标方法无论返回的是string.ModelAndView.View,最终都被解析成modelAndView 关键的实现代码是在springmvc.xml配置文件中定义解析器. 参考代码如下: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http:

SpringMVC(二):HelloWorld

准备条件: STS(集成了Spring相关工具的Eclipse) 步骤: 加入jar包. Eclipse中新建一个动态的web工程.选择Tomcat 7.0,在WebContent-->WEB-INF-->lib目录下添加以下jar包. spring-aop-4.3.3.RELEASE.jar spring-beans-4.3.3.RELEASE.jar spring-context-4.3.3.RELEASE.jar spring-core-4.3.3.RELEASE.jar spring-

学习SpringMVC(二十四)之异常处理

1.在@ExceptionHandler 方法的入参中可以加入 Exception 类型的参数, 该参数即对应发生的异常对象 [email protected]方法的入参中不能传入 Map.若希望把异常信息传导页面上,需要使用 ModelAndView作为返回值 [email protected] 方法标记的异常有优先级的问题.会先处理匹配度高的异常 直接上实例: 在Controller中: <span style="font-size:18px;"><span st

学习SpringMVC(二十一)之通过超链接切换Locale

1.配置国际化文件  2.在springmvc.xml中: <span style="font-family:SimSun;font-size:18px;"><!-- 配置国际资源化文件 --> <bean name="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"> <prope

学习SpringMVC(二十)之返回JSON

首先要加入三个JAR包: 其次在Controller中: <span style="font-family:SimSun;font-size:18px;">package com.cgf.springmvc.handlers; import java.util.Collection; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereo

SpringMVC(二) SpringMVC Hello World

准备条件: STS(集成了Spring相关工具的Eclipse) Spring软件包 spring-framework-4.3.3.RELEASE-dist.zip. 步骤: 加入jar包. Eclipse中新建一个动态的web工程.选择Tomcat 7.0,在WebContent-->WEB-INF-->lib目录下添加以下jar包. spring-aop-4.3.3.RELEASE.jar spring-beans-4.3.3.RELEASE.jar spring-context-4.3.