servlet_2

news/2024/7/3 16:33:45

 

==========================================
后台处理逻辑
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处理请求报文处理请求报文起始行的方法处理请求报文首部字段的方法getHeaderNamesgetHeadergetHeadersgetContentLengthgetContentTypegetCookies    会话跟踪有用servlet处理响应使用输出流构建响应设置响应状态码设置响应首部字段前台重定向使用输出流构建响应PrintWriter out=response.getWriter();out.print()或out.write();out.flush();out.close();这种写法非常不利于程序的维护及页面的编写setStatussendErrorsetHeadersetIntHeadersetDateHeadersetContentTypeaddCookie前台重定向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);}}

 

转载于:https://www.cnblogs.com/createyuan/p/9085013.html


http://lihuaxi.xjx100.cn/news/272862.html

相关文章

黑科技抗疫,Python开发者大集结!

2020年初&#xff0c;突如其来的新型冠状病毒肺炎打乱了所有人的节奏&#xff0c;但社会各界迅速团结起来&#xff0c;为抗击疫情贡献出自己的力量。除了捐款捐物外&#xff0c;很多科技公司运用5G、大数据、AI、云计算等新互联网技术&#xff0c;以科技的手段助力抗疫&#xf…

目标检测 | 清晰易懂的SSD算法原理综述

点击上方“小白学视觉”&#xff0c;选择加"星标"或“置顶”重磅干货&#xff0c;第一时间送达SSD&#xff08;Single Shot Detection&#xff09;是一个流行且强大的目标检测网络&#xff0c;网络结构包含了基础网络&#xff08;Base Network&#xff09;&#xff0…

如何入门Python之Python基础教程详解

随着人工智能的发展&#xff0c;Python近两年也是大火&#xff0c;越来越多的人加入到Python学习大军&#xff0c;对于毫无基础的人该如何入门Python呢&#xff1f;这里整理了一些个人经验和Python入门教程供大家参考。 如果你是零基础入门 Python 的话&#xff0c;建议初学者…

【转帖】SQLServer登录连接失败(error:40-无法打开到SQLServer的连接)的解决方案...

在与SQLServer建立连接时出现与网络相关的或特定与实例的错误.未找到或无法访问服务器.请验证实例名称是否正确并且SQL SERVER已配置允许远程链接.(provide:命名管道提供程序,error:40 -无法打开到SQL Server的连接)(Microsoft SQL Server,错误:2) 我刚刚在登录连接SQL Server …

人脸识别“抓”错了人,他在监狱呆了10天

文末送5本价值百元技术书籍杨净 边策 发自 凹非寺 量子位 报道 | 公众号 QbitAI就很离谱。我&#xff0c;什么都没做&#xff0c;就莫名其妙被警察关了10天&#xff1f;&#xff01;这是发生在美国新泽西州的一段真实故事。一个酒店偷窃案件&#xff0c;嫌疑人驾车逃逸。警察没…

AI口罩“督查官”诞生记

作者 | 马超出品 | AI科技大本营&#xff08;ID&#xff1a;rgznai100&#xff09;在英国脱欧后&#xff0c;谷歌计划让英国用户的账号脱离欧盟的隐私监管政策&#xff0c;改用美国司法标准。尽管这样的修改让数千万英国用户的个人信息置于较少保护之下&#xff0c;但这些信息更…

你有哪些深度学习(rnn、cnn)调参的经验?

点击上方“小白学视觉”&#xff0c;选择加"星标"或“置顶”重磅干货&#xff0c;第一时间送达你有哪些deep learning&#xff08;rnn、cnn&#xff09;调参的经验&#xff1f;作者&#xff1a;hzwer链接&#xff1a;https://www.zhihu.com/question/41631631/answer…

这些Python基础练习题你会几个?

在人工智能大火的当今&#xff0c;Python 作为人工智能时代的首选语言已经越来越收到追捧&#xff1b;但是许多非科班、零基础的小伙伴常常苦于没有合适的入门 Python 的教程而感到苦恼&#xff1b;本人是一名资深Python开发&#xff0c;参与过一些 Python 项目&#xff0c;想和…