index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Download</title>
</head>
<body>
<a href="/web02/DownloadServlet?filename=a.flv">a.flv</a>
<a href="/web02/DownloadServlet?filename=a.jpg">a.jpg</a>
<a href="/web02/DownloadServlet?filename=a.mp3">a.mp3</a>
<a href="/web02/DownloadServlet?filename=a.mp4">a.mp4</a>
<a href="/web02/DownloadServlet?filename=a.txt">a.txt</a>
<a href="/web02/DownloadServlet?filename=a.zip">a.zip</a>
</body>
</html>
DownloadServlet
package e_download;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import sun.misc.BASE64Encoder;
public class DownloadServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获得请求参数 /web02/download/a.flv
String filename = "美女.jpg";
String name = null;
// agent就是请求头中的user-agent
String agent = request.getHeader("user-agent");
// 解决浏览器不支持中文的问题
if (agent.contains("MSIE") || agent.contains("TRIDENT") || agent.contains("EDGE")) {
// IE浏览器
name = URLEncoder.encode(filename, "utf-8");
name = name.replace("+", "%20");
} else if (agent.contains("Firefox")) {
// 火狐浏览器
BASE64Encoder base64Encoder = new BASE64Encoder();
name = "=?utf-8?B?"
+ base64Encoder.encode(filename.getBytes("utf-8")) + "?=";
} else {
// 其它浏览器
name = URLEncoder.encode(filename, "utf-8");
}
System.out.println(filename);
System.out.println(name);
// 告诉浏览器,文件是以附件形式打开,不是直接解析
response.setHeader("Content-Disposition","attachment;filename="+name);
// 获得要下载文件的绝对路径
String path = request.getServletContext().getRealPath("download/"+filename);
// 打开输入流
InputStream in = new FileInputStream(path);
// 获得输出流
OutputStream out = response.getOutputStream();
// 复制
byte[] bs = new byte[1024];
int len = -1;
while ((len = in.read(bs)) != -1) {
out.write(bs, 0, len);
}
in.close();
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
register.html
表单属性:
RegisterServlet
package regist;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.util.UUID;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.beanutils.BeanUtils;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class RegisterServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
// 1. 接收请求,获得参数
User user = new User();
try {
BeanUtils.populate(user, request.getParameterMap());
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
//UUID
String uid = UUID.randomUUID().toString();
uid = uid.replace("-", "");
System.out.println(uid);
user.setUid(uid);
System.out.println(user.toString());
UserDao ud = new UserDaoImp();
ud.addUser(user);
// 2.连接数据库 - insert DAO
System.out.println("注册成功了");
// 3.跳转到首页
String path = request.getContextPath();
response.sendRedirect(path+"/index.html");
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
//使用BeanUtils.populate(user, request.getParameterMap());时,需要保证实体类中的属性名和传入参数名一致
//导jar包