内容简介
涵盖SCWCD考试范围
?Servlet4.0新功能介绍
?加强Web安全基本观念
?衔接SpringMVC、SpringBoot
?提供Lab操作文档
作者简介
林信良(网名:良葛格),毕业于台湾大学电机工程学系。擅长技术写作、翻译与教育培训。喜好研究程序语言、框架、社群,从中学习设计、典范及文化,并利用闲暇之余记录所学技术,涵盖C/C++、Java、Ruby/Rails、Python、JavaScript、Haskell、OpenSCAD等领域。目前出版的著作有《JSP&Servlet学习笔记(第2版)》《Spring技术手册》《JavaJDK8学习笔记》《JavaJDK9学习笔记》,译作有《Ajax实战手册》《jQuery实战手册(第2版)》。
前言/序言
导读
这份导读可以让你更了解如何使用《JSP&Servlet学习笔记(第3版)——从Servlet到SpringBoot》。
字型
《JSP&Servlet学习笔记(第3版)——从Servlet到SpringBoot》内文中与程序代码相关的文字,都用固定宽度字体来加以呈现,以与一般名词作区别。例如,JSP是一般名词,而HttpServlet为程序代码相关文字,使用了固定宽度字体。
新旧版差异
《JSP&Servlet学习笔记(第3版)——从Servlet到SpringBoot》是从《JSP&Servlet学习笔记(第2版)》改版而来的,因此这里说明一下与《JSP&Servlet学习笔记(第2版)》之间的差异。
就目录上可以看出的主要差异是,删除了《JSP&Servlet学习笔记(第2版)》第12章“从模式到框架”,并由新撰写的3个Spring相关章节取代,这是为了从实际的框架中学习,而不是空谈概念;然而,Spring那些章节并不是作为全面探讨Spring之用,而是作为一个衔接,希望从实际的应用程序重构中筛选出对应用程序有益的框架特性,以便逐步掌握框架的本质。
当然,照例要谈一些JavaEE8的功能,相关讨论会放在各章节中适当的地方。由于《JSP&Servlet学习笔记(第2版)》是基于JavaEE6,为了便于查找JavaEE7/8的功能介绍,如果发现页左侧有如图示,就表示提及JavaEE7或JavaEE8功能,《JSP&Servlet学习笔记(第3版)——从Servlet到SpringBoot》还提供了JavaEE7/8功能快速查询目录。
各章节的范例都做了全面改写,由于JavaEE8是基于JavaSE8,范例程序代码会适当使用JavaSE8的特性,例如Lambda与StreamAPI等。
时至今日,撰写应用程序时必须有相关的安全防护概念,作为一本谈论Web应用程序的书,适时地提及安全概念是必要的,书中谈到了OWASPTOP10,讨论了Session防护、注入攻击、Cookie安全、密码加盐哈希、跨域伪造请求(Cross-SiteRequestForgery,CSRF)等安全基本观念,并在适当的地方介绍了OWASPJavaEncoder、JavaHTMLSanitizer等项目的使用。
程序范例
《JSP&Servlet学习笔记(第3版)——从Servlet到SpringBoot》大多数范例使用完整的程序实作来展现,如果是用以下方式示范程序代码:
FirstServletHello.java
packagecc.openhome;
importjava.io.IOException;
importjava.io.PrintWriter;
importjavax.servlet.ServletException;
importjavax.servlet.annotation.WebServlet;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
@WebServlet("/hello")
publicclassHelloextendsHttpServlet{
@Override
protectedvoiddoGet(
HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
response.setContentType("text/html;charset=UTF-8");
Stringname=request.getParameter("name");
PrintWriterout=response.getWriter();
out.print("");
out.print("");
out.print("");
out.print("Hello");
out.print("");
out.print("");
out.printf("Hello!%s!%n",name);
out.print("");
out.print("");
}
}
范例开始的左边名称为FirstServlet,表示可以在范例文件的samples文件夹中查找相应章节目录,即可找到对应的FirstServlet项目,而右边名称为Hello.java,表示可以在项目中找到Hello.java文件。如果程序代码中出现标号与提示文字,表示后续的内文中会有对应于标号及提示的更详细说明。
原则上,建议每个项目范例都亲自动手撰写,如果由于教学时间或实现时间上的限制,《JSP&Servlet学习笔记(第3版)——从Servlet到SpringBoot》有建议进行的练习。在范例开始前有图示的,表示建议动手实践,而且在范例文件的labs文件夹中有练习项目的基础内容,可以在导入项目后,完成项目中遗漏或必须补齐的程序代码或设置。
如果文中使用以下程序代码,则表示它是一个完整的程序内容,但不是项目的一部分,主要用来展现如何撰写一个完整的文件。
JSP范例文件