A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

xuyu
总结
读取配置文件
1 创建Servletcontext对象
2获得文件路径 getrealpath()
3 通过路径创建输入流
4 通过输入流加载配置文件
5 获得配置文件数据
  文件下载 手动编码下载
1 request获得需要下载的文件名
2通过文件名设置请求头 conntent-type 文件mime类型
3设置请求头 content-disposition 就是以下载方式打开文件
4通过文件名获得绝对路径 并创建输入流
5 获得response输出流并输出输入流读取到的内容完成下载
  乱码问题 根据是request乱码和response乱码分别做相应处理
用户注册功能
1 request获得提交的信息 可将提交的信息封装到信息类
2 调用方法查询信息和数据库 做出相应处理
3 用户名已存在 显示注册失败并跳转回注册页面
4用户名不存在 显示注册成功并跳转到登录对面
  一个request对应一个response (最后这段讲到晚上八点半了,真心听不下去了.超哥你一定要劝劝辉哥讲不完的课留着第二天自习的时候占用时间再讲也是可以接受的,千万别就是在上了一天课后还占用晚自习时间继续讲课,基本上都是处于接受的饱和状态,需要自己消化,越到后面听课效率越来越低了.今天最后讲的那些基本都没有听进去,只能靠第二天自己再花时间看一看,还有就是可以适当讲快点,挑重点强调就好不要面面俱到.)
回复 使用道具 举报
林荣彬
  
ServletContext的功能:
1.读取全局初始化参数
2.获得文件的MIME的类型
3.作为域对象存取数据
    范围:整个web项目.而且全局的对象.
    创建:服务器启动的时候,服务器为每个web项目创建一个单独的ServletContext对象.
    销毁:服务器关闭的时候销毁ServletContext.
4.读取web项目下的文件


文件下载的方式:
一种:超链接下载,直接在文件的路劲写到超链接的href中---前提:文件类型,浏览器不支持;
二种:手动编写代码的方式完成文件的下载:
  设置两个头一个流:
        Content-Type:文件的MIME类型;
        Content-Disposition:以下载的形式打开文件.
        InputStream:文件的输入流.

向页面响应的方法:
getOutputStream();
getWriter();

这两个方法是互斥的.做出响应的时候只能使用其中的一种流响应.

输出中文乱码的处理:
    字节流:设置浏览器默认打开的编码:
resposne.setHeader(“Content-Type”,”text/html;charset=UTF-8”);
设置中文字节取出的时候编码.
“中文”.getBytes(“UTF-8”);
字符流:设置浏览器打开的时候的编码
resposne.setHeader(“Content-Type”,”text/html;charset=UTF-8”);
设置response的缓冲区的编码
response.setCharacterEncoding(“UTF-8”);
简化的写法:response.setContentType(“text/html;charset=UTF-8”);

使用request对象存取数据:
setAttribute(String name,String value);
Object getAttribute(String name);

request的作用范围:
创建和销毁:
创建:客户端向服务器发送了一次请求以后,服务器就会创建一个request的对象.
销毁:当服务器对这次请求作出了响应之后.

重定向和转发的区别:(redirect和forward的区别)
1.重定向的地址栏会发生变化,转发的地址栏不变.
2.重定向两次请求两次响应,转发一次请求一次响应.
3.重定向路径需要加工程名,转发的路径不需要加工程名.
4.重定向可以跳转到任意网站,转发只能在服务器内部进行转发.
5.重定向不能往request对象存数据,而转发是可以使用request存数据.
回复 使用道具 举报
叶凌青
今天学习了request和response
Response
Interface HttpServletResponse
extends ServletResponse
HttpServletResponse接口位于javax.servlet.http包中,继续了ServletResponse接口,是servlet中的重要对象。
request
interface HttpServletRequest extends ServletRequest

HttpServletRequest接口位于javax.servlet.http包中,继续了ServletRquest接口,是servlet中的重要对象。(域对象)
转发和重定向的区别
【重定向】response.sendRedirect(String path); -- 完成重定向
【转发】request.getRequestDispatcher(String path).forward(request,response);
【区别】
1.转发的地址栏不变的.重定向的地址栏发生变化的.
2.转发是一次请求一次响应,重定向是两次请求两次响应.
3.request域对象存取的值在转发中是有效的,在重定向无效的.
4.转发的路径不需要加工程名.重定向的路径需要加工程名.
回复 使用道具 举报

文件下载的方式:
1:超链接下载.直接将文件的路径写到超链接的href中---前提:文件类型,浏览器不支持.
2:手动编写代码的方式完成文件的下载.
       设置两个头和一个流:
    * Content-Type:文件的MIME的类型.
    * Content-Disposition:以下载的形式打开文件.
    * InputStream:文件的输入流.

重定向和转发的区别:(redirect和forward的区别)
1.重定向的地址栏会发生变化,转发的地址栏不变.
2.重定向两次请求两次响应,转发一次请求一次响应.
3.重定向路径需要加工程名,转发的路径不需要加工程名.
4.重定向可以跳转到任意网站,转发只能在服务器内部进行转发.

输出中文乱码的处理:
1.字节流:
   * 设置浏览器默认打开的编码:
      * resposne.setHeader(“Content-Type”,”text/html;charset=UTF-8”);
   * 设置中文字节取出的时候编码.
       * “中文”.getBytes(“UTF-8”);
2.* 字符流:
     * 设置浏览器打开的时候的编码
         * resposne.setHeader(“Content-Type”,”text/html;charset=UTF-8”);
     * 设置response的缓冲区的编码
         * response.setCharacterEncoding(“UTF-8”);
          简化的写法:response.setContentType(“text/html;charset=UTF-8”);

使用request对象存取数据:
* setAttribute(String name,String value);
* Object getAttribute(String name);

request的作用范围:
* 作用范围就是一次请求的范围.
* 创建:客户端向服务器发送了一次请求以后,服务器就会创建一个request的对象.
* 销毁:当服务器对这次请求作出了响应之后.
回复 使用道具 举报
张述明

        使用ServletContext的方法读文件
1.1           InputStream is= getResourceAsStream(String path)
根据提供的路径读取文件返回一个文件的输入流
2.        2.获得文件的mime的类型
什么是Mime: .zip   .jpg      .txt  .html .av  .MP3

String type=GetmimeType(“file””)
3.作为域对象存取对象

4.读取web项目下的文件
Response的概述
代表响应的对象,从服务器向浏览器输出内容
1.        setStatus(int  sc)  设置状态码
响应头  部分
addHeader(String name ,String value); 针对一个key对应多个value的响应头
addDateHeader(String name , long data);
addintHeader(String name , int data);

setHeader(String name ,String value); 针对一个key对应一个value的响应头
setDateHeader(String name , long data);
setIntHeader(String name , int data);

响应体
getOutputStream()
Reponse输出响应的内容
GetOutputStream()
Getwriter()
这两种方法互斥,只能使用其中一种响应.
输出中文乱码的处理
1.        使用字节流输出中文
response.getOutputStream().write(“中文”.getBytes());
不一定有乱码
解决:设置中文转成字节数组取出的时候的编码
设置浏览器默认打开的时候的编码


2.        使用字符流去输出中文
Response.getWriter().println(“中文”);
一定会乱码
Response使用的字符流有缓存区
Reponse的字符流的缓存区的默认的编码是ISO-8859-1;编码不支持中文
解决:
设置response的字符流的缓冲区的编码.
设置浏览器默认打开的时候的编码

getWriter()
文件下载的方式
1.        超链接下载,直接文件的路径写到超级链接的href中,前提就是浏览器不支持文件类型
2.        手动编写代码的方式完成文件下载
设置两个头一个流
Request作为域对象存取数据;
setAttribute(String name ,string value);
object getAttribute(String name )

request 的作用范围
作用范围就是一次请求的范围
创建和销毁
创建:客户端向服务器发送一次请求以后,服务器会创建一个request的对象
销毁:当服务器对这次请求作出响应以后

转发和重定向的区别(redirect和forward)
1.        重定向的地址栏会发生变化,转发不会
2.        重定向路径需要加工程名,转发的路径不需要
3.        重定向两次请求和响应,转发一次请求一次响应
4.        重定向可以跳转到任意网站,转发只能在服务器内容进行转发


回复 使用道具 举报
王刘锁
补:1,设置响应头的方法:set一key一值和add一key多值
setDateHeader("响应头名字",对应的long date值);
setHader("name","value");
setIntHeader("name",int值);
2,重定向是两次请求对应有两次响应,第一次请求的响应回一个地址信息,客户端根据地址信息
去做第二次请求,转发呢是服务器内部的活动,只有一次请求,但是接收这次请求的servlet解决
不了就会把这个请求转给另外的servlet,这个请求的连接对象还是一开始的servlet,因为这个
动作是服务器内部的动作,并没有做出响应,所以只有一次请求,
3,接收参数的方法;
getParameter(String name);根据name属性来获取参数
getParameterMap(),获取所有的参数 key是name value是参数
getParameterNames()获取说有的name
getParameterValues()获取所欲的参数,
4,request域对象的使用客户端一次请求服务器就会创建一个请求域request对象
记住方法:setAttribute(String name,Object obj);存数据 ,
         getAttribute(String name);根据存的参数名获取数据
request域只在该次请求范围有效,一旦这个请求被响应就会销毁域,
回复 使用道具 举报
柯威龙
今天主要是降了三个案例登录,下载,注册.首先学习ServletContext的功能.全局初始化.获得文件的MIME
的类型.ServletContext还可以作为域对象存取数据.Response代表响应的对象,从服务器向浏览器输出内容
.在下载案例时学习了中文编码乱码的问题.还有Response向页面响应的方法getOutputStream()和getWriter()
不过这两种方法是排斥的,主要最重点的是Response作为域对象存取数据.Response的作用是一次请求的范围.他的
创建时客户端向服务器发送一次请求以后,服务器就会创建一个Response对象.销毁是当服务器对此次请求做出相应之后.
和ServletResponse的域对象不一样.还有一个重点是重定向和转发的区别.主要是重定向是两次请求两次相应.而转发
是一次请求一次相应.其他还有一些区别,例如重定向的地址栏会发生变化,转发的地址栏不变,重定向路径需要加工程名
转发的路径不需要加工程名.
回复 使用道具 举报

2018/6/3 林玮

今天主要学习了request和response的一些常用方法,然后用这些方法来实现我们的代码,还有就是request接收参数时的乱码处理,以及重定向与转发的区别(重在理解).

首先来说说request是什么?request呢就是get请求,有着许多方法,还可以作为域对象储存数据,与ServletContext相似,但又不同.request的作用范围也就在一次请求的范围,一次请求也就是从发出请求开始到返回响应结束,范围比较短一点.还有就是response了,这个今天好像没有强调,就了解一下好了,主要用于服务端向浏览器响应的操作,也有众多方法.还有就是乱码的处理了,由于各种原因,当我们运行的时候出现乱码是必然的.既然出现了乱码,当然就要知道该怎么处理了.处理乱码之前首先我们要知道是哪里出现了乱码,然后对症下药,这边有三个针对不同的乱码的处理的方法:1. String str = new String(request.getParameter("name").getBetys("ISO-8859-1"),"UTF-8");第一个是针对get请求获得参数乱码的解决,要创建String对象来把参数的编码改为"UTF-8";2.  request.setCharacterEncoding("utf-8");第二个是针对post请求的乱码解决,它有一个专门修改乱码的方法,所有就比较简单了.3. response.setContentType("text/html;charset=utf-8");最后一个就是响应乱码的解决了,它不分get,post响应乱码,比较简单粗暴一点,只要是响应乱码就用这个方法.最后来说说重定向和转发的区别吧,很多人在使用它们的第一时间看不出来它们的区别但是它们还是有很大的区别的,1. 重定向是两次请求两次响应/而转发是一次请求一次转发;2. 重定向不能获取参数/而转发可以;3. 重定向可以跳转到任何页面/而转发只在服务器内部来进行转发;  其实要说他们俩的区别的话还是能说很多的,只不过这几个是比较直观的一些区别;
回复 使用道具 举报
常小天
今天学习的内容继续是servlet的知识。通过今天的两个案例来总结今天的学习内容。案例一是文件下载。实现方法有两个,一是超链接形式,这种方式只能在浏览器不支持的文件种类上实现下载。第二个方法就是通过手动编写代码完成下载。操作步骤可总结为设置两个头和一个流,即设置content-type:文件的mime类型,告诉浏览器下载的是什么类型的文件;设置Content-Disposition,告诉浏览器这个文件只能以下载的方式打开;设置Inputstream,文件输入流。这里着重说一下设置流。因为在web项目中我们无法再像以前一样通过相对路径来创建一个输入流,所以需要通过新的方式来创建这个流。这里提供两个方法。一是域对象servletcontext的getResourceAsStream方法,该方法需要的参数是我们要读取的文件的服务器绝对路径,也就是/项目名…形式的一个路径,它可以返回一个输入流。第二个方法是servletcontext的getRealPath方法,向它传入一个服务器绝对路径,它可以返回一个一盘符开始的磁盘绝对路径,再将这个磁盘绝对路径传入输入流构造方法获得一个输入流。以上三个设置都处理好之后,就可以配合response.getOutputStream()获得的response专属的输出流来进行文件的下载。文件下载实际就是从服务器读取再向客户端的磁盘写入的过程。
案例二是注册案例。本案例中我们要将用户填写的注册信息接收,并在数据库中查重,判断可以使用后再添加进数据库,最后跳转页面并给出相应提示。事实上这个案例与昨天的登录案例大同小异。在业务流程上依然是浏览器发送请求,servlet接收数据,封装成对象,调用业务层对象service,service对象再通过调用一个或多个DAO方法完成业务,并向servlet返回数据处理结果,servlet对结果进行判断并作出相应的响应。这些内容就不再多说,这里要说的是与昨天的一些区别的地方。新的内容有两项。一是一个新的域对象request。不同于servletcontext,request的生命周期更短,request在浏览器发送请求后创建,在本次响应后销毁,其作用范围与生命周期相同。第二项内容就是转发和重定向的区别。重定向是访问的第一个servlet响应一个重定向的状态码和一个新的地址给浏览器,浏览器再向这个新的地址发送请求,新的servlet再作出响应,并且这里的新的地址可以是服务器外的地址。所以是两个请求和响应,request域对象就不能在两次响应中传递数据。转发是访问的第一个servlet不响应,将请求转发给第二个servlet,由第二个servlet作出响应,整个过程只有一次请求和响应,并且这里的第二个servlet只能是在本服务器中的servlet,所以可以通过request域对象来传递信息。
回复 使用道具 举报
许剑鸿 webDay15总结

掌握文件下载的方式:?
第一种:超链接下载.直接将文件的路径写到超链接的href中.---前提:文件类型,浏览器不支持.
第二种:手动编写代码的方式完成文件的下载.
    * 设置两个头(setHeader)和一个流:
    * Content-Type                :文件的MIME的类型.
    * Content-Disposition        :以下载的形式打开文件.
    * InputStream                :文件的输入流.


掌握注册-登录案例:
重定向与转发:
【重定向】response.sendRedirect(String path); -- 完成重定向
【转发】request.getRequestDispatcher(String path).forward(request,response);
【区别】1.转发的地址栏不变的.重定向的地址栏发生变化的.
             2.转发是一次请求一次响应,重定向是两次请求两次响应.
             3.request域对象存取的值在转发中是有效的,在重定向无效的.
             4.转发的路径不需要加工程名.重定向的路径需要加工程名.


同时request也是域对象 可以存储数据 在请求发出时创建request对象 响应回来后即销毁 所以它的生命周期:一次请求-响应的事件内
回复 使用道具 举报
万冕

今天主要学习注册页面的构建,就包含了所有三合一


手动编码下载
     设置两个头和一个流:

     Content-Type:文件MIME的类型.
     Content-Dispostion:把类型全改为下载模式
     inputStream: 文件输入流(下载就是下载这个)

解决编码问题,有神奇的解决编码.txt

重定向和转发

重定向
response.sendRedirect(String path);

1.地址栏会发生改变
2.两次请求两次回应
3.域对象的生命周期存取值无效

转发
request.getRequestDispatcher(String path).forward(request,response);

1.地址栏不会发生改变
2.一次请求一次回应
3.可以在域对象内存取值


request的域对象存取值用处可以输出错误信息
回复 使用道具 举报
张裕
                                        Request与Response
Web项目读取文件要用绝对路径

ServletContext对象读取WEB项目下的文件
        getResourceAsStream(String path)        根据提供的路径读取文件返回字节输入流对象
        getRealPath(String path)                  返回路径的绝对路径(磁盘中的全路径)

        获取了ServletContext对象时相当于已经进入了项目路径里 已经不需要在路径名里加项目名了

功能:
        1 读取全局初始化参数
                getInitParameter(String name) 根据属性名获取值
                getInitParameterNames() 获取初始化参数的所有属性名

        2 获取文件的MIME类型
                getMimeType(String file) 获得文件MIME类型

        3 作为域对象来存储数据!
                范围:整个web项目 是全局的对象
                创建:服务器启动的时候,会为每个web项目创建一个单独的ServletContext对象
                销毁:服务器关闭的时候

        4 读取web项目下的文件!
                工具类 类加载器:加载class文件到内存中
                        类名.class.getClassLoader().getResourceAsStream("文件路径"); 返回字节输入流


                                        文件下载
Response概述
        响应对象,从服务器向浏览器输出内容

常用API
        setStatus 设置状态码
        setHeader... 设置响应头 查api
                设置响应体 查api

文件下载的方式
        1 超链接下载
                直接将文件路径写在超链接的href中 前提: 文件类型浏览器不支持  支持的话文件将直接打开
        2 手动编写代码
                设置两个头和一个流
                        Content-Type:文件的MIME的类型
                        Content-Disposition:以下载的形式打开文件
                        InputStream:文件输入流
       
操作步骤
        1 获取文件名
        2 获取文件类型
        3 设置type头
        4 设置Disposition头
        5 获取输入 输出流
                       

中文文件下载乱码解决
        请求乱码解决方式 new String(文件名.getbytes("ISO-8859-1"),"utf-8")
        响应乱码解决 URLEncoder.encode(文件名,编码类型)

response输出响应的方法
        1 getOutputStream()
        2 getWriter()
这两个方法是互斥的(只能使用其中一种流)

输出中文乱码的处理:
        字节流:
                设置浏览器默认打开的编码:
                        resposne.setHeader(“Content-Type”,”text/html;charset=UTF-8”);
                设置中文字节取出的时候编码.
                        “中文”.getBytes(“UTF-8”);
          字符流:
                设置浏览器打开的时候的编码
                        resposne.setHeader(“Content-Type”,”text/html;charset=UTF-8”);
                设置response的缓冲区的编码
                        response.setCharacterEncoding(“UTF-8”);
        简化的写法:response.setContentType(“text/html;charset=UTF-8”);



Request概述
        代表用户的请求
功能
        1 获取客户机的相关信息
        2 获取从页面中提交的参数
        3 作为域对象存储数据

request接收参数中文乱码的解决方法
        POST的解决方案:
                POST的参数是在请求体中,直接到达后台的Servlet.
                数据封装到Servlet中的request中.request有一个缓冲区 编码类型为ISO-8859-1
        设置request的缓冲区的编码:
                request.setCharacterEncoding(“UTF-8”);  一定要在接收参数之前设置编码

        GET的解决方案:
                1.修改tomcat的字符集的编码.(不推荐)
                2.使用URLEncoder和URLDecoder进行编码和解码的操作.
                3.使用String的构造方法:
                                new String()
Request作为域对象存取数据
        使用request对象存取数据:
                setAttribute(String name,String value);
                Object getAttribute(String name);

request的作用范围:
        作用范围就是一次请求的范围.
        创建和销毁:
                创建:客户端向服务器发送了一次请求以后,服务器就会创建一个request的对象!!!
                销毁:当服务器对这次请求作出了响应之后.


重定向和转发的区别
        1.重定向的地址栏会发生变化,转发的地址栏不变.
        2.重定向两次请求两次响应,转发一次请求一次响应.
        3.重定向路径需要加项目名,转发的路径不需要加项目名.
        4.重定向可以跳转到任意网站,转发只能在服务器内部进行转发.

重定向
        request.sendRedirect("路径");
转发
        request.getRequestDispatcher("路径").forwar(request,response);
回复 使用道具 举报
黄进安:

1.      读取WEB工程下的文件
l  使用ServletContext对象,调用getResourceAsStream(Stringpath);根据提供路径读取文件返回一个文件的输入流,在调用properties对象的方法load(获得的输入流) 从输入流中读取属性列表(键和元素对),在调用properties对象的getProperty(String key)用指定的键在此属性列表中搜索属性
l  使用ServletContext对象, getRealPath(Stringpath); 返回一个路径的磁盘绝对路径.在根据路径获得文件输入流,其余同上
2.      ServletContext的作用
l  读取全局初始化参数.
l  获得文件的MIME的类型.
l  作为域对象存取数据.
l  读取web项目下的文件
3.      文件下载案例
在下载页面的HTML文件中,下载的超链接如下
<a href="/webdemo03/ServletDown?filename=hello.jnt">hello.jnt</a>
l  ?之后的红色部分相当于点超链接之后,将红色部分的键值对信息请求到浏览器根据指定的url访问web.xml配置文件中对应的.class对象,此class对象继承了HttpServlet类就可以根据请求方式调用server方法,处理浏览器的请求和给予浏览器的响应
l  在servlet对文件进行下载操作步骤:
1)        获得请求参数: eg. request.getParameter("filename");--->得到值(文件名)
2)        获得文件类型: getServletContext().getMimeType(文件名);--->type
3)        设置Content-Type头: response.setHeader("Content-Type", type);
4)        设置Content-Disposition头: response.setHeader("Content-Disposition","attachment;filename="+filename);
5)        获得文件的输入流:InputStream.(ServletContext的两种方法获取)
6)        获得response的输出流: response.getOutputStream();
7)        利用输入流读取文件,利用响应输出流输出文件
4.      注册页面案例
l  跟昨天的登入案例差不多,只要在添加用户信息之前对用户名进行判断是否已经存在数据库即可
l  存在时:
1)        调用request对象的setAttribute(String name,String value);用来存储对jsp页面中的信息,eg: 用户名已存在
2)        利用转发返回注册页面重新注册(路径相对于服务器而言,可以不写项目名)
request.getRequestDispatcher("/demo02/regist.jsp").forward(req,resp);
用户名可用时:
1)        往数据库插入用户注册的相关信息即可
2)        利用重定向到登入页面
response.sendRedirect("/webdemo03/demo02/enter.jsp");


回复 使用道具 举报
郑志祥


用户注册的操作
1.创建User表(在数据库创建)
2.创建User实体类
3.导入3个包C3P0         mysql  DButils
4.创建userDao表(执行sql语句,增删改查)
5.创建UserServlce(业务层,创建UserDao对象,使用UserDao里面的方法)
6.创建UserSevlet  (1,解决乱码问题 2.接收数据 3.将数据封装到user对象中  4.调用业务-->userDao执行sql语句  -->跳转页面    转发跳转与重定向跳转)
转发跳转
request.getRequestDispatcher(路径).forward(request, response);
重定向跳转
response.sendRedirect("demo1-download/success.html");
7.Servlet的生命周期  (重点)
              生命周期:一个对象从创建到销毁的过程
        Servlet生命周期:从创建到销毁的过程
                创建时间: 客户第一次访问Servlet时创建Servlet实例(只创建一次)
                销毁时间: 当项目从服务器中移除的时候,或者关闭服务器的时候
解决乱码问题
请求乱码解决 :
get:
Stringstr=newString(request.getParameter("name").getBetys("ISO-8859-1"),"UTF-8");

post:    
request.setCharacterEncoding("utf-8");

响应乱码:        response.setContentType("text/html;charset=utf-8");

下载的操作步骤
1.接收数据
2.完成文件的下载
2.1设置Content-Type头
2.2设置Content-Disposition头   
2.3设置文件的InputStream.
回复 使用道具 举报
叶身辉:


域对象:  可以存取数据.一个地方保存,另一个地方取出,  不同:生命周期和作用返回.
       
        ServletContext创建: 服务器启动,服务器会为我们每一个工程创建一个属于他们自己的ServletContext,在该工程的任意位置都可以获取ServletContext中的数据;
        ServletContext销毁, 服务器关闭或者项目从服务器中移除,销毁ServletContext.

        * ServletContext对象:(重要)-被多个用户共享.
    * 记录网站被登录的次数.
    * 在服务器启动的时候ServletContext就会被创建.一个WEB项目创建一个ServletContext对象.
在服务器关闭的时候销毁.域对象-存的数据有作用范围.
    * 功能:
        * 1.获得文件的MIME的类型.
        * 2.获得全局初始化参数.
        * 3.存取数据-作为域对象来使用.
            * setAttribute(String name,String value);
            * getAttribute(String name);
            * removeAttribute(String name);
        * 4.读取WEB项目的文件:
            * getResourceAsStream(String path);
            * getRealPath(String path);
       
       

        request创建:发送请求;
        request销毁:响应结束;
                *访问Servlet会不会创建request   会
                *访问JSP会不会创建request                会
                *访问HTML会不会创建request                会
               
        request:  
                        获得客户机信息:
                        getMethod();                        ---获得请求方式.
                        getQueryString();                ---获得请求路径后的参数.
                        getRemoteAddr();                ---获得客户机的IP地址.
                        getRequestURI();                ---获得请求的路径
                        getRequestURL();                ---获得请求的路径
                        getContextPath();                ---获得工程名
                        获得请求头
                        getDateHeader();
                        getHeader();
                        getHeaderNames();
                        getHeaders();
                        getIntHeader();
                        * request.getHeader(“User-Agent”);
                        * request.getHeader(“Referer”);
                        请求参数:
                        getParameter();   
                        getParameterMap();
                        getParameterNames();
                        getParameterValues();
                        用来作为域对象存取值:
                        removeAttribute();
                        setAttribute();
                        getAttribute();
                       
                       
        Response对象
                响应行:
                        Response设置状态码:
                        setStatus();
               
                响应头:
                * 一个key对应一个value
                setDateHeader();
                setHeader();
                setIntHeader();
                * 一个key对应多个value
                addDateHeader();
                addHeader();
                addIntHeader();
                响应体:
                getOutputStream();
                getWriter();
               
解决中文乱码问题
请求乱码解决 :  get请求:    String str = new String(request.getParameter("name").getBetys("ISO-8859-1"),"UTF-8");
                                post:       request.setCharacterEncoding("utf-8");

响应乱码:        response.setContentType("text/html;charset=utf-8");
                       
                       
文件下载:
                手动编码方式完成文件下载.
                        * 设置两个头和一个流:
                        * Content-Type:文件MIME的类型.
                        * Content-Dispostion:
                        * 文件的输入流:
                       
               
        session
        session       
               
               
域对象中的方法:
        setAttribute();
        getAttribute();
       
【重定向】
response.sendRedirect(String path); -- 完成重定向
【转发】
request.getRequestDispatcher(String path).forward(request,response);
【区别】
1.转发的地址栏不变的.重定向的地址栏发生变化的.
2.转发是一次请求一次响应,重定向是两次请求两次响应.
3.request域对象存取的值在转发中是有效的,在重定向无效的.
4.转发的路径不需要加工程名.重定向的路径需要加工程名.
回复 使用道具 举报
16weisong今天学习了request和response的对象的,这两个都是域对象,今天主要掌握2个案例即可:1.用户注册  2文件下载,只需把这两个案例给敲了即可掌握
回复 使用道具 举报
凌辉:
向页面响应的方法:
getOutputStream();
getWriter();

* 这两个方法是互斥的.
    * 做出响应的时候只能使用其中的一种流响应.
使用request对象存取数据:
setAttribute(String name,String value);
Object getAttribute(String name);

request的作用范围:
作用范围就是一次请求的范围.
*创建和销毁:
     创建:客户端向服务器发送了一次请求以后,服务器就会创建一个request的对象.
     销毁:当服务器对这次请求作出了响应之后.
1.重定向的地址栏会发生变化,转发的地址栏不变.
2.重定向两次请求两次响应,转发一次请求一次响应.
3.重定向路径需要加工程名,转发的路径不需要加工程名.
4.重定向可以跳转到任意网站,转发只能在服务器内部进行转发.
回复 使用道具 举报
康元中
学习两个域对象ServeletContext和request
域对象是一个地方存数据一个地方取数据
1 ServletContext这个域对象 作用范围最大;在工程的任何位置都可以获取ServletContext中的数据
   ServletContext 创建时间:在tomcat第一次启动时创建
   ServletContext 销毁时间:在tomcat关闭或者移除项目时关闭
   在jsp中写代码可以用<%代码%>
2 request 是Servlet中的请求对象
   request 创建的时间:在浏览器发送请求
           结束的时间是在一次请求一次响应完
3 request的重定向和转发
   重定向是:resp.sendRedirect()   转发 request.getRequestDispatcher(路径).forward(request, response)
   两次请求和响应         是一次请求一次响应
   地址栏路径会改变       地址栏路径不发生该变
  路径要加上工程名        路径不用加工程名
request域对象存取的值在转发中是有效的,在重定向无效的.

4 Servlet
        Servlet生命周期:Servlet从创建到销毁的过程.
        何时创建:用户第一次访问Servlet创建Servlet的实例
        何时销毁:当项目从服务器中移除的时候,或者关闭服务器的时候.
用户第一次访问Servlet的时候,服务器会创建一个Servlet的实例,
那么Servlet中init方法就会执行.任何一次请求服务器都会创建一个新的线程访问Servlet中的service的方法
.在service方法内部根据请求的方式的不同调用doXXX的方法.(get请求调用doGet,post请求调用doPost).
当Servlet中服务器中移除掉,或者关闭服务器,Servlet的实例就会被销毁,那么destroy方法就会执
5 **登录注册案例的完成
  6 文件的下载使用三个步骤: 设置两个响应头和一个响应到浏览器页面的文件输出流和输入流对接
   处理响应的中文乱码问题 :他分成了字符流 方式和字节流方式

  
回复 使用道具 举报
郑学馨
案例一:完成文件的下载
步骤:第一:创建下载的servlet类
     第二:获得传输的参数(也就是文件名)
     第三:根据传输的文件名调用contextservlet中的getmimetype()方法获取文件的Mime类型
     第四:设置文件类型:(设置响应头:response.setheader("content-type",mime类型));
     第五:设置文件名与下载文件开关(设置响应头:response.setheader("content-disposition","attachment;filename"+文

件名))
     第六:获得文件的下载的绝对路径:(this.getservletcontext().getrealpath("/文件所在文件夹名/"+文件名))
     第七:利用文件输入流读取文件(new fileinputstream(绝对路径));
     第八:利用response调用其中的getoutputstream()方法下载文件
     第九:文件流的写入方式:int len = 0;
                        byte[] b = new byte[1024];
                        while ((len = fs.read(b)) != -1) {
                        os.write(b, 0, len);
                        }
                        fs.close();

案例二:完成用户注册:
步骤:第一:创建数据库;
     第二:创建表信息
     第三:创建相对应的javabean
     第四:创建servlet类
        4.1:接收客户端传输的注册信息
        4.2:创建javabean对象
        4.3:将客户信息封装到对象中
        4.4:创建service(业务类)
                4.4.1:调用service类中的注册功能
                4.4.2:创建数据库操作类(userdao)
                        4.4.2.1:查询数据库中的数据,是否存在该用户名
                        4.4.2.2:不存在则向数据库中添加该对象
                        4.4.2.3:返回查询结果
     第五:根据返回的值判断是否存在,如果存在用户名,响应"用户名已存在",如果不存在,响应"注册成功"

servlet中的域对象:
1:request:请求域对象;一个用户可以有多个,存储的数据在进行响应后就销毁了,生命周期较短
2:servletcontext:项目域对象,所有用户共用这一个,存储的数据全局都可以调用,只有在服务器停止或者项目移除后销毁
3:session:一个用户只有一个
回复 使用道具 举报
Do1 中级黑马 2018-6-4 22:09:12
40#
本帖最后由 Do1 于 2019-11-23 00:37 编辑


学习了request和response,很不错挺好用
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马