SSM框架整合 spring3.2.9 + spring mvc3.2.9 + mybatis3.2.8 + Druid数据源 + log4j2

来源:互联网 发布:jquery导入excel数据 编辑:程序博客网 时间:2024/05/21 08:53

一、整合所需jar包


二、项目目录结构


三、配置文件

1、springmvc的配置文件 springMVC.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:mvc="http://www.springframework.org/schema/mvc"    xmlns:context="http://www.springframework.org/schema/context"    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/mvc      http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">    <!-- 添加注解驱动 -->    <mvc:annotation-driven />    <!-- 默认扫描的包路径 -->      <context:component-scan base-package="com.malone"/>    <!-- 过滤静态文件的拦截   -->    <mvc:default-servlet-handler/>    <!-- 定义跳转的文件的前后缀 -->    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">          <property name="prefix" value="/" />          <property name="suffix" value=".jsp" />      </bean></beans>

2、spring整合mybatis配置文件applicationContext-comm.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:mvc="http://www.springframework.org/schema/mvc"    xmlns:context="http://www.springframework.org/schema/context"    xmlns:tx="http://www.springframework.org/schema/tx"    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/mvc      http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd     http://www.springframework.org/schema/tx     http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">    <!-- 引入jdbc.properties -->    <context:property-placeholder location="classpath*:jdbc.properties"/>    <!-- kaptcha v2.3.2 -->    <bean id="captchaProducer" class="com.google.code.kaptcha.impl.DefaultKaptcha">          <property name="config">              <bean class="com.google.code.kaptcha.util.Config">                  <constructor-arg>                      <props>                          <prop key="kaptcha.border">no</prop>                          <prop key="kaptcha.border.color">105,179,90</prop>                          <prop key="kaptcha.textproducer.font.color">black</prop>                          <prop key="kaptcha.image.width">250</prop>                          <prop key="kaptcha.textproducer.font.size">70</prop>                          <prop key="kaptcha.image.height">90</prop>                          <prop key="kaptcha.session.key">KAPTCHA_SESSION_KEY</prop>                        <prop key="kaptcha.obscurificator.impl">com.google.code.kaptcha.impl.WaterRipple</prop>                        <prop key="kaptcha.textproducer.char.length">5</prop>                          <prop key="kaptcha.textproducer.font.names">宋体,楷体,微软雅黑</prop>                      </props>                  </constructor-arg>              </bean>          </property>      </bean>        <!-- 数据源  使用阿里Druid数据源  也可以用其它数据源 -->    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">    <property name="driverClassName" value="${db-driver}" />    <property name="url" value="${db-url}" />    <property name="username" value="${db-username}" />    <property name="password" value="${db-password}" />    <property name="maxActive" value="20" />          <property name="initialSize" value="1" />          <property name="maxWait" value="60000" />          <property name="minIdle" value="1" />            <property name="timeBetweenEvictionRunsMillis" value="3000" />          <property name="minEvictableIdleTimeMillis" value="300000" />            <property name="validationQuery" value="SELECT 'x' FROM DUAL" />          <property name="testWhileIdle" value="true" />          <property name="testOnBorrow" value="false" />          <property name="testOnReturn" value="false" />          <!-- mysql 不支持 poolPreparedStatements-->          <property name="poolPreparedStatements" value="true" />        <property name="maxPoolPreparedStatementPerConnectionSize" value="20" />            <!-- 开启Druid的监控统计功能 -->          <property name="filters" value="stat" />      </bean>        <!-- Mybatis SqlSessionFactory -->    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">         <property name="configLocation" value="classpath:mybatis-config.xml"></property>         <property name="dataSource" ref="dataSource" />    </bean>        <!-- 事务管理 -->    <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">    <property name="dataSource" ref="dataSource"></property>    </bean>        <!-- 字段扫描类注解 -->      <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">          <property name="basePackage" value="com.malone" />      </bean>        <!-- 使用声明式 事务管理-->    <tx:annotation-driven transaction-manager="txManager" /></beans>


3、数据库连接参数配置 jdbc.properties

###数据库连接参数配置###db-driver=oracle.jdbc.driver.OracleDriverdb-url=jdbc:oracle:thin:@localhost:1521:orcldb-username=pengldb-password=tiger

4、mybatis配置mybatis-config.xml (仅用来引入sqlmap映射文件)

<?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>        <setting name="cacheEnabled" value="true" />        <!-- 指定日志框架为LOG4J2 -->        <setting name="logImpl" value="LOG4J2" />    </settings>    <mappers>        <!-- <mapper resource="com/malone/test/map/sqlmap-test.xml" />  -->    </mappers></configuration>

5、Log4j2配置文件

<?xml version="1.0" encoding="UTF-8"?><Configuration status="off" monitorInterval="10">    <properties>        <property name="LOG_HOME">logs</property>        <property name="FILE_NAME">malone</property>    </properties>    <Appenders>    <!-- 控制台日志输出 -->        <Console name="Console" target="SYSTEM_OUT">            <PatternLayout pattern="[%-5p] %d %c - %m%n" />        </Console><!-- 循环文件日志输出 -->        <RollingRandomAccessFile name="running-log"            fileName="${LOG_HOME}/${FILE_NAME}.log" filePattern="${LOG_HOME}/$${date:yyyy-MM}/${FILE_NAME}-%d{yyyy-MM-dd}-%i.log.gz">            <PatternLayout                pattern="[%-5p] %d %c - %m%n" />            <Policies>                <TimeBasedTriggeringPolicy />                <SizeBasedTriggeringPolicy size="60 MB" />            </Policies>            <DefaultRolloverStrategy max="20" />        </RollingRandomAccessFile>    </Appenders>        <Loggers>    <Root level="debug">    <AppenderRef ref="Console" />    <AppenderRef ref="running-log" />    </Root>    </Loggers>    </Configuration>

6、最后 web.xml配置文件

<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"><display-name>通用后台管理系统</display-name><!-- 阿里数据源 BENGIN --><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><!-- 阿里数据源 END --><!-- spring3 mvc BEGIN --><servlet><servlet-name>springMVC</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath*:/springMVC.xml,classpath*:/applicationContext-comm.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>springMVC</servlet-name><url-pattern>/</url-pattern></servlet-mapping><!-- spring3 mvc END --><!-- Log4j2 BEGIN --><listener><listener-class>org.apache.logging.log4j.web.Log4jServletContextListener</listener-class></listener><filter><filter-name>log4jServletFilter</filter-name><filter-class>org.apache.logging.log4j.web.Log4jServletFilter</filter-class></filter><filter-mapping><filter-name>log4jServletFilter</filter-name><url-pattern>/*</url-pattern><dispatcher>REQUEST</dispatcher><dispatcher>FORWARD</dispatcher><dispatcher>INCLUDE</dispatcher><dispatcher>ERROR</dispatcher></filter-mapping><!-- Log4j2 END --><!-- Spring字符集过滤器  BENGIN--><filter><filter-name>SpringEncodingFilter</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><init-param><param-name>forceEncoding</param-name><param-value>true</param-value></init-param></filter><filter-mapping><filter-name>SpringEncodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><!-- Spring字符集过滤器  END--><!-- 系统首页 --><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list></web-app>

四、测试表建立

-- Create tablecreate table TS_TEST(  id   NUMBER,  name VARCHAR2(20),  age  NUMBER)

五、java代码

1、映射实体类

package com.malone.test.dto;import java.io.Serializable;public class TestVo implements Serializable{/** *  */private static final long serialVersionUID = 1L;private int id;private String name;private int age;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}

2、controller

package com.malone.test.control;import javax.servlet.http.HttpServletRequest;import org.apache.logging.log4j.LogManager;import org.apache.logging.log4j.Logger;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import com.malone.test.domain.Test;import com.malone.test.dto.TestVo;@Controller@RequestMapping("/test")public class TestControl {private Logger _logger = LogManager.getLogger();@Autowired@Qualifier("testImpl")private Test test;/** * 测试 * @return */@RequestMapping(value = "/index")public String index(@RequestParam String id, HttpServletRequest request){_logger.info("进入Control... , 获取到参数:" + id);TestVo testbean = test.selectUserById(Integer.parseInt(id));request.setAttribute("testbean", testbean);return "index";}}

3、映射类

package com.malone.test.domain;import org.apache.ibatis.annotations.Select;import com.malone.test.dto.TestVo;public interface Test {@Select("select * from ts_test where id = #{id}")  //这里可以直接用注解 , 也可以通过配置文件写 ,配置文件需要引入到mybatis-config.xmlpublic abstract TestVo selectUserById(int id);}

package com.malone.test.domain;import org.apache.ibatis.session.SqlSessionFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import com.malone.test.dto.TestVo;@Service("testImpl")public class TestImpl implements Test {@Autowiredprivate SqlSessionFactory sessionFactory;public TestVo selectUserById(int id) {TestVo testbean = sessionFactory.openSession().selectOne("com.malone.test.domain.Test.selectUserById" ,id);return testbean;}}


4、mybatis映射文件 sqlmap-test.xml  //如果在上面的映射类中使用了注解方式,则不需要这个配置文件

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.malone.test.domain.Test"><select id="selectUserById" resultType="com.malone.test.dto.Ts_Test" parameterType="java.util.HashMap">select * from ts_test where id = #{id}</select></mapper>

5、jsp页面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <base href="<%=basePath%>">        <title>demo</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0">    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">-->  </head>    <body>  <h1>${testbean.id}</h1>    <h1>${testbean.name}</h1>    <h1>${testbean.age}</h1>  </body></html>


六、运行结果



Log4j2 日志 和 Mybatis sql日志



阿里数据源监控页面







5 0
原创粉丝点击