Servlet文件下载的常用实例1
来源:互联网 发布:linux view 最后一页 编辑:程序博客网 时间:2024/06/05 09:40
范例一:隐藏资源
1.功能描述:对于登录成功的用户,保存会话,然后可以下载资源文件。
2.目的:不允许直接访问某些静态资源文件,从而达到保护静态资源文件的目的
3.实现步骤:
(1)创建一个FileDownloadServlet、一个LoginServlet、一个login.jsp页面
(2)在FileDownloadServlet中的业务逻辑:
1)根据httpSession进行判断,如果成功,则进行下载。否则,跳转到登录页面
(3)在LoginServlet中的业务逻辑:
1)如果用户登录成功,则保存会话,跳转到FileDownloadServlet
2)如果登录失败,则跳转到login.jsp页面
4.源代码:
import java.io.BufferedInputStream;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.OutputStream;import javax.servlet.RequestDispatcher;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;@WebServlet(urlPatterns = { "/download" })public class FileDownloadServlet extends HttpServlet { private static final long serialVersionUID = 7583L; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getSession(); if (session == null || session.getAttribute("loggedIn") == null) { RequestDispatcher dispatcher = request.getRequestDispatcher("/login.jsp"); dispatcher.forward(request, response); // must return after dispatcher.forward(). Otherwise, // the code below will be executed return; } String dataDirectory = request. getServletContext().getRealPath("/WEB-INF/data"); File file = new File(dataDirectory, "secret.pdf"); if (file.exists()) { response.setContentType("application/pdf"); response.addHeader("Content-Disposition", "attachment; filename=secret.pdf"); byte[] buffer = new byte[1024]; FileInputStream fis = null; BufferedInputStream bis = null; // if you're using Java 7, use try-with-resources try { fis = new FileInputStream(file); bis = new BufferedInputStream(fis); OutputStream os = response.getOutputStream(); int i = bis.read(buffer); while (i != -1) { os.write(buffer, 0, i); i = bis.read(buffer); } } catch (IOException ex) { System.out.println (ex.toString()); } finally { if (bis != null) { bis.close(); } if (fis != null) { fis.close(); } } } }}
import java.io.IOException;import javax.servlet.RequestDispatcher;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;@WebServlet(urlPatterns = { "/login" })public class LoginServlet extends HttpServlet { private static final long serialVersionUID = -920L; public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String userName = request.getParameter("userName"); String password = request.getParameter("password"); if (userName != null && userName.equals("ken") && password != null && password.equals("secret")) { HttpSession session = request.getSession(true); session.setAttribute("loggedIn", Boolean.TRUE); response.sendRedirect("download"); // must call return or else the code after this if // block, if any, will be executed return; } else { RequestDispatcher dispatcher = request.getRequestDispatcher("/login.jsp"); dispatcher.forward(request, response); } }}
<html><head><title>Login</title></head><body><form action="login" method="post"> <table> <tr> <td>User Name:</td> <td><input name="userName"/></td> </tr> <tr> <td>Password:</td> <td><input type="password" name="password"/></td> </tr> <tr> <td colspan="2"> <input type="submit" value="Login"/> </td> </tr> </table></form></body></html>
0 0
- Servlet文件下载的常用实例1
- Servlet 文件下载实例
- 一个使用Servlet文件实现文件下载的实例
- 浏览器从服务器下载文件的Servlet实例
- Servlet------文件的下载
- Servlet文件的下载
- java web servlet 文件下载实例代码
- Servlet实现文件下载详解与实例
- 一个文件下载的Servlet
- 用于文件下载的Servlet
- 【初学者】servlet文件的下载
- Servlet实现文件的下载
- 基于servlet的文件下载
- Servlet实现文件的下载
- 基于servlet的文件下载
- 基于servlet的文件下载
- 一个文件下载的Servlet
- 基于servlet的文件下载
- 华为OJ 初级:输入n个整数,输出其中最小的k个
- 图灵机器人的引入
- iOS文件断点下载
- java 常用关键词详细解析,让你入门java
- 1.linux基本操作
- Servlet文件下载的常用实例1
- HDU-4548-美素数【打表】
- ios 感觉CollectionView少了个属性,求啪啪啪打脸
- OC调用JS(stringByEvaluatingJavaScriptFromString)
- C语言的疑难杂症 坑爹的scanf,无私的getchar
- mysql binlog 相关命令
- 数组
- Spark 优化总结(一)
- Yii 框架邮件的发送