以下全部课件均来自于同济大学刘岩老师的<EnterpriseJavaProgramming> 因为授课语言问题,如果翻译有不正确之处欢迎指正

Section 1. 关于Servlet的部分内容提升

一.如何进行服务器端的重定向

关于服务器的重定向主要有两种方法:

第一种是通过RequestDispatcher(请求分派)类来实现,在Servlet内部通过调用doGet或者doPost函数的request类参数的方法来得到WebContext类来使用getRequestDispatcher类来实现URL请求的重定向。这里值得注意的一点是RequestDispatcher类有两种得到的方法:

 1.直接通过request“不明对象(Implict Object)”类来调用getRequestDispatcher方法来得到,参数是一个相对的路径,也就是说,如果发送request请求的网页所在  的目录和要重定向的网页在同一个虚拟目录下的时候,需要进行简写。

 2.间接方法(老师的幻灯片中都是使用的匿名类来简化代码量)通过request对象来调用getServletContext方法所得到的匿名类再调用一次getRequestDispatcher  类来实现得到RequestDispatcher类,最后统一使用一个forward(request,response)来完成重定向。

第二种是使用response类的sendRedirect方法,我想这个方法是最简单粗暴的。

二.如何通过request类来传送数据/类(Persisting application data across requests)

上面的表格先给出来了要使用到的类的出处,本章所指的数据/类的传输暂时只是指通过setAttri7bute和getAttribute方法来实现的传送,主要有三种类有set/getAttribute方法分别是来自于request类,session类,和servletcontext类。既然这三种类都有Attribute的getter&setter我们不妨来进行一下比较体会其中的差别。

首先用一张图来看一下服务器--客户端结构中request,session,context顺带上cookie的区别

在这张图中在服务器端的红色ABC表示的是session,在客户端的蓝色ABC表示的是cookie,context是D,而request图中没有表示,request的生命周期在下面链接有具体讲述

http://blog.csdn.net/seablue_xj/archive/2009/11/26/4879847.aspx

1.当使用request的Attribute getter&setter我们所传送的数据的生命周期是和request类的生命周期是相同的,这个也就是使用request来传送数据的最大限制,当request对象被创建之后如果被上面所讲的RequestDispatcher.forward对象处理的的话数据是依然存在的,也就是说request所存信息的最长路线就是“JSP-〉Servlet-〉RequestDispatcher重定向的URL”,当然如果是用sendRedirect来进行重定向的话,那么request的生命周期结束所存的数据自然也就会被销毁。

2.如果是使用session的Attribute getter&setter,实际上所要传输的数据是存在了服务器端的session类中,客户端请求可以通过自己的sessionId来多次访问session也就是可以进行数据的一次存反复取,这样以来所存的数据的生命周期和重定向就没有关系

3.最“大”的方法是使用servletcontext的Attribute getter&setter这种方法可以讲是将数据存在了整个服务器端(不考虑并行主机共享服务端)的背景之中,所存的资源直接存储在服务器端。


Section 2. 关于JSP的主要内容

关于JSP的概念性介绍很简单:1.动态JSP代码+静态HTML的组合  2.JSP和Servlet一般是作为Controller在MVC模式中

这些类都是隐式声明的类,可以在JSP的内嵌动态代码之中直接使用,如果使用了其他Explict的对象而没有声明的的话就会产生一个“NullPointerException”

这里的例子和上一次的例子不同的是在web.xml文件中的servlet-class标签换成了jsp-file标签也就是用jsp文件来代替了javaServlet的类的作用,使用JSP文件可以更好的和HTML5代码融合写出美观人性化的页面,不需要servlet中的response.getWriter来逐行println.

关于JavaBeans的概念性描述

1.javaBean是一个“完美”Encapsulated类,要求内部的数据必须严格按OOP的规范通过getter&setter来进行访问,而且是private限定

2.javaBean必须使用接口Serializable允许该对象并行化写入磁盘文件之中,句式如下

<jsp:useBean id="id" class="classname" scope="page|request|session|application" />

<jsp:setProperty name="id" property="name1" value="xxx1" or param="xxx1" />

<jsp:getProperty name="id" property="name1"/>

关于这张图还是有很多不大懂的地方,因为自己的HTML功底很浅,比如那个单引号是什么来头...但是在jsp:setProperty标签之中,我们既可以静态的将一个值传过去,也可以使用 url目录+“?xxx1=param1&..”查询标记来自己定值

关于jsp:include的用法很简单朴素,这里就不多赘述了:-)

<J2EE学习笔记>续上次Servlet部分提升内容 以及JSP的内容纲要的更多相关文章

  1. [原创]java WEB学习笔记47:Servlet 监听器简介, ServletContext(Application 对象), HttpSession (Session 对象), HttpServletRequest (request 对象) 监听器,利用listener理解 三个对象的生命周期

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  2. 【Stage3D学习笔记续】山寨Starling(八):核心优化(批处理)的实现

    批处理是使GPU进行高效绘制的一种技术手段,也是整个渲染流程中最核心的技术,到目前为止我们并没有使用到这种技术手段,下面我们看看我们现在的渲染机制. 先想一想我们最开始是怎么向GPU绘制一幅图像的,可 ...

  3. [原创]java WEB学习笔记05:Servlet中的ServletConfig对象

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  4. [原创]java WEB学习笔记04:Servlet 简介及第一个Servlet程序(配置注册servlet,生命周期)

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  5. 【Stage3D学习笔记续】真正的3D世界(一):透视矩阵

    如果各位看官跟着我的学习笔记一路看过来的话,一定会吐槽我的,这都是什么3D啊?从头到尾整个都是在使用GPU绘制一堆2D图像而已,的确,之前我们一直使用正交矩阵利用GPU加速来实现2D世界的展示,算不上 ...

  6. 【Stage3D学习笔记续】山寨Starling(二):VertexData探幽

    还记得之前的学习笔记中我们的顶点缓冲数组中的顶点数据么,我们使用一个一维数组来记录所有的顶点数据,这是由于顶点缓冲上传数据时是使用的一维数组. 如果对顶点数据进行一层代码的封装,就能更加的方便我们来操 ...

  7. <J2EE学习笔记>关于Servlet的讲义

    题外话:接触java又是半年之前的事情了,当初好好学了java却把cpp给忘了,到现在又把手里发热的cpp给放下重新捡起来java,究竟这两种OOP语言我能不能清晰分开记住呢 以下全部课件来自于同济大 ...

  8. j2ee学习笔记 Filter过滤器

    作用:过滤response和request对象的内容 使用: Filter是J2EE的一个接口,自定义Filter需要实现该接口,并重写所有的方法. Filter提供的方法: init() doFil ...

  9. Serlvet学习笔记之一 ——实现servlet的3种方法

    1.配置环境,从tomcat的lib下面引入servlet-api.jar包.

随机推荐

  1. PHP树生成迷宫及A*自己主动寻路算法

    PHP树生成迷宫及A*自己主动寻路算法 迷宫算法是採用树的深度遍历原理.这样生成的迷宫相当的细,并且死胡同数量相对较少! 随意两点之间都存在唯一的一条通路. 至于A*寻路算法是最大众化的一全自己主动寻 ...

  2. Android 基于Retrofit+Rxjava搭建的简单易用的网络架构

    装逼開始之前,为大家推荐两篇文章,用来更好的学习Retrofit和Rxjava. 在这里我们要感谢互联网装逼行业勇于献身,甘于奉献的的大婶们. 我仅代表个人,给您们跪舔了. Retrofit:Retr ...

  3. Android解析聚合数据之天气预报

    免费天气预报API:https://www.juhe.cn/docs/api/id/73 ,申请APPKEY MainActivity.java <span style="font-s ...

  4. vue.js+koa2项目实战(三)登录注册模态框

    登录注册模态框 注: [Vue warn]: Do not use built-in or reserved HTML elements as component id: diaLog 原因:diaL ...

  5. UNP学习笔记(第六章 I/O复用)

    I/O模型 首先我们将查看UNIX下可用的5种I/O模型的基本区别: 1.阻塞式I/O 2.非阻塞式I/O 3.I/O复用(select和poll) 4.信号驱动式I/O(SIGIO) 5.异步I/O ...

  6. C#比較对象的相等性

    对于相等的机制全部不同,这取决于比較的是引用类型还是值类型.以下分别介绍引用类型和值类型的相等性. 1.比較引用类型的相等性 System.Object定义了三种不同的方法,来比較对象的相等性:Ref ...

  7. 阿里云数据库RDS迁移,DTS 迁移过程中,是否会锁表,对源数据库是否有影响?

    阿里云数据库RDS迁移,DTS 迁移过程中,是否会锁表,对源数据库是否有影响? DTS 在进行全量数据迁移和增量数据迁移的过程中,均不会对源端数据库进行锁表,因此在全量数据迁移和增量数据迁移的过程中, ...

  8. [读书笔记] learn python the hard way书中 有关powershell 的一些小问题

    ex46中,创建自己的python,  当你激活环境时 .\.venvs\lpthw\ Scripts\activate 会报一个错误 此时需要以管理员身份运行PowerShell,(当前的PS不用关 ...

  9. 开发ActiveX控件调用另一个ActiveX系列3——ActiveX调用另一个ActiveX

    终于进入正题了,怎样在ActiveX中调用另一个ActiveX.我们的项目需要调用华视电子身份证识别仪的ActiveX控件 在这里有很多识别仪ActiveX插件下载:http://www.idukaq ...

  10. 高性能HTTP加速器Varnish安装与配置(包含常见错误)

    Varnish是一款高性能的开源HTTP加速器.挪威最大的在线报纸Verdens Gang使用3台Varnish取代了原来的12台Squid,性能竟然比曾经更好.Varnish 的作者Poul-Hen ...