servlet使用过滤器和连接池

servlet使用过滤器和连接池

                                        ——Javee

在运行时,过滤器优先于HttpServlet对象使用,用户在访问的时候请求通过过滤器,过滤器决定放不放行。当然,还可以在过滤器中进行HttpServlet中的处死话工作,因为之两个的request和response时同一个对象。

具体代码如下:

package com.seecen.filter;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
* @Author Javee
* @Date 2019/9/17 10:44
* @Description
*/
//*表示所有的请求都要经过过滤器
@WebFilter("/*")
public class IdentityFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig){
        System.out.println("filter init...");    //初始化
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        //进行初始化
        HttpServletRequest request = (HttpServletRequest) servletRequest;
        HttpServletResponse response = (HttpServletResponse) servletResponse;
        request.setCharacterEncoding("UTF-8");
        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");

        System.out.println("doFilter...");
        //放行
        filterChain.doFilter(servletRequest, servletResponse);
    }

    @Override
    public void destroy() {
        System.out.println("filter destroy...");    //销毁
    }
}

这里我们使用了注解的方法进行配置,当有有兴趣的朋友可以尝试在web.xml中进行配置,效果是一样的。

注意:因为注解一般情况下是不能打包的,所以在使用注解的项目中,需要打包的话,在pom.xml中添加如下代码(必须是3.0.0及以上版本):

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

接下来我们聊聊数据库连接池,数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。这种提高,在我们平时的测试中很难感受到,但是一旦系统的访问量增大数万倍,这种性能的提升就很明显。

那么数据库连接池具体怎么操作呢?

首先,我们要修改一下tomcat的配置文件,我们找到自己本地tomcat的文件夹,找到conf->context.xml,添加如下代码:

<Context>
    ......
    <!--配置oracle数据库的连接池-->
    <Resource name="jdbc/mypool"
        author="Container"
        type="javax.sql.DataSource"
        maxActive="10"
        maxIdle="3"
        maxWait="10000"
        username="admin"
        password="admin"
        driverClassName="oracle.jdbc.driver.OracleDriver"
        url="jdbc:oracle:thin:@127.0.0.1:1521:orcl" />
    ......
</Context>

再找到我们项目中的web.xml,添加如下代码并重新导包,注意这里的name和我们上面配置的name必须相同:

<resource-ref>
  <res-ref-name>jdbc/mypool</res-ref-name>
  <res-type>javax.sql.DataSource</res-type>
  <res-auth>Container</res-auth>
</resource-ref>

到这里,链接数据库,获得连接的代码如下:

public Connection getConnection(){
    try {
        Context context = new InitialContext();
        DataSource dataSource = (DataSource)context.lookup("java:comp/env/jdbc/mypool");
        //System.out.println("....................." + dataSource.getConnection());
        return dataSource.getConnection();
    } catch (NamingException e) {
        e.printStackTrace();
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return null;
}

获取到连接后,就可以像我们之前那样使用Java操作数据库了

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值