持续创作,加速成长!这是我参与「掘金日新计划 · 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配置
配置更改说明:
- 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.重启应用进行测试
此时,我们看到控制台已经输出com.alibaba.druid.pool.DruidDataSource,说明我们的配置成功了
打开数据库查看初始化连接数:
打开服务监控:
设置断点并查看初始化的10条连接数
4.整合freemark
4.1修改pom.xml新增依赖配置
<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
<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模板文件
定义一个变量${result}
<h1>
${result}
</h1>
4.4新增test包并且新增servLet类
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中
查看out目录是否新增lib文件
- 发布前:
- 发布后:
5.重启应用
浏览器访问:http://localhost/test
看到以下界面,说明配置成功了