zoukankan      html  css  js  c++  java
  • servlet_2

    ==========================================
    后台处理逻辑
    package com.fgy;

    import java.io.IOException;
    import java.util.Enumeration;

    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    @WebServlet("/header")
    public class RequestHeaderServlet extends HttpServlet {
        private static final long serialVersionUID = 1L;

        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    //        response.setStatus(500);
    //        response.sendError(404, "not found");
    //        response.getWriter().append("Served at: ").append(request.getContextPath());
            response.sendRedirect("result.html");
    //        System.out.println(request.getMethod());
    //        System.out.println(request.getRequestURL());
    //        System.out.println(request.getRequestURI());
    //        System.out.println(request.getQueryString());
    //        System.out.println(request.getProtocol());
    //        System.out.println("============================");
    //        Enumeration<String> headerName=request.getHeaderNames();
    //        while (headerName.hasMoreElements()) {
    //            String s = headerName.nextElement();
    //            System.out.println(s+":"+request.getHeader(s));
    //        }
        }

        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            doGet(request, response);
        }
    }



    ===================================== 访问地址 http://localhost:8080/project1/header?a ===================================== 控制台输出 GET http://localhost:8080/project1/header /project1/header a HTTP/1.1
    servlet处理请求报文
    
        处理请求报文起始行的方法
        处理请求报文首部字段的方法
        
        getHeaderNames
        getHeader
        getHeaders
        getContentLength
        getContentType
        getCookies    会话跟踪有用
        
    servlet处理响应
    
        使用输出流构建响应
        设置响应状态码
        设置响应首部字段
        前台重定向
        
        使用输出流构建响应
        PrintWriter out=response.getWriter();
        out.print()或out.write();
        out.flush();
        out.close();
        这种写法非常不利于程序的维护及页面的编写
        
        setStatus
        sendError
        
        setHeader
        setIntHeader
        setDateHeader
        setContentType
        addCookie
        
        前台重定向
        1将需要发送给客户端的URL作为HttpServletResponse中sendRedirect方法的参数
        2服务器端会返回一个状态码(3XX)及location字段以便告诉浏览器进行重定向
        前台重定向需要两次请求,还有一个后台转发的概念
        后台转发
    servlet处理文件下载
    
    	通过编程实现文件下载的必要性
    	演示通过编程实现文件下载
    	
    	响应
    		纯文本的响应,直接在页面上展示 ,字符流
    		二进制的响应,其实就是下载		,字节流
    		
    	要将项目之外或保存在数据库中的资源发到客户端
    	对资源进行控制是否可以下载
    	
    	文件下载实现步骤
    		1设置content-type为文件的内容类型的响应首部字段,即设置mime类型
    		2添加一个content-disposition的响应首部字段,赋值为attachment;filename=filename
    			如果文件名带有中文,需要进行编码
    		3使用输出流对文件进行输出
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    <form action="Upload2" method="post" enctype="multipart/form-data">
    <input type="file" name="file1"><br>
    <input type="file" name="file2"><br>
    <input type="text" name="name"><br>
    <input type="submit" value="上传">
    </form>
    
    
    </body>
    </html>
    
    
    =================================
    package com.fgy;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.ServletOutputStream;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    @WebServlet("/download")
    public class Servlet4 extends HttpServlet {
        private static final long serialVersionUID = 1L;
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            
    //        response.setContentType("text/html; charset = gb2312"); 
    //        String fileName = request.getParameter("filename"); 
    //        System.out.println(fileName); 
            response.setHeader("content-type", "application/octet-stream");
            response.addHeader("Content-Disposition","attachment;filename=FoxitReader_CHS_8.1.5.1208.exe");
    //        String path = this.getServletContext().getRealPath("/upload/"+fileName);
            FileInputStream is=new FileInputStream("d://FoxitReader_CHS_8.1.5.1208.exe");
    //        FileInputStream is=new FileInputStream(new File(path));
            byte[] data=new byte[2048];
            int len=0;
            ServletOutputStream os=response.getOutputStream();
            while ((len=is.read(data, 0, data.length))!=-1) {
                os.write(data,0,len);
            }
            os.close();
            is.close();
        }
    
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            doGet(request, response);
        }
    
    }
  • 相关阅读:
    java 静态和非静态代码块执行顺序
    spring boot 学习
    js中的jQuery Validate增加手机号码验证
    JAVA验证手机号码是否正确
    redis启动报错 var/run/redis_6379.pid exists, process is already running or crashed
    移动端点击a标签拨打电话
    js计算两个日期之间的天数
    JS根据日期获取判断星期几
    JAVA生成订单编号工具类
    JAVA微信支付——微信公众号内支付 代码
  • 原文地址:https://www.cnblogs.com/createyuan/p/9085013.html
Copyright © 2011-2022 走看看