前言

准备开发一套部门管理系统 涉及到权限控制,log日志输出管理,generator自动生成mapper、实体类、dao层,mybaties SQL监控等等。选用的框架为SSM 本次就是详细记录一下  搭建的详细过程 然后做一个备忘录 共享出来让大家也可以参考一下 多多交流 留言评论 多批评zhi zheng

首先

IED:STS 

jdk:1.8

项目工程

Spring+SpringMVC+Mybaties的搭建详细过程

使用java项目 手动配置  没有选用maven,原因:手动配置容易控制 很容易找到问题出现在哪里,问题出在哪里 找哪里

jar包:

Spring+SpringMVC+Mybaties的搭建详细过程

设计表结构:

设计了好几张表 这里可以省略 这里你可以自己随便一个库在对应的库里设计几张表 

创建项目目录

分别有domain-实体类 dao层-mybaties的接口  这里我创建了一个common包里面是自己定义的一个工具类,还有一个exceptionhander是一个异常监听处理器。这俩部分可以忽略。接下来定义web项目所需的目录  固定套路:webapp-可以自定义,

WEB-INF--固定写法不能变 lib--存放jar包的地方  classes--项目字节码存放的地方  web.xml--web项目的入口,这几个都是固定的。

然后导入jar 部署项目 更改项目字节码存放地址更改为 classes的目录。 这样一个项目架子搭建完成了

部署项目和更改字节码的存放目录:

部署项目,我用的是一个插件Spring+SpringMVC+Mybaties的搭建详细过程三只可爱的小猫  我认为很好用,自己百度一下安装一下,然后关联一下tomcat,拷贝webapp的所在目录,放置到tomcat的conf目录下server.xml文件中, <Context docBase="/Atomatic/java/SpringHomeWork/SpringMVCSpringMybaties/webapp" path=""/>   相当于告诉tomcat服务器项目的所在位置。
更改classes文件的位置:选中classes文件 右键 buildpath 找到sorce模块 点击browser更改default output folder 文件更改到clases的位置:Spring+SpringMVC+Mybaties的搭建详细过程

接下来就开始正题:

从web项目的入口开始配置:web.xml

首先考虑 一个springMVC的组件分为:前端控制器相当于servlet中的拦截器 拦截所有的请求,还有一个处理器映射器--根据url找到对应的controller类, 处理器适配器--根据controller类找到对应的controller中的方法 视图解析器--把数据封装为前端展示的数据 最后到自己的处理器--controller--自己处理请求的一些逻辑。

<?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"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

                      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"

version="3.0">

<!--配置一个前端控制器 -->

<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</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>

<!-- Encoding 编码控制器-->

  <filter>

    <filter-name>encodingFilter</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>encodingFilter</filter-name>

    <url-pattern>/*</url-pattern>

  </filter-mapping>

<!-- Logback与tomcate 整合-->

<context-param>

<param-name>logbackConfigLocation</param-name>

<param-value>classpath:logback.xml</param-value>

</context-param>

<!-- 连接池 启用Web监控统计功能 -->

<!-- Druid filter-->

<filter>

        <filter-name>DruidWebStatFilter</filter-name>

        <filter-class>com.alibaba.druid.support.http.WebStatFilter</filter-class>

        <init-param>

            <param-name>exclusions</param-name> <!-- 经常需要排除一些不必要的url -->

            <param-value>*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*</param-value>

        </init-param>

    </filter>

    <filter-mapping>

        <filter-name>DruidWebStatFilter</filter-name>

        <url-pattern>/*</url-pattern>

    </filter-mapping>

    <!-- Druid servlet-->

    <servlet>

        <servlet-name>DruidStatView</servlet-name>

        <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class><!-- 这个StatViewServlet的用途包括:提供监控信息展示的html页面;提供监控信息的JSON API -->

        <!-- 这里的两个参数是指:登陆/druid/index.html所用到的用户名和密码 -->

        <init-param>

      <param-name>loginUsername</param-name>

      <param-value>root</param-value>

    </init-param>

    <init-param>

      <param-name>loginPassword</param-name>

      <param-value>wangqiang</param-value>

    </init-param>

    </servlet>

    <servlet-mapping>

        <servlet-name>DruidStatView</servlet-name>

        <url-pattern>/sys/druid/*</url-pattern><!-- 启动项目访问:http://localhost:8080/sys/druid/index.html -->

    </servlet-mapping>

</web-app>

然后整合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:tx="http://www.springframework.org/schema/tx"

        xmlns:mvc="http://www.springframework.org/schema/mvc"

xmlns:context="http://www.springframework.org/schema/context"

xsi:schemaLocation="http://www.springframework.org/schema/mvc 

                    http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd

http://www.springframework.org/schema/beans 

http://www.springframework.org/schema/beans/spring-beans.xsd

http://www.springframework.org/schema/context 

http://www.springframework.org/schema/context/spring-context-4.3.xsd

http://www.springframework.org/schema/tx 

http://www.springframework.org/schema/tx/spring-tx-4.3.xsd">

<!-- 引入spring的配置文件 -->

<import resource="classpath:ApplicationContext.xml"/>

<!-- 上下文处理器 -->

     <context:annotation-config />

    <!-- 启动注解驱动的spring mvc 功能 --><!-- MVC注解解析器想当于处理器映射器和处理适配置 -->

    <mvc:annotation-driven/>

    <!-- 启动包扫描功能 --><!-- IOC注解 解析器 作用:使注解发挥其本身的作用 使注解生效-->

    <context:component-scan base-package="Controller" />

    <context:component-scan base-package="dao" />

    <context:component-scan base-package="Controller" />

    <!--处理静态资源文件资源访问-->

<mvc:default-servlet-handler/>

 

    <!--3.配置覆盖默认的视图解析器 jsp处理器-->

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">

        <property name="prefix" value="/WEB-INF/view/" />

        <property name="suffix" value=".jsp" />

    </bean>

    <!-- 4.json处理器 -->

    <bean class="org.springframework.web.servlet.view.json.MappingJackson2JsonView"/>

</beans>

然后spring的配置:ApplicationContext.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:aop="http://www.springframework.org/schema/aop"

xmlns:tx="http://www.springframework.org/schema/tx"

xsi:schemaLocation="http://www.springframework.org/schema/beans 

                    http://www.springframework.org/schema/beans/spring-beans.xsd

http://www.springframework.org/schema/context 

http://www.springframework.org/schema/context/spring-context-4.3.xsd

http://www.springframework.org/schema/aop 

http://www.springframework.org/schema/aop/spring-aop-4.3.xsd

http://www.springframework.org/schema/tx 

http://www.springframework.org/schema/tx/spring-tx-4.3.xsd">

 

<!-- 加载jdbc.properties属性配置文件 -->

<context:property-placeholder location="classpath:jdbc.properties" />

 

<bean class="common.ApplicationContextHelper" lazy-init="false" />

 

<!-- 配置数据库连接池对象 -->

<bean id="DataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">

<property name="username" value="${username}" />

<property name="password" value="${password}" />

<property name="url" value="${url}" />

<property name="driverClassName" value="${driver}" />

<property name="initialSize" value="3" />

        <property name="minIdle" value="3" />

        <property name="maxActive" value="20" />

        <property name="maxWait" value="60000" />

         <!-- 添加此处作用是为了在SQL监控页面显示sql执行语句,不配置不显示 -->

        <property name="filters" value="stat,wall" />

</bean>

<!--Spring整合Mybatis 整合xml文件 -->

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">

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

<property name="configLocation" value="classpath:mybaties.xml" />

<property name="mapperLocations" value="classpath:mappers/*.xml" />

</bean>

 

<!--Sprin整合Mybatisg,整合Mapper接口 以扫描包里面的所有接口 -->

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">

<property name="basePackage" value="dao"/>

<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>

</bean>

 

<!-- tx事物管理器 -->

    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

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

    </bean>

<!--事物的注解 -->

    <tx:annotation-driven transaction-manager="transactionManager" />

    

    <!-- druid 过滤器 -->

    <bean id="stat-filter" class="com.alibaba.druid.filter.stat.StatFilter">

        <property name="slowSqlMillis" value="3000" /><!-- 发现慢的sql  以log的形式记录下来 -->

        <property name="logSlowSql" value="true" />

        <property name="mergeSql" value="true" />

    </bean>

    

    <bean id="wall-filter" class="com.alibaba.druid.wall.WallFilter">

        <property name="dbType" value="mysql" />

    </bean>

</beans>

整合mybaties的配置:mybaties.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>

<!-- 打开延迟加载的开关 -->

<setting name="lazyLoadingEnabled" value="true" />

<!-- 将积极加载改为消极加载 按需加载 -->

<setting name="aggressiveLazyLoading" value="false" />

        <setting name="safeRowBoundsEnabled" value="true"/>

        <setting name="cacheEnabled" value="false" />

        <setting name="useGeneratedKeys" value="true" />

</settings>

<!-- 在spring配置文件中已配置对dao层包进行扫描了这里就无须再次设置 -->

</configuration>

整合日志配置文件:logback.xml

<?xml version="1.0" encoding="UTF-8"?>

<!-- 参数含义:scan=true 配置文件发生修改 自动重新加载 -->

<configuration scan="true" scanPeriod="60 seconds">

<!-- 控制台打印-普通信息 -->

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">

<encoder>

<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>

</encoder>

</appender>

<!-- 输出日志文件-tomcat/logs/ -->

<appender name="Log" class="ch.qos.logback.core.rolling.RollingFileAppender">

        <file>${catalina.home}/logs/Log-%d{yyyy-MM-dd}.log</file>

        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">

            <fileNamePattern>${catalina.home}/logs/Log-%d{yyyy-MM-dd}.log</fileNamePattern>

        </rollingPolicy>

        <encoder>

            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>

        </encoder>

    </appender>

<!--  mapper 文件的包路径-->

    <logger name="dao" level="debug" />

    

    <!-- 控制台打印-sql信息 -->

<logger name="dao.*" level="DEBUG" />

<!-- Trace <Debug <Infor <Warn <Error -->

<root level="infor">

  <appender-ref ref="STDOUT"/>

  <appender-ref ref="Log"/>

</root>

</configuration>

自动生成代码的genrator:需要提前在eclipse中安装一个mybaties的插件 生成一个文件:怎么安装和使用  自行百度

Spring+SpringMVC+Mybaties的搭建详细过程

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

<generatorConfiguration>

  <!-- 1.数据库驱动包位置 -->

  <classPathEntry location="/Atomatic/java/SpringHomeWork/SpringMVCSpringMybaties/webapp/WEB-INF/lib/mysql-connector-java-8.0.12.jar" />

  <context id="DB2Tables" targetRuntime="MyBatis3">

    <commentGenerator>

<property name="suppressAllComments" value="true" />

</commentGenerator>

<!-- 2.数据库链接URL、用户名、密码 -->

    <jdbcConnection connectionURL="jdbc:mysql://localhost:3306/AuthorityWeb" driverClass="com.mysql.cj.jdbc.Driver" password="wangqiang" userId="root" />

    <javaTypeResolver>

<property name="forceBigDecimals" value="false" />

</javaTypeResolver>

<!-- 3.生成模型的包名和位置 -->

    <javaModelGenerator targetPackage="domain" targetProject="SpringMVCSpringMybaties">

    <property name="enableSubPackages" value="true" />

<property name="trimStrings" value="true" />

    </javaModelGenerator>

    <!-- 4.生成的映射文件包名和位置 -->

    <sqlMapGenerator targetPackage="mappers" targetProject="SpringMVCSpringMybaties">

    <property name="enableSubPackages" value="true" />

    </sqlMapGenerator>

    <!-- 生成DAO的包名和位置 -->

    <javaClientGenerator targetPackage="dao" targetProject="SpringMVCSpringMybaties" type="XMLMAPPER">

    <property name="enableSubPackages" value="true" />

    </javaClientGenerator>

    <!-- 要生成那些表(更改tableName和domainObjectName就可以) -->

        <table tableName="" domainObjectName="" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false" />

</context>

</generatorConfiguration>

 

搭建到这就可以启动项目  进行测试一下了  :

还有一个mysql的sql监控:等项目启动以后 访问地址http://localhost:8080/sys/druid/index.html  这个/sys/druid/取决于你的配置。ip取决于你实际用的ip地址和端口 打开这个网址 就说明成功了

Spring+SpringMVC+Mybaties的搭建详细过程

 

搭建过程有些多  但是你看完了一定会有收获。一起加油!!!!

 

 

 

相关文章: