Tomcat数据源与连接池/上传功能

    • 连接池
      • 简单的连接池示范
    • 数据源DataSource
    • 上传

连接池

连接池是创建和管理一个连接的缓冲池的技术,这些连接准备好被任何需要它们的线程使用。

在Tomcat的conf文件夹中的context.xml文件,即存放连接池语句的地方:

简单的连接池示范

//在context.xml文件中加入
<Context>
//name为索引名字,value即该索引下的值,type为该索引保存的形式,需以包的句式表达
"name"  value="hello world!" type="java.lang.String">
Context>
//在jsp文件中调用
<%
Context context = new InitialContext();
String name = (String)context.lookup("java:comp/env/name");
%>

数据源(DataSource)

数据的来源,是提供某种所需要数据的器件或原始媒体。在数据源中存储了所有建立数据库连接的信息。就像通过指定文件名称可以在文件系统中找到文件一样,通过提供正确的数据源名称,你可以找到相应的数据库连接。

实际上,DataSource就是一个内部封装了连接池的工具,并在获得连接池后,自发进行connection操作,即通过连接池缓存快速连接上数据库。这个过程需要我们在其context.xml文件中创建其调用语句:

//在context.xml文件中加入
<Context>
   <Resource name="jdbc/库名" auth="Container" type="javax.sql.DataSource"
      maxActive="100" maxIdle="30" maxWait="10000" username="数据库用户名"
      password="数据库用户密码" driverClassName="com.mysql.jdbc.Driver"
      url="jdbc:mysql://127.0.0.1:3306/库名?
              useUnicode=true&characterEncoding=utf-8" />
Context>

然后我们在项目的web.xml文件中添加:

<resource-ref>

    <res-ref-name>jdbc/库名</res-ref-name>

    <res-type>javax.sql.DataSource</res-type>

    <res-auth>Container</res-auth>

</resource-ref>

在导入对应的包后,于我们的BaseDao类中,只需创建如下方法:

    public Connection getConnection() {

        Context ctx;
        try {
            ctx = new InitialContext();

            DataSource ds=(DataSource)ctx.lookup("java:comp/env/jdbc/dept");
            conn=ds.getConnection();        
        } catch (NamingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }  
        return conn;

    }

即可创建与目标数据库的连接。

上传

<%@page import="java.io.File"%>
<%@page import="org.apache.commons.fileupload.FileItem"%>
<%@page import="org.apache.commons.fileupload.disk.DiskFileItemFactory"%>
<%@page import="org.apache.commons.fileupload.FileItemFactory"%>
<%@page import="org.apache.commons.fileupload.servlet.ServletFileUpload"%>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<%
    //设置编码格式
    request.setCharacterEncoding("UTF-8");
    //上传的地址
    String uploadPath = request.getSession().getServletContext()
            .getRealPath("upload");
    //检查请求类型
    boolean flag = ServletFileUpload.isMultipartContent(request);
    if (flag) {
        FileItemFactory fileItemFactory = new DiskFileItemFactory();
        ServletFileUpload fileUpload = new ServletFileUpload(
                fileItemFactory);
        List list = fileUpload.parseRequest(request);
        //转化为迭代器
        Iterator iterator = list.iterator();
        while (iterator.hasNext()) {
            // 上传的数据
            FileItem fileItem = iterator.next();
            //是否是文件类型,如果是啧返回false
            if (fileItem.isFormField()) {
            String fieldName = fileItem.getFieldName();
            if(fieldName.equals("title")){
            entity.setTitle(fieldItem.getString("UTF-8"))
            }
            } else {
                File saveFile = new File(fileItem.getName());
                File uploadFile = new File(uploadPath,
                        saveFile.getName());
                fileItem.write(uploadFile);

            }
        }
    } else {
        out.print("上传不合法");
    }
%>

你可能感兴趣的:(学习笔记)