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
    }

}
时间: 2024-10-12 17:17:24

JavaWeb总结(六)的相关文章

java-web——第六课 Servlet 控制器的引入

前言: 之前我们写的代码,可以以这样的流程图来解释 今天我们需要讲的就是不让 jsp 直接访问 javabean 而是加入一个新概念, setvlet 控制器, 也是对应了我们软件工程的 MVC 思想 如下图: 废话不多说,直接进入我们的正文: 正文: 首先我们先考虑我们的需求 需求很简单,就是显示一个表格以及其中的内容 接下来我会一步一步写出步骤来实现这次的需求 步骤一:建立一个 java web 项目 并且分好包,为待会写代码提供规范 步骤二:建立一个 实体类 实体类内容如下图: 步骤三:建

JavaWeb(六)Listener监听器

监听器 监听器就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上述事件后,监听器某个方法将立即被执行. Servlet监听器 在Servlet规范中定义了多种类型的监听器,它们用于监听的事件源分别为 ServletContext, HttpSession 和 ServletRequest 这三个域对象. Servlet规范针对这三个对象上的操作,又把这多种类型的监听器划分为三种类型. 监听三个域对象创建和销毁的事件监听器 监听域

JavaWeb(六)JSP-1

1.JSP起源 (1)在很多动态网页中,绝大部分内容都是固定不变的,只有局部内容需要动态产生和改变. (2)如果使用Servlet程序来输出只有局部内容需要动态改变的网页,其中所有的静态内容也需要程序员用Java程序代码产生,整个Servlet程序的代码将非常臃肿,编写和维护都将非常困难. (3)对大量静态内容的美工设计和相关HTML语句的编写,并不是程序员所要做的工作,程序员对此也不一定在行.网页美工设计和制作人员不懂Java编程,更是无法来完成这样的工作. (4)为了弥补 Servlet 的

Java面试题-javaweb篇六

51.说一说Servlet的生命周期? Servlet有良好的生存期的定义,包括加载和实例化.初始化.处理请求以及服务结束.这个生存期由javax.servlet.Servlet接口的init(),service()和destroy方法表达. Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法. web容器加载ser

Java程序员从底层到CTO的技术路线图

首先,附一张图片展示所在各个阶段的工作职能: 其次,文字型描述所在各个阶段的工作职能: Java程序员 高级特性 反射.泛型.注释符.自动装箱和拆箱.枚举类.可变参数.可变返回类型.增强循环.静态导入. 核心编程 IO.多线程.实体类.集合类.正则表达式.XML和属性文件.图形编程AWT(Java2D/JavaSound/JMF).Swing.SWT.JFace. 网络编程 Applet.Socket/TCP/UDP.NIO.RMI.CORBA. Java语法基础 类.抽象类.接口.最终类.静态

10-多写一个@Autowired导致程序崩了

再是javaweb实验六中,是让我们改代码,让它跑起来,结果我少注释了一个,导致一直报错,检查许久没有找到,最后通过代码替换逐步查找,才发现问题. 原文地址:https://www.cnblogs.com/zhumengdexiaobai/p/10057766.html

javaweb学习总结(六)——Servlet开发(二)

转载:http://www.cnblogs.com/xdp-gacl/p/3763559.html 只为成功找方法,不为失败找借口! javaweb学习总结(六)——Servlet开发(二) 一.ServletConfig讲解 1.1.配置Servlet初始化参数 在Servlet的配置文件web.xml中,可以使用一个或多个<init-param>标签为servlet配置一些初始化参数. 例如: 1 <servlet> 2 <servlet-name>ServletC

javaweb学习总结(四十六)——Filter(过滤器)常见应用

一.统一全站字符编码 通过配置参数charset指明使用何种字符编码,以处理Html Form请求参数的中文问题 1 package me.gacl.web.filter; 2 3 import java.io.IOException; 4 import javax.servlet.Filter; 5 import javax.servlet.FilterChain; 6 import javax.servlet.FilterConfig; 7 import javax.servlet.Serv

JavaWeb学习总结(六)—HttpServletResponse

Response概述: response是Servlet.service方法的一个参数,类型为javax.servlet.http.HttpServletResponse.在客户端发出每个请求时,服务器都会创建一个response对象,并传入给Servlet.service()方法.response对象是用来对客户端进行响应的,这说明在service()方法中使response对象可以完成对客户端的响应工作. response对象的功能分为以下四种: 设置响应头信息: 发送状态码: 设置响应正文

java中文乱码解决之道(六)—–javaWeb中的编码解码

在上篇博客中LZ介绍了前面两种场景(IO.内存)中的java编码解码操作,其实在这两种场景中我们只需要在编码解码过程中设置正确的编码解码方式一般而言是不会出现乱码的.对于我们从事java开发的人而言,其实最容易也是产生乱码最多的地方就是web部分.首先我们来看在javaWeb中有哪些地方存在编码转换操作. 编码&解码 通过下图我们可以了解在javaWeb中有哪些地方有转码: 用户想服务器发送一个HTTP请求,需要编码的地方有url.cookie.parameter,经过编码后服务器接受HTTP请