Servlet Java 下载类

servlet java 代码:

import java.io.*;    
import javax.servlet.*;   
import javax.servlet.http.*;  
  
public class DownClass extends HttpServlet {  
//字符编码  
private final String ENCODING="GB2312"; 
//内容类型  
private final String CONTENT_TYPE="text/html;charset=gb2312";  
//要下载的文件存放的路径 

private String downloadfiledir="d:\\temp\\";  

//downloadfiledir=this.getServletContext().getRealPath("/"); //相对路径获取文件方法

public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{  
 //设置request对象的字符编码  
request.setCharacterEncoding(ENCODING);
HttpSession session = request.getSession();
//验证用户是否登录
String islogin=(String)session.getAttribute("loginuser"); 
//从request中取出要下载文件的名字   
String filename=request.getParameter("filename");
System.out.println("islogin:"+islogin);
if(islogin!=null){
//用户已登录  
if(filename==null||filename.trim().equals("")){   
//设置response对象的ContentType   
response.setContentType(CONTENT_TYPE);  
//输出错误信息   
PrintWriter out=response.getWriter(); 
out.println("<font color=red>input filename error!</font>");  
out.close();  
}else{ 
//下载文件的完整路径名  
String fullfilename=downloadfiledir+filename;  
System.out.println("下载文件:"+fullfilename); 
//根据文件的类型设置response对象的ContentType  
String contentType=getServletContext().getMimeType(fullfilename);  
if(contentType==null) 
contentType="application/octet-stream";   
response.setContentType(contentType);  
//设置response的头信息  
response.setHeader("Content-disposition","attachment;filename=\""+filename+"\""); 
InputStream is=null;  
OutputStream os=null;  
try{  
is=new BufferedInputStream(new FileInputStream(fullfilename)); 
//定义输出字节流   
ByteArrayOutputStream baos=new ByteArrayOutputStream();  
//定义response的输出流  
 
os=new BufferedOutputStream(response.getOutputStream());  
 
//定义buffer  
 
byte[] buffer=new byte[4*1024]; //4k Buffer  
 
int read=0;  
 
//从文件中读入数据并写到输出字节流中  
 
while((read=is.read(buffer))!=-1){  
 
baos.write(buffer,0,read);  
 
}
//将输出字节流写到response的输出流中  
os.write(baos.toByteArray()); 
}catch(IOException e){ 
e.printStackTrace(); 
}finally{ 
//关闭输出字节流和response输出流  
os.close();    
is.close();   
}//end of try     
}  
}else{
//用户未登录,输出错误信息  
response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
out.flush();
out.println("<script>");
out.println("alert('用户未登录');");
out.println("history.back();");
out.println("</script>");
//<%  uri="http://localhost:8080/examples/servlets/down.jsp" prefix="c"%> 
//request.setAttribute("message", " <script laguage='JavaScript'> alert('修改成功') </script>");
//PrintWriter out=response.getWriter(); 
//response.getWriter().wirte("function alerttest(){alert('please login!');}");
// out.close();  
 
}  

public void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{  
//调用doGet()方法    
doGet(request,response);  
}    
}  

注册类:

import java.io.IOException;
  import javax.servlet.ServletException;
  import javax.servlet.http.HttpServlet;
  import javax.servlet.http.HttpServletRequest;
  import javax.servlet.http.HttpServletResponse;
  import javax.servlet.http.HttpSession;
  import java.io.*; 
  
  public class register extends HttpServlet {
  
      public void doGet(HttpServletRequest request, HttpServletResponse response)
              throws ServletException, IOException {
  
          response.setCharacterEncoding("UTF=8");
          response.setContentType("text/html;charset=UTF-8");
          //使用request对象的getSession()获取session,如果session不存在则创建一个
          HttpSession session = request.getSession();
          String signout=request.getParameter("signout");
          //验证用户名和密码,访问数据库,匹配用户名和密码
          String username=request.getParameter("user");
          String password=request.getParameter("passwd");
          //此处省略访问数据库验证用户名和密码……
          if(signout.equals("yes")){
          //注销登录
          session.removeAttribute("loginuser");
          session.invalidate();
          response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
out.flush();
out.println("<script>");
out.println("alert('用户注销成功');");
out.println("history.back();");
out.println("</script>"); 
          }else{
          //用户登录
          if(username.equals("admin")&password.equals("admin")){
          //验证通过,将数据存储到session中
          session.setAttribute("loginuser",username);
          String sessionId = session.getId();
         
          response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
          //判断session是不是新创建的,无实际作用,用于辅助说明          
         if (session.isNew()) {         
out.flush();
out.println("<script>");
out.println("alert('session创建成功,session的id是:"+sessionId+"');");
out.println("history.back();");
out.println("</script>");  
             //response.getWriter().print("session创建成功,session的id是:"+sessionId);
         }else {
          out.flush();
out.println("<script>");
out.println("alert('服务器已经存在该session了,session的id是:"+sessionId+"');");
out.println("history.back();");
out.println("</script>");
             //response.getWriter().print("服务器已经存在该session了,session的id是:"+sessionId);
         }
         }else{
          //验证失败
          response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
out.flush();
out.println("<script>");
out.println("alert('用户名或密码错误!');");
out.println("history.back();");
out.println("</script>");          
         }
          }
         
      }
  
      public void doPost(HttpServletRequest request, HttpServletResponse response)
              throws ServletException, IOException {
          doGet(request, response);
      }
  }
  


范例html:

<html>
<body>


<form action="servlet/register?signout=no" method="POST">
  用户名:<input type="text" value="admin" name="user">
  密 码:<input type="text" value="admin" name="passwd">
         <input type="submit" value="登录">
</form>
<form action="servlet/register?signout=yes" method="POST">
        <input type="submit" value="注销">
</form>
<form action="servlet/DownClass" method="GET">
  下载文件名:<input type="text" value="hi.txt" name="filename">
         <input type="submit" value="提交(ps:我是一张图片)">
</form>
</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值