servlet & JSP
最近有阅读一本《HEAD FIRST servlet & JSP》
此文,权当读书记录。书越读的多,越发现自己知道的少。(书读的太少,所以读书感悟都没有。。)
Head First系列,主要讲究有方式的学习,所谓的方式呢,就是让你的大脑灵活起来,(即在学习的过程中,让你的大脑去进行更多的神经活动)
书本很厚,内容也很多,细节也很丰富,所以一一记录也不太现实,所以先记录一些关键字:
1. web访问流程
web服务器接收客户端请求,然后向客户返回一些结果。这些结果可以是:图片,二进制文件,html,文本等等。
2. HTTP
http请求 :
基本要素: http方法, url, 表单参数
报文格式:起始行,首部,主体。
例:
http响应 :
基本要素: 状态码, 内容类型(content-type),内容
报文格式:起始行,首部,主体。
例:
另外http请求首部中有两个非常重要的首部,一个是connection,accept。
响应首部重要的是:content-type。(请求中的accpet和响应中的content-type是有不少的关系的。)
3.servlet容器 (这里说的是tomcat)
作用: 通信支持。(监听端口,创建流等)
生命周期管理。(管理servlet生命周期)
多线程支持。
声明方式实现安全。
JSP支持。(翻译jsp为java)
如何找到servlet:根据web.xml配置的url。
4. MVC
5.servlet
生命周期: 容器加载类,初始化servlet,调用init方法(只调用一次),service,destory
每个请求都在单独的线程中运行。
重定向与请求分派。(重定向直接让用户发给另外一个人,请求分派则是自己让另外一个人解决,然后返回给客户,客户根本就不知道具体情况)
相关关键字: init-param, context-param, listener, 作用域(context,request,session),作用域线程安全问题(context不安全,request线程安全,session不安全),
6.session
session实现: cookie,url重写。
7.JSP
终极目标:蜕变为servlet。(MyJSP.jsp -> MyJsp_jsp.java -> MyJsp_jsp.clss -> MyJsp_jsp(servlet));
jsp脚本, <% javacode %>
jsp指令, <%@page %> , page, include, taglib
jsp表达式,<%= %>
jsp声明, <%! int i = 1; %>
jsp动作, <jsp:include />, <jsp:userBean /><jsp:setProperty /><jsp:getProperty />
注册jspInit()方法。
jsp隐式对象:request,response,out,session,config,application,page,pageContext,exception。
jsp4大作用域: page,request,application,session
web.xml中配置<scripting-invaild>false</scripting-invaild>,禁用脚本。
web.xml中配置<el-ignored>true</el-ignored>
或<%@page isELignored="true"%>禁用EL表达式。
8.无脚本JSP
EL表达式:EL隐式对象 [pageScope,requestScope,sessionScope,applicationScope,param,paramValues,header,headerValues,cookie,initParam,pageContext]
JSP标准动作。
JSP标准库。