读head first servlet and jsp(二)

servlet和jsp 专栏收录该内容
3 篇文章 0 订阅

1.使用session保存多个请求会共同用到的属性,因为只要是同一浏览器发过来的多个请求,都属于同一个会话(同一个浏览器多个窗口发送都属于同一个会话,这个求解)

2.容器通过会话id得知哪个客户是谁,因为如果你的ip地址是路由器的地址,就不能唯一地表示你。第一次会话时,客户发送请求到服务器,然后服务器接收到请求后,作出响应并且将响应发回到客户那里,然后在响应首部加上会话id,以后每次浏览器发送请求到服务器的时候,都会在首部加上这个会话id,那么每次服务器都会知道是哪个客户发送请求过来,就会调用响应的httpSession对象。(session对象通过request.getSession())得到),实质上的会话id是通过cookie对象设置进去首部的

3.当你调用request.getSession的时候,容器会自动帮你做一下工作

     (1)创建新的httpSession对象

     (2)产生位移的会话id,并且创建新的cookie对象,将会话id与cookie相连

     (3)将cookie对象加进去响应的set-cookie首部下面

4.当浏览器禁用cookie的时候,会话id会放在url后面,作为参数传收,但是不能使用request.getParameter()得到,这里有点不理解,求指教

5.删除会话,通过设置会话超时或者调用invalidate()方法

    (1)在dd中配置, <session-config><session-timeout>15</session-timeout></session-config>

    (2)session.setMaxInactiveInternal(20*69)

    (3)cookie都是服务器先发送第一个响应的时候设置的,当你i想在客户和服务器之间每次都知道用户的名字时候,可以在第一次服务器做响应的时候把名字设置在cookie上,因为cookie是一个名/值对,并且它的交互是自动的。cookie就是客户和服务器之间交换的一小段数据

             第一次在服务器端的时候,

             Cookie cookie = new Cookie("username",name);

             Cookie.setMaxAge();//设置cookie的存货时间

             response.addCookie(cookie)//把cookie发送到客户

             //从客户请求得到cookie

              Cookie[] cookies = request.getCookies();

              for(int i = 0;i < cookies.length;i++){

                    Cookie cookie = cookies[i];

                     if(cookies[i].getName.equals("username")){

                     再通过getValue得到这个username对应的值

}

              当你的对象需要每次都在客户和服务器中交流的时候,即每次都要在浏览器中显示的数据,则一般应该产生一个cookie对象,然后将它设置在set-cookie首部中

}

     session保存的是对象,cookie中保存的是字符串

6.jsp的使用

(1).jsp会变成一个servlet对象

(2).<%%>里面的语句会放在具体的jspService()方法里面,<%=%>等价于out.println()

(3).<%!%>是声明,会变成转化后的servlet的类范围里面,方法或语句都可以

(4).在建立jspService()方法的时候,会产生一大堆隐式对象,例如httpServletRequest和jspWriter这种,会有一半servlet应该有的所有隐式对象

(5).将jsp转换成java源代码和编译成一个class文件只会发生一次在一个jsp中

(6).可以在dd中使用jsp-file配置初始化参数

(7).pageContext是jsp特有的隐式对象,并且可以通过这个对象得到其他所有的对象(而且能得到所有域的属性)

7.jsp动作和el

(1).<jsp:useBean id="" class="" scope="" />来声明和初始化一个bean属性,如果没有这个id属性的话,会创建一个新的对象,然后set进去,相当于定义一个变量

useBean中的id要与getProperty中的name相匹配,默认是page属性域

(2).<jsp:getProperty name="" property="" />相当于从name找到在useBean中已经定义的变量,然后得到这个属性对象的property值,通过get方法

(3).当在jsp:useBean中使用type属性的时候,生产的servlet会是类型,class属性是指当你要新创建对象的时候new的类型

     Type p = null;

      if(p==null){

       p = new class();

}

(4).el表达式

当使用el表达式的时候,第一个是使用findAttribute找到这个名字对应的对象,后面都是调用get方法。先找页面,再找请求,会话,到应用作用域

.和[]来访问,使用[]的时候,可以用它来访问list或数组或者map,例:${musicList[0]}

使用musicMap["Ambient"]是查找ambient对应的键值,如果没有引号,则先查找ambient对应的建,再查找到这个建对应的键值

请求参数,可以在el中通过param得到,例:

<input type="text" name="food" />  在jsp中,${param.food}

el中有cookie隐式对象,可以使用${cookie.属性名.value}来得到你要的cookie的值

只有pageContext是真正得到对象,其他都只是得到作用域不是真正得到对象(例如request),只是作用域属性的map

(5)include指令和jsp:include动作的区别

include指令:将整个jsp代码放进去,只会编译一次,如果代码修改后,web容器是不会知道的(不过一般现在web容器已经支持这个功能),静态 使用file

include动作:只是将include进去的jsp的响应与本来的响应合起来,每次有请求到来时,include动作中的jsp页面都会重新编译一次,所以为动态包含 使用page

可以使用jsp:param来给包含的页面添加东西

<jsp:forward page="" />来转向到另一个jsp中,使用这个的时候,缓冲区会在转发之前清空,等于转发之前的内容不会打印出来





           

            

    

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

Head First Servlet JSP(清晰中文版) pdf格式 绝对清晰 绝对中文版!! 由于本人上传权限为20M,所以分为六个pdf文件,可根据需要分开下载,附上本书介绍及目录: 内容简介 《Head First ServletJSP》(中文版)结合SCWCD考试大纲讲述了关于如何编写servlets和JSP代码,如何使用JSP表达式语言,如何部署Web应用,如何开发定制标记,以及会话状态、包装器、过滤器、企业设计模式等方面的知识,以一种轻松、幽默而又形象的方式让你了解、掌握servlets和JSP,并将其运用到你的项目中去。《Head First ServletJSP》(中文版)采用交谈式的写作方式,图文结合地阐述了servlets和JSP方面的知识,尤其是与SCWCD考试相关的知识。 目录 引子 这本书适合谁? 我们知道你的大脑在想什么 元认知 让你的大脑就范 看这本书需要些什么 通过证书考试 技术审校 致谢 1 为什么使用Servlet & JDP:简介 考试要求 Web服务器和客户做什么?它们如何交流? HTML速成 HTTP协议是什么? HTTP GET和POST请求以及HTTP响应剖析 使用URL查找Web页面 Web服务、静态Web页面和CGI Servlet揭秘:编写、部署和运行Servlet 如果在HTTL中引入JavaJSP则应运而生 2 Web应用体系结构:高层概述 考试要求 什么是容器,容器能带给你什么? 代码里有什么 命名servlet,使用DD将Servlet映射到URL 故事:Bob构建了一个速配网站(MVC) 模型-视图-控制器(MVC)概述和示例 一个“实标”的部署描述文件(DD) J2EE如何集成这一切 3 MVC迷你教程:请求和响应 4 作为Servle:请求和响应 5 作为Web应用:属性和监听者 6 会话状态:bean/实体同步 7 作为JSP:编写JSP代码 8 无脚本的页面:编写代元脚本JSP 9 强大的定制标记:使用JSTL 10 JSRL也有力不能及的时候:定制标记开发 11 部署Web应用:Web应用部署 12 要保密,要安全:Web应用安全 13 过滤的威力:包装器和过滤器 14 企业设计模式:模式和Struts A 附录A:最终模拟测验 i 索引
参与评论 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

AndrewHuang0531

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值