Head First Servlets&Jsp 读书摘记5——【作为JSP】

少很实际用到但却还算重要的一章开始咯,第七章——【作为JSP】 开始咯……

46、JSP最终还是会变成一个完整的servlet在Web应用中运行。他与其他的servlet很相似,只不过这个servlet类会由容器为你写好。

My——(编写)——>MyJsp.jsp——(转换为)——>MyJsp_jsp.java——(编译为)——>MyJsp_jsp.class——(加载并初始化为)——>MyJsp_jspservlet(P281);

47、不要在表达式中放了分号!<%=Counter.getCounter();%>可能很糟糕,这表示:out.print(Counter.getCounter(););(P287);

48、所有scriptlet(<%   ;%>)和表达式(<%=   %>)代码都放在服务器方法中。

这说明scriptlet中声明的变量总是局部变量

JSP声明(<%!   ;%>)总在类中定义,而且置于服务方法之外。这意味着你可以声明静态变量,实例变量和方法。(P291~293);

49、JSP要变成servlet,容器会为这个servlet编写.java文件。

JSP声明周期:

1.1 写一个.jsp文件,并将其部署为Web应用的一部分;1.2 容器“读取”这个应用的web.xml,但是对.jsp文件不做任何处理(直到得到第一个请求);

2.1 客户点击一个链接,请求这个.jsp;2.2 容器尝试将.jsp转换成一个servlet类的.java源代码(这一步会捕获JSP语法错误);

3 容器尝试把这个servlet.java源文件编译成一个.class文件(这里会捕获到java语言/语法错误);

4 容器加载新生成的servlet类;

5 容器实例化servlet,并导致servlet的jspInit()方法运行——>对象现在变成一个完整的servlet,准备就绪,可以接受客户请求了;

6 容器创建一个新线程来处理这个客户的请求,servlet的_jspService()方法运行;

7 此后发生的所有事情都只是普通的servlet请求处理;

8 最终servlet想客户发回一个响应(或者把请求转发到另一个Web应用组件)(P304~305);

50、部署应用时,在JSP生命周期中,整个转换和编译步骤只发生一次。

JSP一旦得到转换和编译,就像其他servlet一样了。

而且类似于其他的servlet,一旦servlet得到加载和初始化,请求时只会发生一件事,就是创建货分配一个线程来运行服务方法。

所以“第49”只是针对第一个请求。(P306);

51、可以在JSP中完成servlet初始化工作,但这与常规servlet中的做法稍有不同。DD中加<jsp-file>TestInit.jsp</jsp-file> (P308);

52、在JSP中可以

<%!

    public void jspInit() {

        ServletConfig config = getServletConfig();

        Stirng email = config.getInitParameter("email");

        ServletContext ctx = getServletContext();

        ctx.setAttribute("mail", email);

    }

%>

(P308);

53、通常你不需要(也不关心)页面作用域,除非你在开发定制标记。(P309);

54、可以使用PageContext引用得到任意作用域的属性(P310);

55、pageContext.findAttribute("MyKey");首先从最严格的作用域查起(页面上下文),逐步转向不严格的作用域,最先找到就算“赢”,不会再其他作用域继续查找(P311);

56、CTO下发的备忘录,办公室之间传阅

----------------------------

紧急

如果发现有人在JSP代码中使用

scriptlet,表达式或声明,立即停职,

扣发薪水,知道能确定这个程序员真正称职

或者能维护另外哪个笨蛋的代码为止。

----------------------------

XXXXX

首席技术官

----------------------------

“记住,团队是大家的。”(P314);

57、把java放在JSP中,往往有两大抱怨:

1)不应该要求Web页面设计任意必须懂java。

2)JSP的java代码很难修改和维护。(P317);

58、page指令优先于DD设置!如<%@ page isElIgnored="true"%>优先于DD中<el-ignored>true</el-ignored>

摘完才发现这章的重要点点和以前的迷糊点点还真不少,收获咯,收获咯……

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值