【Head First Servlets and JSP】笔记5

【HttpServletResponse resp】

1、一般可以用通过resp获得一个输出流(writer),然后通过输出流将HTML写入响应。例如:

      resp.setContentType("text/html");
        PrintWriter out = resp.getWriter();
        out.println("Beer Selection Advice<br>");

2、常用的一些方法。

3、有时还会用到.....

4、当然,更通常的是用JSP返回HTML。

5、假设你想向客户端发送一个JAR...

// 一堆的import
public class CodeReturn extends HttpServlet {
    public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException {
        resp.setContextType("application/jar"); // 想让浏览器知道的事情

        ServletContext ctx = getServetContext();
        InputStream is = ctx.getResourceAsStream("/bookCode.jar");

        int read = 0;
        byte[] bytes = new byte[1024];

        OutputStream os = resp.getOutputStream();
        while ((read = is.read(bytes)) != -1) {
            os.write(bytes, 0, read);
        } // 把JAR包先读到内存里再转写到输出流中。
        os.flush();
        os.close();
    }
}

ps:不能先写某个类型,然后改到另外一个类型继续写。

6、为什么要通过servlet返回文件,而不是直接返回?原因是,希望在返回特定类型文件的前后执行一些逻辑,例如判断用户是否有权限下载这个文件。

7、需要记住的一些东西,关于输出,只有两个选择:字符或者字节。

可以通过resp返回的输出流...

        resp.getOutputStream().write( /*省略参数*/ ); // 可以写任何内容
        resp.getWriter().println(); // 和System.out.println()类似,用于处理字符数据。实际上是包装了OutputStream的高级流PrintWriter
时间: 2024-10-13 23:23:59

【Head First Servlets and JSP】笔记5的相关文章

【Head First Servlets and JSP】笔记23:Expression Language(EL) 完全攻略

基本上是<Head First Servlets and JSP>内容的整理.扩充.顺便推荐一个供参考的JSP教程:JSP Tutorial内容很全面,还有一些有趣的实例. 完整代码参考 EL隐式对象汇总 pageContext使用参考 EL表达式的基本规则 关于EL的一些细节 通过EL获得request参数 从request得到更多信息 获得Request Method? xxxxScope有意义吗? 通过EL调用函数 EL与数学运算 1.EL隐式对象汇总.如下所示: 更详细的内容可以参考 

【Head First Servlets and JSP】实践记录01:从有脚本到无脚本

试图章节式的阅读<Head First Servlets and JSP>总感觉不对劲,这本书前后的联系性很强,有点类似于“连续剧”,而不是通常的“知识清单”. 可以建立多态的bean引用吗 使用type,但没有class scope属性默认为“page” 从有脚本到无脚本 1.快速搭建一个测试环境:输入用户名,返回“Hello, 用户名” index.html <!DOCTYPE html> <html lang="en"> <head>

【Head First Servlets and JSP】笔记16:JSP隐式对象(内置对象)

接笔记15. 1.不管是JSP中的<%%>还是<%\=%>最终都将处于servlet的方法体中,那么有没有一种元素可以声明成类的成员呢? ——答案是有,而且非常非常简单,这个元素就是<%!%>,我们用它来解决笔记15中的问题,只需要在原基础上加一个感叹号就可以了. <%@ page import="Sample.Counter" %> <%@ page contentType="text/html;charset=UTF-

【Head First Servlets and JSP】笔记 26: web 应用部署

[须知] 物理目录结构与虚拟目录结构的差异 WAR 实际上就是 JAR 什么东西应该放在 WEB-INF 文件夹下? [了解] <mime-mapping> 相关 <env-entry> 相关 [传统 web.xml 参考] <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"

【Head First Servlets and JSP】笔记21:EL以及&lt;jsp:useBean ....&gt;的补充

1.EL的英文是Expression Language,译成中文就是“表达式语言”.这是一种给前端程序员使用的脚本语言,EL与Java表达式相比并没有什么“天壤之别”,在后端程序员看来多少有点“多此一举”. 2.然而,我们不能强求每一个前端程序员都去学习JAVA,EL相对于JAVA来说学习成本更低,更容易理解. 3.在以前写的代码上实践测试一下,首先把Scriptlet给禁了,(El也是可以禁的) <?xml version="1.0" encoding="UTF-8&

【Head First Servlets and JSP】笔记13:session &amp; cookie

session的接口 杀死会话 cookie的性质 cookie的接口 再总结——cookie.session的前世今生 简单的定制cookie示例 1.session的接口,配合一些代码来理解. 2.杀死会话——杀死的含义是使session无效化(在JVM中清除??). 立刻杀死,已知方式有两种, 在DD中设定“默认期限” 在代码中对具体session设定“期限” 3.cookie的特性 4.cookie的接口 从客户请求得到cookie——稍微现代点的方法是这样的: Cookie[] coo

Head First Servlets and JSP】笔记9:属性的作用域、线程安全

什么是属性? 属性和参数 属性的3个作用域 属性API 属性不好的一面 1.到底什么是属性(Attribute)? 属性就是一个对象,可以被设置(bound,也可以叫绑定)到另外三个servlet API对象ServletContext.HttpSession.HttpServletRequest中.可以把它简单地认为是一个名/值对,名是String.值是object.在实际中,我们并不知道也不关心它具体如何实现,我们关心的只是属性所在的作用域. 2.属性不是参数(Parameter)! 笔记1

【Head First Servlets and JSP】笔记7:如何创建一个全局的dog?

重定向与请求分派 “局部”参数——ServletConfig——servlet初始化参数 “全局”参数——ServletContext——上下文初始化参数 Web app的“构造器”——ServletContextListener 实战:如何创建一个全局的dog? 1.重定向与请求分派. resp.sendRedirect("http://www.cnblogs.com/xkxf/"); RequestDispatcher view = req.getRequestDispatcher

【Head First Servlets and JSP】笔记19:JavaBeans与JSP动作元素(&lt;jsp:setProperty.....&gt;、&lt;jsp:getProperty.....&gt;)

内容来自imooc. 1.什么是JSP动作元素 2.在JSP页面中如何使用Javabeans <jsp:......>表示这是一个JSP动作元素 3.使用JSP动作元素创建JavaBean的实例 <%@ page import="com.po.User" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html&g