Servlet

1.HttpServlet

1.接收方式

2.中文乱码问题

1).post请求会乱码,通过request.setCharacterEncoding("UTF-8") 

2).new String(request.getParameter("name").getBytes("IOS-8859-1"),"UTF-8")针对任何请求方式,若数据本身不乱码,仍使用该方法则会乱码

3).tomcat 8以上版本不会乱码。7一下会乱码

3.请求转发

一次请求,数据在request域中共享,服务端行为,地址栏不发生变化。请求转发时的地址只能是当前站点下(当前项目)的资源,重定向可以是任何地址

 4.重定向

response.sendRedirect(url)

服务端指导,客户端行为,存在两次请求,地址栏会发生变化,request对象不共享

 2.Cookie

1.设置cookie

//创建cookie
Cookie cookie=new Cookie("name","lisa");
//设置最大生存周期
cookie.setMaxAge(60*60*24); 
//发送cookie对象
response.addCookie(cookie)

2.获取cookie

 3.cookie到期时间:cookie.setMaxAge( num)

1)负整数(默认-1,表示只在浏览器内存中存活,关闭浏览器就失效)

2)正整数(表示存活指定秒数,会将数据存在内存中)

3)0(表示删除cookie)

4.注意事项

 

 4.Cookie的路径

 3.session

 4.ServletContext

 

5.Servlet文件上传

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>文件上传</title>
</head>
<body>
<form method="post" enctype="multipart/form-data" action="uploadServlet">
    姓名:<input type="text" name="uname"><br>
    文件:<input type="file" name="myfile"><br>
    <button>提交</button>
</form>
</body>
</html>
@WebServlet("/uploadServlet")
@MultipartConfig
public class UploadServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException {
        //设置请求的编码格式
        request.setCharacterEncoding("UTF-8");
        String uname=request.getParameter("uname");
        System.out.print("uname:"+uname);
        //获取part对象(servlet将multipart/form-data的post请求封装成part对象)
        Part part=request.getPart("myfile");
        //通过part对象获得上传的文件名
        String fileName=part.getSubmittedFileName();
        System.out.print("上传文件名:"+fileName);
        String filepath=request.getServletContext().getRealPath("/");
        System.out.print("文件存放路径:"+filepath);
        part.write(filepath+"/"+fileName);
    }
}

 

 6.servlet文件下载

<body>
<a href="download/ab.txt">文本文件</a>
<a href="download/pg.jpg">图片文件</a>
<a href="download/ab.zip">压缩文件</a>
<hr>
<a href="download/ab.txt" download>文本文件</a>
<a href="download/pg.jpg" download="截图.png">图片文件</a>
<hr>
<form action="downloadServlet">
    文件名:<input type="text" name="fileName" placeholder="请输入要下载的文件名">
    <button>下载</button>
</form>
</body>
@WebServlet("/downloadServlet")
public class downloadServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException {
     request.setCharacterEncoding("UTF-8");
     response.setContentType("text/html;charset=UTF-8");
     String fileName=request.getParameter("fileName");
     if(fileName==null||"".equals(fileName.trim())){
         response.getWriter().write("请输入要下载的文件名:");
         response.getWriter().close();
         return;
     }
     String path=request.getServletContext().getRealPath("/download/");
     File file=new File(path+fileName);
     if(file.exists()&&file.isFile()){
         //设置响应类型(浏览器无法使用某种方式或激活某个程序来处理的类型)
         response.setContentType("application/x-msdownload");
         //设置头信息
         response.setHeader("content-Disposition","attachment;filename="+fileName);
         //得到file输入流
         InputStream in=new FileInputStream(file);
         //得到字节输出流
         ServletOutputStream out=response.getOutputStream();
         //定义byte数组
         byte[]bytes=new byte[1024];
         //定义长度
         int len=0;
         //循环输出
         while ((len=in.read(bytes))!=-1){
             //输出
             out.write(bytes,0,len);
         }
         //关闭资源
         out.close();
         in.close();
     }else{
         response.getWriter().write("文件不存在,请重试!");
         response.getWriter().close();
     }
    }
}

  

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值