以下全部课件均来自于同济大学刘岩老师的<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. 8种移动APP导航设计模式对照

    当我们确定了移动APP的设计需求和APP产品设计流程之后,開始着手设计APP界面UI或是APP原型图啦.这个时候我们都要面临的第一个问题就是怎样将信息以最优的方式组合起来? 或许我们对照和了解了其它一 ...

  2. 获取URL的name值 getUrl(url,name) 传入url和key 得到key对应的value

    <body> <script type="text/javascript"> var url = "http://192.168.1.82:802 ...

  3. html中图片上传预览的实现

    本地图片预览 第一种方法 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type& ...

  4. VueJS自定义全局和局部指令

    除了默认设置的核心指令( v-model 和 v-show ), Vue 也允许注册自定义指令. 使用directive自定义全局指令 下面我们注册一个全局指令 v-focus, 该指令的功能是在页面 ...

  5. node.js介绍及Win7环境安装测试(转)

    官网描述: Node.js is a platform built on Chrome's JavaScript runtime for easily building fast, scalable ...

  6. ios面试基础

    1.#import和#include的差别 @class? @class一般用于头文件里须要声明该类的某个实例变量的时候用到,在m文 件中还是须要使用#import 而#import比起#includ ...

  7. PHP实现上次登录功能

    通过一个sql语句把上次的登录时间给本次登录时间,再把当前时间记录下来 update userinfo  set lasttime=userinfo.logintime,logintime= CURR ...

  8. HDFS源码分析数据块汇报之损坏数据块检测checkReplicaCorrupt()

    无论是第一次,还是之后的每次数据块汇报,名字名字节点都会对汇报上来的数据块进行检测,看看其是否为损坏的数据块.那么,损坏数据块是如何被检测的呢?本文,我们将研究下损坏数据块检测的checkReplic ...

  9. cacti 安装和组件添加

    安装cacti 步骤 1.准备lamp环境 2.准备所需包:rrdtool(绘图) cacti(安装程序) net-snmpd(数据收集) 3.安装所需库文件 rrdtool所需库文件有: cairo ...

  10. 部署mongodb中需要注意的调参

    部署mongodb的生产服务器,给出如下相关建议: 使用虚拟化环境: 系统配置 1)推荐RAID配置 RAID(Redundant Array of Independent Disk,独立磁盘冗余阵列 ...