<J2EE学习笔记>续上次Servlet部分提升内容 以及JSP的内容纲要
以下全部课件均来自于同济大学刘岩老师的<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的内容纲要的更多相关文章
- [原创]java WEB学习笔记47:Servlet 监听器简介, ServletContext(Application 对象), HttpSession (Session 对象), HttpServletRequest (request 对象) 监听器,利用listener理解 三个对象的生命周期
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- 【Stage3D学习笔记续】山寨Starling(八):核心优化(批处理)的实现
批处理是使GPU进行高效绘制的一种技术手段,也是整个渲染流程中最核心的技术,到目前为止我们并没有使用到这种技术手段,下面我们看看我们现在的渲染机制. 先想一想我们最开始是怎么向GPU绘制一幅图像的,可 ...
- [原创]java WEB学习笔记05:Servlet中的ServletConfig对象
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- [原创]java WEB学习笔记04:Servlet 简介及第一个Servlet程序(配置注册servlet,生命周期)
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- 【Stage3D学习笔记续】真正的3D世界(一):透视矩阵
如果各位看官跟着我的学习笔记一路看过来的话,一定会吐槽我的,这都是什么3D啊?从头到尾整个都是在使用GPU绘制一堆2D图像而已,的确,之前我们一直使用正交矩阵利用GPU加速来实现2D世界的展示,算不上 ...
- 【Stage3D学习笔记续】山寨Starling(二):VertexData探幽
还记得之前的学习笔记中我们的顶点缓冲数组中的顶点数据么,我们使用一个一维数组来记录所有的顶点数据,这是由于顶点缓冲上传数据时是使用的一维数组. 如果对顶点数据进行一层代码的封装,就能更加的方便我们来操 ...
- <J2EE学习笔记>关于Servlet的讲义
题外话:接触java又是半年之前的事情了,当初好好学了java却把cpp给忘了,到现在又把手里发热的cpp给放下重新捡起来java,究竟这两种OOP语言我能不能清晰分开记住呢 以下全部课件来自于同济大 ...
- j2ee学习笔记 Filter过滤器
作用:过滤response和request对象的内容 使用: Filter是J2EE的一个接口,自定义Filter需要实现该接口,并重写所有的方法. Filter提供的方法: init() doFil ...
- Serlvet学习笔记之一 ——实现servlet的3种方法
1.配置环境,从tomcat的lib下面引入servlet-api.jar包.
随机推荐
- 【SharePoint】K2 for SharePoint 安装笔记【未完工】
0.安装环境说明 0.1.软件版本 OS : Window Server 2012 标准版 SharePoint : 2013标准版 K2 : 4.6.9 0.2.环境结构 SharePoint 20 ...
- Python爬虫爬取美剧网站
一直有爱看美剧的习惯,一方面锻炼一下英语听力,一方面打发一下时间.之前是能在视频网站上面在线看的,可是自从广电总局的限制令之后,进口的美剧英剧等貌似就不在像以前一样同步更新了.但是,作为一个宅diao ...
- webstrom 代码工具(转http://www.cnblogs.com/tangdanni11/p/5149063.html)
Emmet的前身是大名鼎鼎的Zen coding,如果你从事Web前端开发的话,对该插件一定不会陌生.它使用仿CSS选择器的语法来生成代码,大大提高了HTML/CSS代码编写的速度,比如下面的演示: ...
- 身份证号码正则匹配-javascript
function a(a, b) { return a.test(b) } function b(a) { return a = jQuery.trim(a), 0 == a.length } fun ...
- python windows package/module 安装
方法一: cmd中运行pip install xx 注意:1.pip添加至环境变量 2.系统自带这些安装模块 运行pip freeze > requirements.txt 可以在require ...
- eclipse.ini配置文件
Eclipse安装Maven插件后,Eclipse启动问题:Maven Integration for Eclipse JDK Warning. 解决方法: 1. 设置Eclipse使用的JRE为本 ...
- 你要的最后一个字符就在下面这个字符串里,这个字符是下面整个字符串中第一个只出现一次的字符。(比如,串是abaccdeff,那么正确字符就是b了)
include "stdafx.h" #include<iostream> #include<string> using namespace std; in ...
- 向oracle中插入date时,持久层sql怎么写???
public class EmpDao { public void addEmp(Emp emp) throws SQLException { QueryRunner runner = new Que ...
- 新装上线 年度精品 XP,32/64位Win7,32/64位Win10系统【电脑城版】
随着Windows 10Build 10074 Insider Preview版发布,有理由相信,Win10离最终RTM阶段已经不远了.看来稍早前传闻的合作伙伴透露微软将在7月底正式发布Win10的消 ...
- WPF中DATAGRID自定义验证(包含BINDINGGROUP)
DataGrid在Wpf中的应用是十分广泛的,当你需要表中的信息稍详细的显示出来时,或者我们需要进行某些数据输入时,都有可能采用DataGrid.当然对信息的显示,我们不需要进行验证,但当我们将Dat ...