zoukankan      html  css  js  c++  java
  • Maven学习 八 采用Maven搭建SSM环境

    第一步:创建一个Maven项目

    项目的打包方式选择,war

    第二步:在webapp下面创建java web项目的目录结构,并配置web.xml文件

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
      <display-name>SSM</display-name>
      <!-- spring配置文件位置 -->
      <context-param>
          <param-name>contextConfigLocation</param-name>
          <param-value>classpath:applicationContext.xml</param-value>
      </context-param>
      <!-- 配置监听器,在项目一启动就创建spring的容器
          这个监听器实现了ServletContextListener接口
       -->
      <listener>
          <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
      </listener>
      
      <!-- springMVC的前端控制器 DispatcherServlet-->
      <servlet>
          <servlet-name>springMVC</servlet-name>
          <servlet-class>org.springframework.web.servlet.DispatcherServlet </servlet-class>
         <!-- 修改springMVC配置文件的路径和名称 -->
          <init-param>
              <param-name>contextConfigLocation</param-name>
              <param-value>classpath:springmvc.xml</param-value>
          </init-param>
          <!-- 配置DispatcherServlet自启动 -->
          <load-on-startup>1</load-on-startup>
      </servlet>
      
      <servlet-mapping>
          <servlet-name>springMVC</servlet-name>
          <url-pattern>/</url-pattern>
      </servlet-mapping>
      
      <!-- 设置请求的过滤器 -->
      <filter>
          <filter-name>encoding</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>
      </filter>
      <filter-mapping>
          <filter-name>encoding</filter-name>
          <url-pattern>/*</url-pattern>
      </filter-mapping>
      
    </web-app>

    第三步:配置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:aop="http://www.springframework.org/schema/aop"
        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.xsd  
            http://www.springframework.org/schema/aop 
            http://www.springframework.org/schema/aop/spring-aop.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context.xsd
            http://www.springframework.org/schema/tx
            http://www.springframework.org/schema/tx/spring-tx.xsd">
        <!-- 开启注解
            注意:spring 扫描与表对应的实体类,以及service层的类,不能用来扫描Controller层的类,
            因为Controller层的类需要由SpringMVC容器来管理,如果采用了Spring容器管理,
            就会产生声明式事物无效
         -->
        <context:component-scan base-package="com.ssm.pojo,com.ssm.bean,com.ssm.service.impl"></context:component-scan>
        
        <!-- 加载属性文件 -->
        <context:property-placeholder location="classpath:db.properties"/>
        <!-- 配置数据源 -->
        <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" >
              <property name="driverClassName" value="${jdbc.driver}"></property>
              <property name="url" value="${jdbc.url}"></property>
              <property name="username" value="${jdbc.username}"></property>
              <property name="password" value="${jdbc.password}"></property>
        </bean>
        
        <!-- sqlSessionFactory ,注册sqlSession工厂-->
         <bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
             <!--dataSource的类型是DataSource是一个接口,上面配置的DriverManagerDataSouce类实现了DataSource接口  -->
             <property name="dataSource" ref="dataSource"></property>
             <!-- 设置别名 -->
             <property name="typeAliasesPackage" value="com.ssm.pojo"></property>
         </bean>
        
        <!-- 扫描器,用来扫描mybatis中xxxMapper.xml文件以及xxxMapper.java接口文件,并使用cglib的动态代理生成接口的实现类 -->
        <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
                <property name="basePackage" value="com.ssm.mapper" ></property>
                <property name="sqlSessionFactoryBeanName" value="sessionFactory"></property>
          </bean>
          
          <!-- 配置事物管理器 -->
          <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
             <property name="dataSource" ref="dataSource"></property>
          </bean>
          
          
          <!-- 配置声明式事物,声明式事物需要和Aop一起使用,实际工作中会开启注解 -->
          <tx:advice id="txAdvice" transaction-manager="txManager">
            <tx:attributes>
                <!-- 哪些方法需要有事务控制 -->
                <!-- 方法以 ins 开头事务管理 -->
                <tx:method name="ins*" />
                 <!-- 方法以 del 开头事务管理 -->
                <tx:method name="del*" />
                 <!-- 方法以 upd 开头事务管理 -->
                <tx:method name="upd*" />
                <!-- readOnly
                事务属性中的readOnly标志表示对应的事务应该被最优化为只读事务。
                如果值为true就会告诉Spring我这个方法里面没有insert或者update,
                你只需要提供只读的数据库Connection就行了,
                这种执行效率会比read-write的Connection高,
                所以这是一个最优化提示。
                在一些情况下,一些事务策略能够起到显著的最优化效果
                ,例如在使用Object/Relational映射工具
                (如:Hibernate或TopLink)时避免dirty checking(试图“刷新”)。 -->
                <tx:method name="*" read-only="true"/>
            </tx:attributes>
        </tx:advice>
        <!-- 
                声明式事物是基于AOP的,因此要声明切点和通知
         -->
        <aop:config>
            <!-- 切点范围设置大一些 -->
            <aop:pointcut expression="execution(* com.ssm.service.impl.*.*(..))" id="mypoint" />
            <aop:advisor advice-ref="txAdvice" pointcut-ref="mypoint" />
        
        </aop:config>
        <!-- 
            AOP的注解方式都是采用cglib动态代理
             proxy-target-class="true"代表采用cglib动态代理
             false代表使用jdk的动态代理
         -->
        <aop:aspectj-autoproxy proxy-target-class="true"></aop:aspectj-autoproxy>
        
    </beans>

    第四步:配置springmvc.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://www.springframework.org/schema/beans"
    xmlns:context="http://www.springframework.org/schema/context"
    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 "> 
    
        <!-- 开启扫描注解的包
            当前的配置文件是被DispatcherServlet加载的
            注意,此处的处理器所在的包要在springMVC的配置文件中进行扫描,不能在spring的配置文件中进行
            扫描,因为处理器要注册到springMVC容器中,也就是controller所在的包需要被SpringMVC容器扫描,
            不能被Spring容器所扫描
         -->
        <context:component-scan base-package="com.ssm.controller"></context:component-scan>
        <!-- 注解驱动 -->
        <!-- 
            上面的注解相当于下面两个类
            org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping
            org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter
         -->
        <mvc:annotation-driven></mvc:annotation-driven>
        <context:annotation-config />
        <!-- 放行静态资源,不拦截静态资源 -->
        <!-- /js/* 代表项目下的js文件夹下的所有的文件
            /js/js** 代表项目下的js文件夹下的所有文件以及子文件夹下的所有文件
            <mvc:resources location="/js/" mapping="/js/**"></mvc:resources>
            上面的mapping代表的是请求的资源的请求路径,location请求的资源所在的服务器的路径
            下面代表:只要发现 请求路径 符合/js/**格式,就到当前项目所在的本地服务器的/js/路径下去找资源
            
         -->
        <mvc:resources location="/js/" mapping="/js/**"></mvc:resources>
        <mvc:resources location="/css/" mapping="/css/**"></mvc:resources>
        <mvc:resources location="/images/" mapping="/images/**"></mvc:resources>
        
        <!-- 注册  视图解析器 
            有时候,我们为了保护页面不被别人访问,可以把页面放在WEB-INF中,
            就可以把prefix配置成"/WEB-INF/"
            【注意】视图解析器是解析处理器最后的return 的值,并非我们在前端自己输入的请求
            如果return 的视图有前缀(forward或者redirect),视图解析器用默认的,如果没有前缀,则用我们自己配置的
        -->
        <bean id="viewResolver" class=" org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix" value="/"></property>
            <property name="suffix" value=""></property>
        </bean>
        
        <!-- 配置拦截器 -->
        <mvc:interceptors>
            <!-- 表示所有的控制器请求都拦截 -->
            <bean class="com.ssm.interceptor.DemoInterceptor"></bean>
            <!-- 拦截特定请求 -->
            <!-- <mvc:interceptor>
                <mvc:mapping path="/demo"/>
                <bean class="com.ssm.interceptor.DemoInterceptor"></bean>
            </mvc:interceptor> -->
        </mvc:interceptors>
    </beans>

    第五步:配置数据源

    jdbc.driver=com.mysql.jdbc.Driver
    jdbc.url=jdbc:mysql://192.168.153.128:3306/mybaties?characterEncoding=utf-8
    jdbc.username=root
    jdbc.password=123456

    第六步:配置日志打印

    # Global logging configuration
    log4j.rootLogger=ERROE,stdout
    # Console output...
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

    第七步:配置Pom.xml文件

    1.maven默认只把src/main/resources里面的非.java文件进行编译到classes中

    2.如果希望src/main/java下的文件也被编辑到classes中,在pom.xml中配置

    <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>com.bjsxt</groupId>
        <artifactId>ssm</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <packaging>war</packaging>
        <properties>
            <servlet-version>3.0.1</servlet-version>
            <jsp-version>2.2</jsp-version>
            <jstl-version>1.2</jstl-version>
            <spring-version>4.1.6.RELEASE</spring-version>
            <aspectjweaver-version>1.8.6</aspectjweaver-version>
            <mybatis-version>3.2.7</mybatis-version>
            <mybatis-spring-version>1.2.3</mybatis-spring-version>
            <log4j-version>1.2.17</log4j-version>
            <mysql-connector-java-version>5.1.38</mysql-connector-java-version>
            <jackson-version>2.4.1</jackson-version>
            <commons-fileupload-version>1.3.1</commons-fileupload-version>
        </properties>
        <dependencies>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <version>${servlet-version}</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>javax.servlet.jsp</groupId>
                <artifactId>jsp-api</artifactId>
                <version>${jsp-version}</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>jstl</groupId>
                <artifactId>jstl</artifactId>
                <version>${jstl-version}</version>
            </dependency>
            <!-- spring -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
                <version>${spring-version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-jdbc</artifactId>
                <version>${spring-version}</version>
            </dependency>
            <dependency>
                <groupId>org.aspectj</groupId>
                <artifactId>aspectjweaver</artifactId>
                <version>${aspectjweaver-version}</version>
            </dependency>
            <!-- mybatis -->
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>${mybatis-version}</version>
            </dependency>
            <!-- mybatis和spring整合 -->
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis-spring</artifactId>
                <version>${mybatis-spring-version}</version>
            </dependency>
            <!-- log4j 日志 -->
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>${log4j-version}</version>
            </dependency>
            <!-- mysql 驱动类 -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>${mysql-connector-java-version}</version>
            </dependency>
            <!-- jackson -->
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
                <version>${jackson-version}</version>
            </dependency>
            <!-- apache 图片上传 -->
            <dependency>
                <groupId>commons-fileupload</groupId>
                <artifactId>commons-fileupload</artifactId>
                <version>${commons-fileupload-version}</version>
            </dependency>
        </dependencies>
        <build>
            <resources>
                <resource>
                    <!-- 把src/main/java快捷目录下的所有的xml文件进行编译,编译进classpath路径下 ,为了mybatis的XXXMapper.xml文件-->
                    <directory>src/main/java</directory>
                    <includes>
                        <include>**/*.xml</include>
                    </includes>
                </resource>
                <resource>
                    <!-- 把src/main/resources下的所有的.xml和.properties文件进行编译,编译进classpath路径下 -->
                    <directory>src/main/resources</directory>
                    <includes>
                        <include>**/*.xml</include>
                        <include>**/*.properties</include>
                    </includes>
                </resource>
            </resources>
            <plugins>
                <plugin>
                    <groupId>org.apache.tomcat.maven</groupId>
                    <artifactId>tomcat7-maven-plugin</artifactId>
                    <version>2.2</version>
                    <configuration>
                        <!-- 控制tomcat端口号 -->
                        <port>80</port>
                        <!-- 项目发布到tomcat后的名称 -->
                        <!-- / 相当于把项目发布名称为ROOT -->
                        <!-- /abc -->
                        <path>/</path>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </project>
  • 相关阅读:
    第二次作业循环语句
    c语言01次作业分支,顺序结构
    PAT 1027. Colors in Mars
    PAT 1026 Table Tennis
    PAT 1035 Password
    PAT 1038. Recover the Smallest Number
    PAT 1028 List Sorting (25)
    PAT 1041 Be Unique (20)
    PAT 1025 PAT Ranking
    1037. Magic Coupon
  • 原文地址:https://www.cnblogs.com/cplinux/p/9867147.html
Copyright © 2011-2022 走看看