会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 133308个问题
JAVA 全系列/第六阶段:JavaWeb开发/计算机网络协议详解 1201楼
JAVA 全系列/第六阶段:JavaWeb开发/Servlet技术详解(旧) 1204楼

微信截图_20210717211000.png

这是什么情况,版本什么的都是跟着老师下载的

JAVA 全系列/第六阶段:JavaWeb开发/Web实战案例 1206楼

老师,我想追问一下下图的问题,如果还要自己在tomcat的项目文件夹中自己添加image/picture.jpg, 那为什么要在项目文件夹中创建image文件夹?我没在项目中创建image文件夹和图片,还是可以通过/download.do下载文件,如图二。


image.png

image.png

代码:

package com.bjsxt.servlet;

import jakarta.servlet.ServletContext;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.nio.charset.StandardCharsets;

public class DownloadFileServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 获取ServletContext对象
        ServletContext servletContext = this.getServletContext();
        // 路径转换
        String realPath = servletContext.getRealPath("image/rickandmortybg.jpg");
        System.out.println(realPath);
        // 读文件
        File file = new File(realPath);
        System.out.println(file.getName());
        FileInputStream fis = new FileInputStream(file);
        byte[] buff = new byte[fis.available()];
        fis.read(buff);

        // 在响应中添加附加信息
        resp.addHeader("Content-Disposition", "attachment;filename=" + new String(file.getName().getBytes("utf-8"), "iso-8859-1"));

        OutputStream os = resp.getOutputStream();
        os.write(buff);
        os.flush();
        os.close();
    }
}


JAVA 全系列/第六阶段:JavaWeb开发/Servlet技术详解(旧) 1208楼
JAVA 全系列/第六阶段:JavaWeb开发/Web实战案例 1212楼
JAVA 全系列/第六阶段:JavaWeb开发/Web实战案例 1213楼

这是我的前端代码

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
    <script>
        function but() {
            //创建XMLHttpRequest 对象
            var xhr = new XMLHttpRequest();
            //给定请求方式以及请求地址
            xhr.open("get","single.do");
            //发送请求
            xhr.send();
            //获取服务器端给客户端的响应数据
            xhr.onreadystatechange = function () {
                if(xhr.readyState == 4 && xhr.status == 200){
                    alert(xhr.responseText);
                    //通过javaScript的内置对象JSON中的parse函数将JSON格式的字符串对转换成javascript对象
                    var obj = JSON.parse(xhr.responseText);
                    alert(obj.userid+" "+obj.username);
                    document.getElementById("span").innerHTML=obj.userid+"<br/>"+obj.username;
                }
            }
        }
    </script>
</head>
<body>
<h3>ajax案例</h3>
<span id="span"></span>
<input type="button" value="ok" onclick="but()">
</body>
</html>

这是后台代码

import com.bjsxt.pojo.User;
import com.fasterxml.jackson.databind.ObjectMapper;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

@WebServlet("/single.do")
public class SingalObject extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //创建Users对象
        User users = new User();
        users.setUserid(1);
        users.setUsername("oldlu");
        //使用jackson的API将Users对象转换为JSON格式的字符串对象
        ObjectMapper objectMapper = new ObjectMapper();
        //将Users对象转换为JSON格式的字符串对象
        String string = objectMapper.writeValueAsString(users);
        System.out.println(string);
        //设置响应类型为application/json
        resp.setContentType("application/json");
        PrintWriter pw = resp.getWriter();
        pw.print(string);
        pw.flush();
        pw.close();
    }

代码检查了好多遍但是不弹框报错500


图片.png图片.png

JAVA 全系列/第六阶段:JavaWeb开发/Ajax技术详解(旧) 1214楼
JAVA 全系列/第六阶段:JavaWeb开发/Servlet技术详解 1215楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637