连接池
连接池是创建和管理一个连接的缓冲池的技术,这些连接准备好被任何需要它们的线程使用。
在Tomcat的conf文件夹中的context.xml文件,即存放连接池语句的地方:
简单的连接池示范
//在context.xml文件中加入
<Context>
//name为索引名字,value即该索引下的值,type为该索引保存的形式,需以包的句式表达
<Enviroment name = "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<FileItem> list = fileUpload.parseRequest(request);
//转化为迭代器
Iterator<FileItem> 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("上传不合法");
}
%>