<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包.
随机推荐
- 优化算法——拟牛顿法之L-BFGS算法
一.BFGS算法 在"优化算法--拟牛顿法之BFGS算法"中,我们得到了BFGS算法的校正公式: 利用Sherman-Morrison公式可对上式进行变换,得到 令,则得到: 二. ...
- 升级Jekyll 3.0
每一次的升级都得又一次折腾一次,jekyll也不例外 从jekyll 2.5.2 升级为jekyll 3.0.1 错误一: jekyll 3.0.1 | Error: Permission denie ...
- JavaScript中推断一个对象是否为"空对象”
JavaScript中推断一个对象是否为"空对象" 这里指的"空对象"是类似于:{ } 和 new Object() 这种. 详细的代码实现和原理例如以下: / ...
- EasyUI这个框架用了好久了,总结一下遇到的问题和解决方法
1. jQuery EasyUI动态添加控件或者ajax加载页面后不能自动渲染问题的解决方法: 我们之所以在页面中,只要书写相应easyui的class,Easyui就能成功渲染页面,这是因为解析器在 ...
- D类功放基础简介
DAC和D类PA的开关时序是先开dac再开D类pa,先关D类pa再关dac
- 团队项目的Git分支管理规范
原文地址: http://blog.jboost.cn/2019/06/17/git-branch.html 许多公司的开发团队都采用Git来做代码版本控制.如何有效地协同开发人员之间,以及开发.测试 ...
- Window下安装Gradle并在IDEA中配置
真是作死啊,Maven都只是用得半瓢水,还来搞Gradle,小心撩得一身骚啊. 下载Gradle 下载页面为:https://gradle.org/releases/ Gradle 4.1的下载地址: ...
- zabbix 3.2.4 安装
一.安装mysql . 安装必备组件 yum install –y autoconf automake imake libxml2-devel expat-devel cmake gcc gcc-c+ ...
- C#如何遍历数组?
// 一维数组 int[] arr = { 1, 2, 3, 4, 5 }; foreach (int i in arr) { Console.WriteLine(i.ToString() + &qu ...
- android 自定义控件View在Activity中使用findByViewId得到结果为null
转载:http://blog.csdn.net/xiabing082/article/details/48781489 1. 大家常常自定义view,,然后在xml 中添加该view 组件..如果在 ...