前言
准备开发一套部门管理系统 涉及到权限控制,log日志输出管理,generator自动生成mapper、实体类、dao层,mybaties SQL监控等等。选用的框架为SSM 本次就是详细记录一下 搭建的详细过程 然后做一个备忘录 共享出来让大家也可以参考一下 多多交流 留言评论 多批评zhi zheng
首先
IED:STS
jdk:1.8
项目工程:
使用java项目 手动配置 没有选用maven,原因:手动配置容易控制 很容易找到问题出现在哪里,问题出在哪里 找哪里
jar包:
设计表结构:
设计了好几张表 这里可以省略 这里你可以自己随便一个库在对应的库里设计几张表
创建项目目录
分别有domain-实体类 dao层-mybaties的接口 这里我创建了一个common包里面是自己定义的一个工具类,还有一个exceptionhander是一个异常监听处理器。这俩部分可以忽略。接下来定义web项目所需的目录 固定套路:webapp-可以自定义,
WEB-INF--固定写法不能变 lib--存放jar包的地方 classes--项目字节码存放的地方 web.xml--web项目的入口,这几个都是固定的。
然后导入jar 部署项目 更改项目字节码存放地址更改为 classes的目录。 这样一个项目架子搭建完成了
部署项目和更改字节码的存放目录:
部署项目,我用的是一个插件三只可爱的小猫 我认为很好用,自己百度一下安装一下,然后关联一下tomcat,拷贝webapp的所在目录,放置到tomcat的conf目录下server.xml文件中, <Context docBase="/Atomatic/java/SpringHomeWork/SpringMVCSpringMybaties/webapp" path=""/> 相当于告诉tomcat服务器项目的所在位置。
更改classes文件的位置:选中classes文件 右键 buildpath 找到sorce模块 点击browser更改default output folder 文件更改到clases的位置:
接下来就开始正题:
从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的插件 生成一个文件:怎么安装和使用 自行百度
<?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地址和端口 打开这个网址 就说明成功了
搭建过程有些多 但是你看完了一定会有收获。一起加油!!!!