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>