老师我已经修改了host,但是被拒绝接入了
老师 这里的波浪线有影响吗
老师,我想追问一下下图的问题,如果还要自己在tomcat的项目文件夹中自己添加image/picture.jpg, 那为什么要在项目文件夹中创建image文件夹?我没在项目中创建image文件夹和图片,还是可以通过/download.do下载文件,如图二。
代码:
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(); } }
老师,是不是当我创建一个session时,系统默认帮我创建了一个key和value,并且返回一个session id,这个key和value我保存在服务器端,cookie接收到这个session id当做他的value值,浏览器默认给session id起一个名字保存在浏览器中。
老师我的路径是通过getpath得到的路径系统怎么会找不到路径呢
老师这个报错是什么意思啊为什么视频里也是这样写不报错
ServletContextWebInfo HttpServlet { (HttpServletRequest reqHttpServletResponse resp) ServletExceptionIOException { ServletContext servletContext = .getServletContext()Enumeration<String> initParameterNames = servletContext.getInitParameterNames()PrintWriter printWriter = resp.getWriter()printWriter.println()printWriter.println()printWriter.println()printWriter.println()(initParameterNames.hasMoreElements()){ String parameterKey = servletContext.getInitParameter(initParameterNames.nextElement())String parameterValue = servletContext.getInitParameter(parameterKey)printWriter.println(+ parameterKey + + parameterValue)} printWriter.println()printWriter.println()printWriter.flush()printWriter.close()} }
key1value2key2value2servletContextWebInfoA_Servlet.A_Get.ServletContextWebInfoservletContextWebInfo/web
返回结果:key:value2Value:null key:value2Value:null。不知道哪里错了
老师,如果我想把图片放在项目中,使用相对路径,不用本地的路径该怎么做?
老师,我是不是可以理解为图片是GBK编码的,所以通过GBK编码先把图片解析成字节流文件,然后在通过ISO编码重新编译成字符型文件,然后交给浏览器进行解析。这样理解可以吗?
还有一个问题就是,因为ContentType可以设置服务端也可以设置客户端,那我在编写程序的时候都加上,设置为utf-8这个不就永远不会出现乱码的情况了,为什么还要这么麻烦针对不同的编码去来回转换呢?
resp.setContentType("Test/html;charset=utf-8");
加上这句话,打开页面就弹出页面另存为什么原因
为什么我的按老师的方法行不通
用了GBK反而可以。
是不是我的idea什么地方设置有问题,求教
我理解是有三个context:
第一个访问是http://wait:8080/forget/index.html
第二个访问不是应该是http://localhost:8080/getKey/User.html
第三个只有一个path他的docBase是什么?
正确的访问路径是http://localhost:8080/demo1/User.html
/demo1/User.html这两个没有什么关联
这三个东西搞不明白,应该怎么去理解和区分
老师,“hello表示访问servletdemo下的hello作为我们访问资源的servlet下的标识
”这句话怎么理解?hello是随便写的吗?
http://localhost:8080/demo1/User.html
这个地址
表示context的path,getKey也是在web设置的一个context。
为什么在访问的时候不是getKey而是demo1?
http://localhost:8080/demo1/getKey
返回响应的时候地址又变成getKey,不太明白这些地址都是怎么变的?
老师我的运行不出来
package FistServet01; //下载本地文件 import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.OutputStream; public class DownloadFileServlet07 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(); //路径转换 ServletContext第一个作用相对路径转化为绝对路径 String realPath = servletContext.getRealPath("image/cat.jpg"); System.out.println(realPath); //获取文件 File file = new File(realPath); FileInputStream fis = new FileInputStream(file); byte[] buff = new byte[fis.available()]; fis.read(buff); //在响应中添加信息 resp.addHeader("Content-Disposition","attachment;file+"+new String(file.getName().getBytes("gbk"),"iso-8859-1")); //实现文件下载要修改响应头添加附加信息 OutputStream os = resp.getOutputStream(); os.write(buff); os.flush(); os.close(); } }
非常抱歉给您带来不好的体验!为了更深入的了解您的学习情况以及遇到的问题,您可以直接拨打投诉热线:
我们将在第一时间处理好您的问题!
关于
课程分类
百战程序员微信公众号
百战程序员微信小程序
©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园网站维护:百战汇智(北京)科技有限公司 京公网安备 11011402011233号 京ICP备18060230号-3 营业执照 经营许可证:京B2-20212637