JavaWeb总结(六)
获取原始表单数据
- POST请求不仅可以传输文本信息还可以传输二进制数据
- 如果想得到请求中参数的原始字节数据,可以使用HttpServletRequest对象提供的getInputSteam()或getReader()方法直接访问表单数据
获取原始表单数据的两种情况
- 数据不是由HTML表单提交,而是来自某个客户端程序,需要自己读取和分析这些数据。
- 数据来自于上传的文件时,需要自己读取数据
请求派发
- 每个客户的请求可以传递给很多Servlet以及Web应用程序中的其它资源
- 整个过程完全是在服务器端完成
- 不需要任何客户端浏览器的行为
- 不需要在客户端浏览器和服务器端之间传递特殊信息
- 通过javax.servlet.RequestDispatcher对象实现
|
提示:重定向让客户端浏览器来完成,而请求派发是在服务器端做工作 |
请求派发的实现
- 调用ServletRequest对象的方法:
- getRequestDispatcher(path):方法返回给定路径的RequestDispatcher对象
- getNamedDispatcher(name) :返回某个名称的Servlet的RequestDispatcher对象
|
提示:RequestDispatcher对象还可以通过ServletContext对象的getRequestDispatcher()得到,路径值必须是以根目录"/"开始 |
- RequestDispatcher对象提供了两种方法:
- forward(ServletRequest, ServletResponse):派发请求和响应对象到RequestDispatcher 对象所确定的新资源(Servlet、JSP或者HTML等)
- include(ServletRequest, ServletResponse)该方法关键是能包含服务器端的资源
|
request.getRequestDispatcher("/sucess.html").include(request, response); request.getRequestDispatcher("/sucess.html").forward(request, response); |

forward跳转示意图

include包含示意图
请求范围
- 变量可以保存在请求范围中
- 在请求范围之外就不能进行访问了
public class Servlet1 extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setAttribute("key", "value");
//重定向跳转到Servlet2,Servlet2获取的值为null
//response.sendRedirect("Servlet2");
//forward跳转到Servlet2,Servlet能获取值为value
//request.getRequestDispatcher("Servlet2").forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}
}
public class Servlet2 extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.err.println(request.getAttribute("key"));
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}
}
JavaWeb总结(六)的更多相关文章
- JavaWeb(六)之MVC与三层架构设计
前言 这段时间要学习hadoop,但是也希望把自己的web知识复习起来.所以花自己休息的时间把这些web的知识好好的巩固一下!没有什么可以阻挡我前进的脚步. 首先我们先了解一下: C/S:客户端 / ...
- JavaWeb学习 (六)————Servlet(二)
一.ServletConfig讲解 1.1.配置Servlet初始化参数 在Servlet的配置文件web.xml中,可以使用一个或多个<init-param>标签为servlet配置一些 ...
- JavaWeb总结(六)—Session
一.Session的介绍 在Web开发中,服务器可以为每个用户浏览器创建一个会话对象(session对象),注意:一个浏览器独占一个session对象(默认情况下).因此,在需要保存用户数据时,服务器 ...
- JavaWeb 后端 <六> 之 EL & JSTL 学习笔记
一.EL表达式(特别重要)
- JavaWeb(六)Listener监听器
监听器 监听器就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上述事件后,监听器某个方法将立即被执行. Servlet监听器 在Se ...
- javaweb笔记六
指令包含:可以在一个jsp中包含另一个jsp中的内容.会将包含页面和被包含页面放在一起编译,形成一个java类.所以,是在编译时发生的.只能包含文件,不允许两个页面之间存在同名变量.被包含页面也不应该 ...
- javaweb(十六)——JSP指令
一.JSP指令简介 JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分. 在JSP 2.0规范中共定义了三个指令: pa ...
- JavaWeb【六、JavaBean】
简介 JavaBean是符合设计原则的Java类.好处是提高可复用性,减少冗余,增强可维护性. JavaBean设计原则 共有类 无参共有构造 属性私有 getter和setter方法 JSP动作元素 ...
- 2017.11.2 JavaWeb----第六章 Servlet技术
JavaWeb ------第六章 Servlet技术 (1)在Web应用程序开发中,一般由JSP JavaBean技术和 Servlet技术的结合实现MVC开发模式.在MVC开发模式中将Web程序的 ...
- JavaWeb【一、简介】
原计划上周完成的内容,硬是过了一个清明拖到了这周,工作上还有很多东西没做...明天抓紧看把,争取这周末搞定 内容简介:(学习完后会重新梳理调整) 1.JavaWeb[一.简介] 2.JavaWeb[二 ...
随机推荐
- ubuntu-15.04-desktop-amd64想要安装KDE桌面,结果出现如下问题
The following packages have unmet dependencies: kubuntu-desktop : Depends: ark but it is not going t ...
- linux/OSX中“DD”命令制作ISO镜像操作系统安装U盘
linux或者OS X系统中,使用“dd”命令可以直接在终端命令行模式下,制作ISO镜像的系统安装盘. 一.linux系统以centOS7为例. sudo dd if=镜像路径 of=USB设备路径 ...
- Java简单的数据库连接
package test.postgre; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Res ...
- SCCM OS播发
SCCM OS播发1.在分发点启用PXE支持2.将启动映像包分发到分发点:需要将x86和x64都分发到分发点,如果只分发x64,在客户端pxe启动时会出现 no response from wds s ...
- 转载:从程序员的角度看ASCII, GB2312, UNICODE, UTF-8
以下内容转自博客:http://blog.chinaunix.net/uid-22670933-id-1771613.html. 一.字符编码是怎么回事 0. 概念 字节是计算机的最基本存储单位,一个 ...
- 安装zabbix3.4的过程(一)
目录 zabbix服务端安装(centos7.4) zabbix客户端安装 (centos6.9) 注释:本次安装为官方推荐的yum安装方式,如果需要编译安装,请查看下边的博文: 博文地址:https ...
- 获取索引--------用range()和len()
a = ['Google', 'Baidu', 'Runoob', 'Taobao', 'QQ'] for i in range(len(a)): print(i+1,a[i])
- in有两种用法:
# in有两种用法: 1. 在for中. 是把每一个元素获取到赋值给前⾯的变量. 2. 不在for中. 判断xxx是否出现在str中. #len() 为内置函数,输出为1,2,3,4....., 长度 ...
- Session攻击
1.简介 Session对于Web应用无疑是最重要的,也是最复杂的.对于web应用程序来说,加强安全性的第一条原则就是 – 不要信任来自客户端的数据,一定要进行数据验证以及过滤,才能在程序中使用,进而 ...
- 张高兴的 Windows 10 IoT 开发笔记:0.96 寸 I2C OLED
This is a Windows 10 IoT Core project on the Raspberry Pi 2/3, coded by C#. GitHub:https://github.co ...