# servlet_learn **Repository Path**: darkfiregit/servlet_learn ## Basic Information - **Project Name**: servlet_learn - **Description**: jsp_servlet学习 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: https://web.0xdf.tk - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-10-12 - **Last Updated**: 2023-02-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: Java, jsp, Servlet ## README # servlet_learn #### 介绍 jsp_servlet学习 #### 软件架构 JAVA #### 安装教程 git clone https://gitee.com/darkfiregit/servlet_learn.git 实验存放在 `web/sy*` 里面 #### 2022-10-26 更新 实验三 2022-11-9 更新jdbc 实验 #### 1.设计模式 mvc #### 2.Dao设计模式 1.数据访问对象 2.接口操作数据库,在数据访问层实现公共的数据操作interface,由DaoImplement实现这些接口并添加新功能 #### 3.设计模式图解 ![img.png](/img/img.png) #### 4.项目设计 > 创建公共接口 (GernealDao) > 创建处理类的接口 并实现公共接口 可在该接口结合情况 创建新的接口 > 在实现类中实现接口 并实现接口中的所有方法 #### 2022-11-13 更新 实验四 原理:通过读取和修改session中的users来进行用户的全部展示和模糊搜索的结果展示 ##### 截图 ![img.png](img/sy4_1.png) ![img.png](img/sy4_3.png) ![img.png](img/sy4_2.png) #### 2022-11-15 更新 实验五 实验五是在实验四的基础上更新的,加入用户的添加、删除、更新功能 对所有需要登录的页面进行权限认证 @webfilter({'path1','path2','path3'}) ##### 效果图 ![img.png](img/sy5.gif) #### 实验6 ##### 数据库连接池 为什么要用池pool 1.原生jdbc创建和销毁需要时间和消耗IO 2.可能是数据库崩溃 3.影响效率 ##### 连接池原理 1.启动时初始化一批链接(list or map) 2.需要jdbc connection时直接从list or map读取 3.使用完毕 不销毁 ,放入链接池中。 ##### 实现连接池 1.初始化连接池 victor (考虑线程池) 2.需要两个集合(可用链接,和正在使用的链接) 3.线程安全(ThreadLocal) ##### 数据源 1.javax.sql.datasource接口 2.则可以用DataSource.getConnection()获取jdbc connection,调用con.close()归还connection ##### 常用的数据库连接池 1.dbcp(由 apache提供) -> 初始化连接池,DataSource ds = BasicDataSourceFactory.createDataSource(prop); //prop表示配置文件 ->提供公共的获取链接池的方法。 ->提供公共获取链接的方法。 2.c3p0 、 Druid 阿里巴巴 ->初始化连接池 DataSource ds = new Datasource ##### CRUD 优化 1.DBUtil -> 返回值 int 更新 -> 返回值 object 查询(一条) BeanHander -> 返回值List 查询多条 BeanListHander 2.Spring优化 #### 实验七 发送邮箱 导包配置好就能发了 使用到了 SimpleEmail.jarS ##### Email登录演示 ![登录演示](img/sy7_1.gif) #### 分页显示 ##### 原理 1.物理分页: 使用到了sql数据库中的limit限制语句,限制显示的数量 2.逻辑分页 将数据分成小部分,即获取全部数据,再从数据中分为小的部分输出。 ##### 分页演示 ![分页演示](img/sy7_2.gif) #### 期末作业 汽车管理  1.使用JDBCTemplate+Druid线程池提高SQL调用效率  2.使用AOP切面控制访问权限  3.使用IoC降低各模块之间耦合度 ![作品演示](img/sy8_1.gif)