《Head First Servlets & JSP》-1-前言

《Head First Servlets & JSP》(中文版) BB,KS & BB著, 苏钰函,林剑译,中国电力出版社

数据交互

Web浏览器和Web服务器:通过Http协议交互HTML数据。

到底什么是MIME类型

对一个Http响应:

Content-Type(内容类型)响应首部的值称为MIME类型。

MIME类型告诉浏览器要接收的数据是什么类型,这样浏览器才能知道如何显示这些数据。

MIME类型值与HTTP请求“Accept”首部中所列的值相关。如下图一个请求和一个响应首部信息:

Web服务器自己不做的两件事

  • 动态内容

    Web服务器应用只提供静态页面,需要“辅助程序”提供动态页面内容。Servlet就是这样的一个“辅助应用”。

  • 保存数据

    用户发送来数据,需要保存到一个文件或数据库中,为此需要一个应用,Web服务器只负责找到那个应用并把数据传给它。

JSP的作用

第一个Servlet程序中,HTML标签写在JAVA代码中了,并且是作为String直接量写入的,引号和其他的语法会是一种灾难。

那么,如果反过来,在HTML中写Java代码呢?——JSP,会相对好一些。更好的是,在新的JSP规范中,页面设计人员应该尽可能少地在JSP中放入Java代码甚至根本不放,而是放一些调用具体Java方法的标记——JSP语法。

附件

  • 要点

  • 第一个Servlet程序Ch1Servlet.java
  1. publicclassCh1ServletextendsHttpServlet{
  2. publicvoid doGet(HttpServletRequest request,
  3. HttpServletResponse response)throwsIOException{
  4. PrintWriterout=response.getWriter();
  5. java.util.Date today =new java.util.Date();
  6. out.println("<html>"+
  7. "<body>"+
  8. "<h1 align=center>Chapter1 Servlet</h1>"+
  9. "<br/>"+today+"</body>"+"</html>");
  10. }
  11. }
时间: 2025-02-01 19:42:41

《Head First Servlets & JSP》-1-前言的相关文章

《Head First Servlets & JSP》-13-过滤器和包装器

过滤器是什么 与servlet非常类似,过滤器就是java组件,请求发送到servlet之前,可以用过滤器截获和处理清求,另外 servlet结束工作之后,在响应发回给客户之前,可以用过滤器处理响应. 容器根据DD中的声明来确定何时调用过滤器.在DD中,部署人员要建映射.明确对于哪个请求URL模式要调用哪些过滤器.所以,要由部署人员(而不是程序员)来确定哪些请求或响应应当由哪些过滤器处理. 过滤器要做的事情 只有一个过滤器接口:Filter,根据使用方式,可完成诸如以下工作: 请求过滤器可以完成

《Head First Servlets & JSP》-8-无脚本的JSP

以前servlet和JSP交互的代码 servlet代码示例: JSP代码示例: 若属性不是一个String而是一个Bean呢? 一个简单的JavaBean servlet代码示例: JSP代码示例: 或者这么写: JSP中不要出现脚本 使用标准动作的JSP 标准动作jsp:useBean详解 scope默认是page作用域,那么在上述示例代码中可能出现问题:找不到person对象! 标准动作jsp:getProperty详解 jsp:useBean还可以创建一个bean 以下标准动作标记: 会

《Head First Servlets & JSP》-5-属性和监听

Servlet初始化参数 在DD文件(web.xml)中 Servlet参数在 在Servlet代码中 在Servlet初始化之前不能使用Servlet初始化参数 一旦有了一个ServletConfig引用,就可以调用getInitParameter()方法,不过 不能从构造函数调用这个方法!因为容器只调用构造函数还未调用init()之前,它还不算一个完整的Servlet(薛定谔Servlet). Servlet初始化参数只能赌一次--就是在容器初始化Servlet的时候 容器建立一个Servl

《Head First Servlets & JSP》-2-概述

什么是容器 Servlet没有main()方法,他们受控于另一个Java应用,这个java应用称为容器(Container). Web服务器应用(如Apache)得到一个指向Servlet的请求(如何判断是一个Servlet请求而不是一个静态HTML页面请求?)时,服务器不是把这个请求交给Servlet本身,而是交给部署该Servlet的容器.由容器向Servlet提供HTTP请求和响应,而且要由容器调用Servlet的方法(如doPost()或deGet()). 注意,我们目前使用Tomcat

《Head First Servlets & JSP》-11-Web应用部署

Web目录 WAR文件 WAR文件只是Web应用结构的一个快照,采用了一种更可移植的压缩形式. 建立WAR文件时,就是把整个Web应用结构(去掉Web应用上下文目录,就是把WEB-INF之上的一级目录去掉)压缩起来,给定一个.war扩展名. 容器如何知道Web应用的名字/上下文呢?Tomcat中,WAR文件名就是了! 在一个WAR文件中,可以在META-INF/MANIFEST.MF文件中声明库依赖性(和直接放在WEB-INF/lib下有何区别?后文见分晓). 部署后的WAR文件的样子 使静态内

《Head First Servlets & JSP》-3-1st servlet MVC demo

项目结构 用户首页 form.html <html> <body> <h1 align='center'>Beer Selection Page</h1> <form method="post" action="SelectBeer.do"> Select <p> Color: <select name="color" size="1"> &l

《Head First Servlets & JSP》-6-会话管理

容器怎么知道客户是谁 Http协议是无状态连接,客户浏览器与服务器建立连接.发出请求.得到响应,然后关闭连接.即,连接只针对一个请求/响应. 对容器而言,每个请求都来自于一个新的客户. 客户需要一个唯一的会话ID IP不能唯一标示Internet上特定的用户 比如公司网络内的用户为一个IP:而IP地址也只是路由的地址:用户换了一台设备的情况: 客户和容器如何交互会话ID信息 容器必须以某种方式吧会话ID作为响应的一部分交给客户,而客户必须把会话ID作为请求的一部分发回: 最简单而且最常用的方式是

《Head First Servlets & JSP》-10-定制标记开发

标记文件:很想include,但是比include更好 建立和使用标记文件的最简方法 取一个被包含文件(如Header.jsp),把它重命名为带有一个.tag扩展名(Header.tag): 把标记文件(Header.tag)放在WEB-INF目录下一个名为tags的目录中: 在JSP中放一个taglib指令(有一个tagdir属性),并调用这个标记: 如何向标记文件发送参数? 对于标记文件,发送的不是请求参数,而是标记属性! 在JSP中调用标记: 在标记文件中使用属性: 如何定义标记文件中所需

《Head First Servlets & JSP》-6-会话管理-listener etc. demo

工程结构 上下文参数示例 示例程序展示了如何从上下文读取参数,并在上下文监听器中生成属性对象和在上下文中设置属性. 建立一个简单的JavaBean对象作为属性:Dog.java package com.example.entities; /** * Created by LTN on 2016/11/2. */ public class Dog { private String breed; public Dog(String breed) { this.breed = breed; } pub

《Head First Servlets & JSP》-4-请求和响应

Servlet生命周期 生命周期三大重要时刻 Servlet集成结构: 方法 init() service() doGet()/goPost() 何时调用 Servlet实例被创建之后.为客户请求提供服务之前 当第一个客户请求到来时 service()根据HTTP方法来选择调用 作用 初始化 查看客户请求并调用相应的方法 这里是我们的功能代码 是否覆盖 若有自己的初始化要求(如获得数据库连接.想其他对象注册),则需要覆盖:否则运行GenericServlet的init() 一般不覆盖 至少覆盖其