第一天

扫码查看

项目技术架构简介

采用当前流行的前后端编程架构:

  后端框架采用 Spring +SpringMVC+mybatis

  前端采用AdminLTE框架的前端解决方案

搭建SSM开发环境(1)导入数据库

在sql yog中导入数据库

搭建SSM开发环境(2)创建父项目

 1.创建父项目

 2.在pom.xml文件中导入依赖

注意数据库的版本

搭建SSM开发环境(3)创建实体类项目

1. 创建项目

 2. 编写实体类

 3. 编写pom.xml文件

搭建SSM开发环境(4)创建dao项目

1.创建项目

 2. 编写pom.xml文件,导入domian依赖

 3.创建接口

 4.创建配置文件

配置文件在resources中,文件的包名和类名要一致,并且resources中包要用/隔开,而不是.隔开配置文件在resources中,文件的包名和类名要一致,并且resources中包要用/隔开,而不是.隔开

<select id="findAll" resultMap="BaseResultMap">
        SELECT * FROM ss_company
    </select>

5.导入数据库配置文件

jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql:///saas-export?serverTimezone=UTC&useSSL=false
jdbc.username=root
jdbc.password=root

我用的是MySQL 8的版本,配置的时候要注意

6.编写application-dao.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"
       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">

    <description>spring整个mybatis的配置</description>

    <!--1.加载配置文件-->
    <context:property-placeholder location="classpath:properties/db.properties"/>

    <!--2.配置数据库连接池-->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="${jdbc.driver}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>

    <!--3.spring整合mybatis配置1: 把SqlSessionFactory创建交给spring-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!--3.1 注入连接池-->
        <property name="dataSource" ref="dataSource"/>
        <!--指定加载的dao接口的映射文件(可选)
        <property name="mapperLocations" value=""/>
        <property name="configLocation" value="SqlMapConfig.xml主配置文件"/>
        <property name="typeAliasesPackage" value="别名配置:配置扫描的包"/>
        -->
        <property name="typeAliasesPackage" value="com.itheima.domain"/>
    </bean>

    <!--4.spring整合mybatis配置2: 扫描dao接口所在的包-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">

        <!--扫描此包以及此包下的所有子包-->
        <property name="basePackage" value="com.itheima.dao"/>

    </bean>

</beans>

再就是最重要的:测试

1.在test目录下建立对应的包结构

2.编写测试类

package com.itheima.dao.company;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

// 测试类
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:spring/applicationContext-dao.xml")
public class CompanyDaoTest {

    @Autowired
    private CompanyDao companyDao;

    @Test
    public void findAll() {
        System.out.println();
    }

}

搭建SSM开发环境(5)创建service项目

1.创建项目

2.编写pom.xml文件(引入dao依赖)

3.编写service接口

4.编写实现类

5.编写applicationContext-tx.xml文件

因为service层需要事务控制,所以将事务的配置放在此配置文件中
<?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:tx="http://www.springframework.org/schema/tx"
       xmlns:aop="http://www.springframework.org/schema/aop"
       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/tx
       http://www.springframework.org/schema/tx/spring-tx.xsd
       http://www.springframework.org/schema/aop
       http://www.springframework.org/schema/aop/spring-aop.xsd">

    <description>spring声明式事务配置</description>

    <!--1.注解扫描(扫描@Service,@Autowired等注解)-->
    <context:component-scan base-package="com.itheima.service"/>

    <!--2.事务管理器-->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    </bean>

    <!--3.事务通知规则: 拦截到方法后,对指定方法如何管理事务-->
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
        <tx:attributes>
            <!--find等开头的方法;运行时期对事务要求可有可无; 支持只读操作-->
            <tx:method name="find*" propagation="SUPPORTS" read-only="true"/>
            <tx:method name="get*" propagation="SUPPORTS" read-only="true"/>
            <tx:method name="search*" propagation="SUPPORTS" read-only="true"/>
            <tx:method name="select*" propagation="SUPPORTS" read-only="true"/>
            <tx:method name="load*" propagation="SUPPORTS" read-only="true"/>
            <tx:method name="query*" propagation="SUPPORTS" read-only="true"/>
            <!--其他所有方法;运行时期必须有事务环境; 支持crud操作-->
            <tx:method name="*" propagation="REQUIRED" read-only="false"/>
        </tx:attributes>
    </tx:advice>

    <!--4.配置aop切入点和表达式-->
    <aop:config>
        <aop:pointcut id="pt" expression="execution(* com.itheima.service.*.impl.*.*(..))"/>
        <aop:advisor advice-ref="txAdvice" pointcut-ref="pt"/>
    </aop:config>

</beans>

搭建SSM开发环境(六)web工程 A 创建项目、配置web.xml

1.创建项目(web项目)

2.添加依赖

3.编写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"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
         version="2.5">

    <!--配置监听器,通过监听器加载spring配置文件-->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath*:spring/applicationContext-*.xml</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <!--配置编码过滤器-->
    <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>
    </filter>

    <filter-mapping>
        <filter-name>CharacterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <!--配置springmvc前端控制器,所有请求都要经过这里-->
    <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:spring/springmvc.xml</param-value>
        </init-param>

        <!--启动初始化-->
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>

</web-app>

4.配置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: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">

    <!--1.开启注解扫描-->
    <context:component-scan base-package="com.itheima.web"/>

    <!--2.开启注解驱动,配置处理器解析器和处理器适配器-->
    <mvc:annotation-driven/>

    <!--3.配置视图解析器-->
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/pages/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

    <!--4.配置日期转换器工厂-->
    <bean id="conversionServiceFactory" class="org.springframework.context.support.ConversionServiceFactoryBean">
        <property name="converters">
            <set>
                <!--注入自定义的转换器-->
                <ref bean="stringToDateConverter"/>
            </set>
        </property>
    </bean>


</beans>

5.导入log4j.properties文件

6.编写控制器

 日期转换异常

package com.itheima.web.converter;

import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 日期转换类,实现Converter接口
 */
@Component
public class StringToDateConverter implements Converter<String, Date> {

    @Override
    public Date convert(String source) {

        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");

        Date date = null;
        try {
            date = format.parse(source);
        } catch (ParseException e) {
            e.printStackTrace();
        }

        return date;
    }
}

在springmvc.xml文件中配置日期转换器工厂(已经配置)

异常处理

1.创建自定义异常类

package com.itheima.web.exception;

import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * 统一异常处理
 */
@Component
public class CustomExceptionResolver implements HandlerExceptionResolver {


    /**
     * 1.跳转到错误页面
     * 2.携带错误信息
     */
    public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response,
                                         Object handler, Exception ex) {

        // 打印异常信息
        ex.printStackTrace();

        ModelAndView mov = new ModelAndView();

        mov.addObject("ex",ex);
        mov.addObject("errorMsg","服务器繁忙...");
        mov.setViewName("error");

        return mov;
    }
}

2.在springmvc.xml中配置自定义异常类(已经配置)

01-16 02:09
查看更多