使用maven创建ssm项目

使用maven创建ssm项目

  1. 解决webapp目录下无法新建jsp问题:在File下打开Project Settings–>Modules–>点击第二列+号打开web–>在点击第三列第二行的+号选中需要创建jsp的目录–>查看webapp是否目录图形中有一个点,有的话就好了。

  2. 导入依赖包,使用maven管理,spring5.2.6.RELEASE

    1. <?xml version="1.0" encoding="UTF-8"?>
      
      <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
      
        <groupId>org.example</groupId>
        <artifactId>OnlineClock</artifactId>
        <version>1.0-SNAPSHOT</version>
        <packaging>war</packaging>
      
        <name>OnlineClock Maven Webapp</name>
        <!-- FIXME change it to the project's website -->
        <url>http://www.example.com</url>
      
        <properties>
          <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
          <!--指定jdk版本-->
          <maven.compiler.source>1.8</maven.compiler.source>
          <maven.compiler.target>1.8</maven.compiler.target>
          <!--//统一spring 版本-->
          <spring.version>5.2.6.RELEASE</spring.version>
          <!--//统一mybatis-spring 版本-->
          <mybatis-spring.version>1.3.2</mybatis-spring.version>
        </properties>
      
        <dependencies>
          <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
          </dependency>
      
          <!--    mybatis逆向工程-->
          <dependency>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-core</artifactId>
            <version>1.4.0</version>
          </dependency>
          <!--************************************************spring 依赖*****************************************************-->
      
          <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring.version}</version>
          </dependency>
          <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
          </dependency>
          <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>${spring.version}</version>
          </dependency>
          <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aspects</artifactId>
            <version>${spring.version}</version>
          </dependency>
          <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>${spring.version}</version>
          </dependency>
          <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
          </dependency>
          <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>${spring.version}</version>
          </dependency>
          <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
          </dependency>
          <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-expression</artifactId>
            <version>${spring.version}</version>
          </dependency>
          <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>${spring.version}</version>
          </dependency>
          <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-orm</artifactId>
            <version>${spring.version}</version>
          </dependency>
          <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring.version}</version>
          </dependency>
          <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>${spring.version}</version>
          </dependency>
          <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring.version}</version>
          </dependency>
          <!--spring 整合 mybatis接口包-->
          <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>${mybatis-spring.version}</version>
          </dependency>
          <!--************************************************spring 依赖*****************************************************-->
      
          <!--*****************数据库 的依赖**********************-->
          <!--mybatis 依赖包-->
          <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.6</version>
          </dependency>
          <!-- 连接池-->
          <dependency>
            <groupId>commons-dbcp</groupId>
            <artifactId>commons-dbcp</artifactId>
            <version>1.4</version>
          </dependency>
          <!--    mysql驱动 -->
          <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.20</version>
          </dependency>
          <!--日志统一门面接口包-->
          <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.25</version>
          </dependency>
          <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-nop</artifactId>
            <version>1.7.25</version>
          </dependency>
          <!--日志-->
          <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
          </dependency>
          <!--视图解析器默认 依赖-->
          <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
          </dependency>
          <!--*****************数据库 的依赖**********************-->
        </dependencies>
      
        <build>
          <finalName>OnlineClock</finalName>
          <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
            <plugins>
              <plugin>
                <artifactId>maven-clean-plugin</artifactId>
                <version>3.1.0</version>
              </plugin>
              <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
              <plugin>
                <artifactId>maven-resources-plugin</artifactId>
                <version>3.0.2</version>
              </plugin>
              <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.0</version>
              </plugin>
              <plugin>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.22.1</version>
              </plugin>
              <plugin>
                <artifactId>maven-war-plugin</artifactId>
                <version>3.2.2</version>
              </plugin>
              <plugin>
                <artifactId>maven-install-plugin</artifactId>
                <version>2.5.2</version>
              </plugin>
              <plugin>
                <artifactId>maven-deploy-plugin</artifactId>
                <version>2.8.2</version>
              </plugin>
            </plugins>
          </pluginManagement>
        </build>
      </project>
      
      
  3. 开始项目搭建

    1. 整合mybatis

      1. <!--Spring-MyBatis.xml-->
        <?xml version="1.0" encoding="UTF-8"?>
        <beans xmlns="http://www.springframework.org/schema/beans"
               xmlns:context="http://www.springframework.org/schema/context"
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xmlns:mvc="http://www.springframework.org/schema/mvc"
               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.xsd
                                    http://www.springframework.org/schema/mvc
                                    http://www.springframework.org/schema/mvc/spring-mvc.xsd
                ">
            <!--spring 与 MyBatis 的整合:主要配置三个:
                连接池(dataSource)、会话工厂(SqlSessionFactory)、DAO
                配置如下:
            -->
            <!--***************************主要配置****************************************-->
            <!--引入数据库资源文件:-->
            <context:property-placeholder location="classpath:proper/jdbc.properties"/>
        
            <!--配置连接池-->
            <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" >
                <!-- 数据库基本信息配置 -->
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
                <property name="driverClassName" value="${jdbc.driverClassName}"/>
                <property name="maxActive" value="10"/>
                <property name="maxIdle" value="5"/>
            </bean>
        
            <!--配置会话工厂-->
            <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
                <!--连接池作为会话工厂的数据源-->
                <property name="dataSource" ref="dataSource"/>
                <!--关乎其他的一些mybatis自身的一些配置所以这里采用引入xml 的方式-->
                <property name="configLocation" value="classpath:config/myBaits/MybatisConfig.xml"/>
            </bean>
        
            <!--DAO使用注解方式-->
            <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
                <!--DAO所在的包:提示这里采用的是默认的 DAO与对应Mapper.xml放一起且昵称相同的规范,
                如果需要使用其他参数指定路径-->
                <property name="basePackage" value="com.hl.ssm.*.mapper"/>
                <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
            </bean>
            <!--***************************主要配置****************************************-->
        
        
        </beans>
        
        
      2. <!--MyBatisConfig.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配置   根据需求-->
            <settings>
                <!--mybatis 声明 日志 -->
                <setting name="logImpl" value="log4j"/>
                <setting name="lazyLoadingEnabled" value="true"/> <!--延时加载打开,默认关闭-->
                <setting name="aggressiveLazyLoading" value="false"/>   <!--积极加载关闭, 默认打开-->
            </settings>
            <!--开启批量别名    必须配置-->
            <typeAliases>
                <package name="com.hl.ssm.externalPort.pojo"/>
            </typeAliases>
        </configuration>
        
        
      3. jdbc.driverClassName=com.mysql.cj.jdbc.Driver
        jdbc.url=jdbc:mysql://localhost:3306/onlineclock?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&serverTimezone=GMT%2b8&autoReconnect=true&useSSL=false
        jdbc.username=root
        jdbc.password=root
        
        
      4. <?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>
        
            <context id="DB2Tables" targetRuntime="MyBatis3">
        
                <!--        生成没有注释的bean-->
                <commentGenerator>
                    <property name="suppressAllComments" value="true"/>
                </commentGenerator>
        
        
                <!--        配置数据库连接信息-->
                <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
                                connectionURL="jdbc:mysql://localhost:3306/onlineclock?serverTimezone=UTC"
                                userId="root"
                                password="root">
                </jdbcConnection>
        
                <javaTypeResolver >
                    <property name="forceBigDecimals" value="false" />
                </javaTypeResolver>
        
                <!--        指定javaBean生成的位置-->
                <javaModelGenerator targetPackage="com.w.domain" targetProject=".\src\main\java">
                    <property name="enableSubPackages" value="true" />
                    <property name="trimStrings" value="true" />
                </javaModelGenerator>
        
        
                <!--        指定sql映射文件生成的位置-->
                <sqlMapGenerator targetPackage="com.w.mapper"  targetProject=".\src\main\resources">
                    <property name="enableSubPackages" value="true" />
                </sqlMapGenerator>
        
        
                <!--        指定dao接口生成的位置,mapper接口-->
                <javaClientGenerator type="XMLMAPPER" targetPackage="com.w.mapper"  targetProject=".\src\main\java">
                    <property name="enableSubPackages" value="true" />
                </javaClientGenerator>
        
        
                <!--        指定每个表的生成策略-->
                <table tableName="stuUser" domainObjectName="User"></table>
        
        
            </context>
        </generatorConfiguration>
        
      5. package test;
        
        import org.mybatis.generator.api.MyBatisGenerator;
        import org.mybatis.generator.config.Configuration;
        import org.mybatis.generator.config.xml.ConfigurationParser;
        import org.mybatis.generator.internal.DefaultShellCallback;
        
        import java.io.File;
        import java.util.ArrayList;
        import java.util.List;
        
        public class MbgTest {
            public static void main(String[] args) throws Exception{
                List<String> warnings = new ArrayList<String>();
                boolean overwrite = true;
        
        //        指定配置文件
                File configFile = new File("D:/IdeaProject/springbootProjectes/OnlineClock/src/main/resources/mbg.xml");
        
                ConfigurationParser cp = new ConfigurationParser(warnings);
                Configuration config = cp.parseConfiguration(configFile);
                DefaultShellCallback callback = new DefaultShellCallback(overwrite);
                MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
                myBatisGenerator.generate(null);
            }
        }
        
        
      6. #将等级为DEBUG的日志信思输出到console控制台和file文件这两个目的地,console和fiLe的定义在下面的代码
        log4j.rootLogger=DEBUG,CONSOLE,file
        
        #控制台输出的相关设置
        log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
        #输出方式
        log4j.appender.CONSOLE.Target = System.out
        #输出级别
        1og4j.appender.CONSOLE.Threshold=DEBUG
        log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
        #输出格式
        log4j.appender.CONSOLE.layout.ConversionPattern=[%c]-%m%n
        
        #文件输出的相关设置
        log4j.appender.file=org.apache.log4j.RollingFileAppender
        #输出文件的目录
        log4j.appender.file.File=./log/mybatis.1og
        #输出文件的最大存储量
        log4j.appender.file.MaxFileSize=10mb
        1og4j.appender.file.Threshold=DEBUG
        log4j.appender.file.layout=org.apache.log4j.PatternLayout
        log4j.appender.file.layout.ConversionPattern=[%p][%d{yy-M-dd}][%C]%m%n
        
        #日志输出级别
        log4j.logger.org.mybatis=DEBUG
        log4j.logger.java.sq1=DEBUG
        log4j.logger.java.sql.statement=DEBUG
        log4j.logger.java.sq1.ResultSet=DEBUG
        log4j.logger.java.sq1.PreparedStatement=DEBUG
        
        
    2. 整合springmvc

      1. <!--web.xml-->
        <?xml version="1.0" encoding="UTF-8"?>
        <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                 xmlns="http://java.sun.com/xml/ns/javaee"
                 xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
                 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
        
        
        
          <!--spring监听器-->
          <context-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:applicationContext.xml</param-value>
          </context-param>
          <listener>
            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
          </listener>
        
          <!--springmvc前端控制器-->
          <servlet>
            <servlet-name>DispatcherServlet</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <!--初始化 告诉spring-mvc文件在哪里-->
            <init-param>
              <param-name>contextConfigLocation</param-name>
              <param-value>classpath:spring-mvc.xml</param-value>
            </init-param>
            <!--服务器启动时跟着启动-->
            <load-on-startup>1</load-on-startup>
          </servlet>
        
          <servlet-mapping>
            <servlet-name>DispatcherServlet</servlet-name>
            <!--任何访问资源都进web层spring框架,缺省-->
            <url-pattern>/</url-pattern>
          </servlet-mapping>
        
          <!--乱码处理器-->
          <filter>
            <filter-name>CharacterEncodingFilter</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>CharacterEncodingFilter</filter-name>
            <url-pattern>/*</url-pattern>
          </filter-mapping>
        
          <!--  4、使用Rest风格的URI,可以把页面发过来的post请求转为指定的delete或者put请求-->
          <filter>
            <filter-name>HiddenHttpMethodFilter</filter-name>
            <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
          </filter>
          <filter-mapping>
            <filter-name>HiddenHttpMethodFilter</filter-name>
            <url-pattern>/*</url-pattern>
          </filter-mapping>
        
          <display-name>Archetype Created Web Application</display-name>
        
        </web-app>
        
        
        
      2. <?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: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.xsd
                                  http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
                                    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
                                    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
        
            <context:component-scan base-package="com.w.controller"/>
        
            <!--注解驱动 支持springmvc更高级的内容-->
        
            <mvc:annotation-driven/>
            <!--开放资源访问权限给tomcat,可以访问到静态资源-->
            <mvc:default-servlet-handler/>
        
            <!--视图解析器-->
            <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
                <property name="prefix" value="/pages/"></property>
                <property name="suffix" value=".html"></property>
            </bean>
        
        </beans>
        
    3. 拦截器的使用,

      1. 在spring-mvc引入

         <!-- 配置拦截器 -->
            <mvc:interceptors>
                <mvc:interceptor>
                    <!-- /**代表拦截所有mvc控制器 -->
                    <mvc:mapping path="/**"/>
                    <!-- mvc:exclude-mapping作用是对某个请求进行 |不拦截| -->
                    <mvc:exclude-mapping path="/login" />
                    <!-- 指定的拦截处理类,该类一定要实现HandlerInterceptor -->
                    <bean class="com.w.interceptor.LoginInterceptor"></bean>
                </mvc:interceptor>
            </mvc:interceptors>
        
      2. 编写拦截处理类

        package com.w.interceptor;
        
        import javax.servlet.http.HttpServletRequest;
        import javax.servlet.http.HttpServletResponse;
        
        
        import org.springframework.web.servlet.HandlerInterceptor;
        
        public class LoginInterceptor implements HandlerInterceptor {
            
          //1、执行完毕,返回前拦截 --afterCompletion
          //2、在处理过程中,执行拦截-- postHandle
          //3、执行前进行拦截—preHandle(常用)
            
            @Override
            public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        
                Integer uid = (Integer) request.getSession().getAttribute("uid");
                if(uid != null){
                    // 登录成功不拦截
                    return true;
                }else{
                    // 拦截后进入登录页面
                    response.sendRedirect(request.getContextPath()+"/login");//重定向
                    return false;
                }
        
            }
        }
        
        
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值