Head First Servlets and JSP(一)

第一章 前言

http协议

GET和POST

GET POST
参数数据 只能放在请求行中 放在体(body)中
建立书签 可以(表单参数可以进入url,书签将包含第二次重建页面所需信息) 不可以(由于书签只包含url,所有表单参数将丢失)
幂等 是(不会对服务器造成改变) 不是(可能对服务器造成
默认 不是

TCP端口
端口是16位数据,标识服务器硬件上特定的软件程序;
从0~1023的端口号已经被保留,定制的服务器程序不要使用这些端口;
URL(统一资源定位符)
url
以及可选查询串:如果这是一个GET请求额外的参数会追加到URL最后以"?“开头,各个参数(名/值对)以”&"分隔;

JSP
JSP页面就像是一个HTML页面,可以把java和java有关的东西插入到该页面中;

第二章 高层概述:Web应用体系

Tomcat
Servlet没有main()方法,它们受控于另一个java应用——容器;
容器提供:
通信支持——让servlet与服务器对话,无须自己创建ServerSocket,监听端口,创建流等;
生命周期管理——控制servlet加载类,初始化,垃圾回收等资源管理;
多线程——自动为servlet请求创建一个新的Java线程;
声明方式实现安全——使用XML配置安全性而不必硬编码到servlet类中;
JSP支持——将JSP代码翻译成Java;

servlet可以有多个名字——通过XML部署;
servlet名字

部署描述文件DD
将Servlet部署到Web容器时,会创建一个简单的XML文档,称为部署描述文件(DD)
![用于URL映射的两个部署描述文件](https://img-blog.csdnimg.cn/20210617160401100.png
模型-视图-控制器(MVC(model-view-controller)
MVC把业务逻辑从Servlet中抽出来,放在一个可重用的java类(模型)中,模型是业务数据和处理该类数据的方法的组合;
MVC例子

J2EE
Tomcat只是一个Web容器,而不是完整的J2EE应用服务器(因为没有EJB容器);
J2EE应用服务器

第三章 MVC实战

MVC实战

BUGreport(1):
在编写第二版servlet时,通过javac编译BeerSelect.java出错,未找到对应目录下的文件;
Solution:
直接编译,手动部署目录;
BUGreport(2)
在重启tomcat之后,访问http://localhost:8080/Beer-v1/form.html网页下submit之后资源响应报错;
Solution
反复排查之后发现使用javac调用servlet-api.jar的路径应该是tomcat/lib路径下的包,而不是JDK/lib路径下的包,更改之后,响应结果正确;
响应结果
(调用模型实例过程略)

第四章 作为Servlet:请求和响应

Servlet受容器的控制
Servlet基本作用
与http有关的都在javax.servlet.http包中,其余的通用类接口都在javax.servlet包中;
容器运行多个线程来处理对一个servlet的多个请求;
init()在第一个service调用之前完成;
ServletConfig:用于向servlet传递部署时信息;用于访问ServletContext;参数在部署描述文件中描述;
ServletContext:用于访问web应用参数,相当于公告栏,应用的其他部分可以访问这些消息;

常见ServletRequest和HttpServletRequest的API:

// 客户的平台和浏览器信息
String client=request.GetHeader("User-Agent");
//与请求相关的cookie
Cookie cookies[]=request.getCookies();
//与客户相关的会话
HttpSession session=request.getSession();
//请求的HTTP方法
String themethod=request.getMethod();
//请求的输入流——只包含请求体而不包含首部,有时请求体包含处理的文本和二进制内容
InputStream input=request.getInputStream();

大多数情况,使用响应只是为了向客户发回数据,会对响应调用两个方法:
setContentType()getWriter() 此后只需要I/O将HTML写至流;
内容类型是HTTP响应中必须有的一个HTTP响应首部,常指MIME(Multipurpose Internet Mail Extensions)类型,如pdf, jpg等等;
ServletOutputStream 用于输出字节,PrintWriter 用于输出字符数据;

//样例
PrintWriter writer=response.getWriter();
writer.println("some text and html");
ServletOutputStream out=response.getOutputStream();
out.wirte(aByteArray);

PrintWriter有ServletOutputStream的引用,会把调用委托给ServletOutputStream;
setHeader()会覆盖现有的值;addHeader()会增加另一个值;
Servlet重定向让浏览器完成工作;

if(worksforme)
{
   //handle the request
}
else{
   
response.sendRedirect("new http location");
}

sendRedirect() 使用相对URLs的两种用法(取的是一个String,而不是一个url对象)——斜线开头与非斜线开头;

第五章 作为Web应用:属性和监听者

servlet初始化参数
在每个特定的servlet的<servlet>元素中,只对配置了<init-param>的相应servlet可用;
在DD文件中(web.xml)中:

<init-param>
	<param-name>adminEmail
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值