OA系统开发(三)

110 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第3天,点击查看活动详情

整合DruidDataSourceFactory

1.新建com.imooc.oa.datasource并且新建DruidDataSourceFactory类文件

package com.imooc.oa.datasource;

import com.alibaba.druid.pool.DruidDataSource;
import org.apache.ibatis.datasource.unpooled.UnpooledDataSourceFactory;

import javax.sql.DataSource;
import java.sql.SQLException;

public class DruidDataSourceFactory extends UnpooledDataSourceFactory {
    public DruidDataSourceFactory(){
        this.dataSource = new DruidDataSource();
    }

    @Override
    public DataSource getDataSource() {
        try {
            ((DruidDataSource)this.dataSource).init();
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
        return this.dataSource;

    }
}

代码说明:
DruidDataSourceFactory extends UnpooledDataSourceFactory:继承UnpooledDataSourceFactory public DruidDataSourceFactory():创建构造方法

2.修改mybatis-config.xml配置

image.png 配置更改说明:

  • dataSource type="com.imooc.oa.datasource.DruidDataSourceFactory":修改dataSource的type值
  • property name="driverClassName" value="com.mysql.cj.jdbc.Driver":更改数据库驱动name的value值,改成driverClassName
  • property name="initialSize" value="10":修改初始化最大连接数
  • property name="maxActive" value="20":设置最大连接数

3.重启应用进行测试

image.png 此时,我们看到控制台已经输出com.alibaba.druid.pool.DruidDataSource,说明我们的配置成功了

打开数据库查看初始化连接数:

打开服务监控: image.png

设置断点并查看初始化的10条连接数

image.png image.png

4.整合freemark

4.1修改pom.xml新增依赖配置

image.png

<dependency>
    <groupId>org.freemarker</groupId>
    <artifactId>freemarker</artifactId>
    <version>2.3.29</version>
</dependency>
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
    <scope>provided</scope>
</dependency>

4.2 配置web.xml

image.png

<servlet>
    <servlet-name>freemarker</servlet-name>
    <servlet-class>freemarker.ext.servlet.FreemarkerServlet</servlet-class>
    <init-param>
        <param-name>TemplatePath</param-name>
        <param-value>/WEB-INF/ftl</param-value>
    </init-param>
    <init-param>
        <param-name>default_encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
</servlet>
<servlet-mapping>
    <servlet-name>freemarker</servlet-name>
    <url-pattern>*.ftl</url-pattern>
</servlet-mapping>

配置说明:

  • TemplatePath:设置ftl文件的路径
  • default_encoding:设置编码
  • *.ftl:匹配.ftl结尾的文件

4.3新建ftl文件,并且新建test.tpl模板文件

image.png 定义一个变量${result}

<h1>
    ${result}
</h1>

4.4新增test包并且新增servLet类

image.png image.png

package com.imooc.oa.test;

import com.imooc.oa.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;

@WebServlet(name = "TestServlet", value = "/test")
public class TestServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String result = (String) MybatisUtils.executeQuery(sqlSession -> sqlSession.selectOne("test.sample"));

        request.setAttribute("result",result);
        request.getRequestDispatcher("/test.ftl").forward(request,response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }
}

代码说明:

  • String result = (String) MybatisUtils.executeQuery(sqlSession -> sqlSession.selectOne("test.sample"));:获取值
  • request.setAttribute("result",result):设置属性值
  • request.getRequestDispatcher("/test.ftl").forward(request,response);把值转发到ftl文件上

4.5把依赖发布到lib中

image.png 查看out目录是否新增lib文件

  • 发布前: image.png
  • 发布后: image.png

5.重启应用

浏览器访问:http://localhost/test
看到以下界面,说明配置成功了 image.png